"use client" import { useState } from "react" import { Card, CardContent } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" import { Input } from "@/components/ui/input" import { Bell, ArrowLeft, Plus, Search, Filter, AlertTriangle, CheckCircle2, Clock, Settings, Trash2, XCircle, } from "lucide-react" import Link from "next/link" import { CreateAlertRuleDialog } from "@/components/dialogs/create-alert-rule-dialog" import { AlertRuleSettingsDialog } from "@/components/dialogs/alert-rule-settings-dialog" const alertRules = [ { id: 1, name: "CPU使用率告警", condition: "CPU > 80%", duration: "5分钟", severity: "warning", status: "enabled", triggers: 3, }, { id: 2, name: "内存使用率告警", condition: "Memory > 85%", duration: "5分钟", severity: "warning", status: "enabled", triggers: 1, }, { id: 3, name: "API延迟告警", condition: "P99 > 200ms", duration: "3分钟", severity: "critical", status: "enabled", triggers: 5, }, { id: 4, name: "磁盘空间告警", condition: "Disk > 90%", duration: "10分钟", severity: "critical", status: "enabled", triggers: 0, }, { id: 5, name: "服务宕机告警", condition: "Service Down", duration: "1分钟", severity: "critical", status: "enabled", triggers: 0, }, ] const alertHistory = [ { id: 1, rule: "CPU使用率告警", message: "node-04 CPU使用率达到 85%", severity: "warning", status: "active", time: "10分钟前", }, { id: 2, rule: "磁盘空间告警", message: "磁盘使用率达到 80%,接近阈值", severity: "warning", status: "active", time: "2小时前", }, { id: 3, rule: "API延迟告警", message: "API网关P99延迟达到 250ms", severity: "critical", status: "resolved", time: "1小时前", resolvedAt: "45分钟前", }, { id: 4, rule: "内存使用率告警", message: "node-02 内存使用率达到 88%", severity: "warning", status: "resolved", time: "3小时前", resolvedAt: "2小时前", }, { id: 5, rule: "服务宕机告警", message: "Redis服务短暂不可用", severity: "critical", status: "resolved", time: "1天前", resolvedAt: "1天前", }, ] export default function AlertsPage() { const [searchTerm, setSearchTerm] = useState("") const [activeTab, setActiveTab] = useState<"rules" | "history">("history") const [showCreateDialog, setShowCreateDialog] = useState(false) const [showSettingsDialog, setShowSettingsDialog] = useState(false) const [selectedRule, setSelectedRule] = useState<(typeof alertRules)[0] | null>(null) const activeAlerts = alertHistory.filter((a) => a.status === "active") const handleRuleSettings = (rule: (typeof alertRules)[0]) => { setSelectedRule(rule) setShowSettingsDialog(true) } return (
{/* 页面标题 */}

告警中心

告警规则配置与历史记录

{/* 告警统计 */}

活跃告警

{activeAlerts.length}

今日已解决

8

告警规则数

{alertRules.length}

平均响应时间

15分钟

{/* 标签页切换 */}
{activeTab === "history" ? ( <> {/* 筛选工具栏 */}
setSearchTerm(e.target.value)} className="pl-9 bg-white/70" />
{/* 告警历史列表 */}
{alertHistory.map((alert) => (
{alert.status === "active" ? (
) : (
)}

{alert.rule}

{alert.severity === "critical" ? "严重" : "警告"} {alert.status === "active" ? ( 活跃 ) : ( 已解决 )}

{alert.message}

{alert.time}

{alert.resolvedAt &&

解决于 {alert.resolvedAt}

}
{alert.status === "active" && ( )}
))}
) : ( /* 告警规则列表 */ {alertRules.map((rule) => ( ))}
规则名称 触发条件 持续时间 严重程度 触发次数 状态 操作
{rule.name} {rule.condition} {rule.duration} {rule.severity === "critical" ? "严重" : "警告"} {rule.triggers} 启用
)}
) }