// Agent 告警常量与辅助函数 // Logan.Li import { Badge } from '@/components/ui/badge'; import { AlertTriangle, Cpu, MemoryStick, HardDrive, WifiOff, Network, Activity, Gauge, Timer, } from 'lucide-react'; import type { JsonData } from '@/types/common'; import i18n from '@/i18n'; // 主机监控指标(与后端 alert_engine 对齐)// Logan.Li export const METRIC_OPTIONS = [ { value: 'cpu', label: i18n.t('kubernetes.cluster.cpuUsage'), icon: Cpu }, { value: 'cpu_iowait', label: i18n.t('入网带宽'), icon: Cpu }, { value: 'mem', label: i18n.t('kubernetes.cluster.memoryUsage'), icon: MemoryStick }, { value: 'mem_available', label: i18n.t('可用内存(GB)'), icon: MemoryStick }, { value: 'swap', label: i18n.t('Swap 使用率'), icon: MemoryStick }, { value: 'load1', label: i18n.t('1分钟负载'), icon: Gauge }, { value: 'disk', label: i18n.t('monitor.hostDisk'), icon: HardDrive }, { value: 'disk_inode', label: i18n.t('Inode 使用率'), icon: HardDrive }, { value: 'disk_io_util', label: i18n.t('磁盘 IO 利用率'), icon: HardDrive }, { value: 'tcp_established', label: i18n.t('TCP 已建立'), icon: Network }, { value: 'tcp_time_wait', label: 'TCP TIME_WAIT', icon: Network }, { value: 'tcp_close_wait', label: 'TCP CLOSE_WAIT', icon: Network }, { value: 'net_rx_bps', label: i18n.t('monitor.hostNetIn'), icon: Network }, { value: 'net_tx_bps', label: i18n.t('monitor.hostNetOut'), icon: Network }, { value: 'net_rx_errors', label: i18n.t('入网错误'), icon: Network }, { value: 'fd', label: i18n.t('monitor.hostFileDescriptor'), icon: Activity }, { value: 'offline', label: i18n.t('主机离线'), icon: WifiOff }, { value: 'port_down', label: i18n.t('端口不通'), icon: Network }, { value: 'health_probe', label: i18n.t('kubernetes.container.probes'), icon: Timer }, ]; export const OPERATOR_OPTIONS = [ { value: '>', label: i18n.t('monitor.monitorRule.opGt') }, { value: '<', label: i18n.t('monitor.monitorRule.opLt') }, { value: '>=', label: i18n.t('monitor.monitorRule.opGte') }, { value: '<=', label: i18n.t('monitor.monitorRule.opLte') }, { value: '==', label: i18n.t('monitor.monitorRule.opEq') }, ]; export const SEVERITY_OPTIONS = [ { value: 'critical', label: i18n.t('monitor.alertHelper.sevCritical'), color: 'bg-red-500/15 dg-text-red border-red-500/30' }, { value: 'warning', label: i18n.t('kubernetes.event.warning'), color: 'bg-amber-500/15 dg-text-yellow border-amber-500/30' }, { value: 'info', label: i18n.t('monitor.alertEvents.severity.info'), color: 'bg-blue-500/15 dg-text-blue border-blue-500/30' }, ]; export function getMetricLabel(metric: string) { return METRIC_OPTIONS.find((m) => m.value === metric)?.label || metric; } export function asList(data: JsonData): unknown[] { if (!data) return []; if (Array.isArray(data)) return data; if (Array.isArray(data.list)) return data.list; if (Array.isArray(data.items)) return data.items; if (Array.isArray(data.data)) return data.data; return []; } export function severityBadge(sev: string) { const opt = SEVERITY_OPTIONS.find((s) => s.value === sev) || SEVERITY_OPTIONS[1]; return ( {opt.label} ); }