"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分钟
{alert.message}
{alert.time}
{alert.resolvedAt &&解决于 {alert.resolvedAt}
}| 规则名称 | 触发条件 | 持续时间 | 严重程度 | 触发次数 | 状态 | 操作 |
|---|---|---|---|---|---|---|
| {rule.name} |
{rule.condition}
|
{rule.duration} |
|
{rule.triggers} |
|
|