"use client" import { useState, useEffect } from "react" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" import { Progress } from "@/components/ui/progress" import { Activity, Server, Cpu, HardDrive, Wifi, AlertTriangle, CheckCircle2, Bell, RefreshCw, ArrowRight, TrendingUp, } from "lucide-react" import Link from "next/link" import { XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, AreaChart, Area } from "recharts" // 模拟系统资源数据 const systemMetrics = [ { time: "00:00", cpu: 45, memory: 62, disk: 78, network: 120 }, { time: "04:00", cpu: 32, memory: 58, disk: 78, network: 80 }, { time: "08:00", cpu: 58, memory: 65, disk: 79, network: 180 }, { time: "12:00", cpu: 72, memory: 71, disk: 79, network: 320 }, { time: "16:00", cpu: 68, memory: 69, disk: 80, network: 280 }, { time: "20:00", cpu: 55, memory: 64, disk: 80, network: 200 }, ] const recentAlerts = [ { id: 1, type: "warning", message: "数据同步任务延迟超过阈值", time: "10分钟前", status: "active" }, { id: 2, type: "info", message: "模型训练任务已完成", time: "30分钟前", status: "resolved" }, { id: 3, type: "error", message: "API网关响应超时", time: "1小时前", status: "resolved" }, { id: 4, type: "warning", message: "磁盘使用率超过80%", time: "2小时前", status: "active" }, ] const serviceStatus = [ { name: "数据接入服务", status: "healthy", uptime: "99.99%", latency: "12ms" }, { name: "标签计算引擎", status: "healthy", uptime: "99.95%", latency: "45ms" }, { name: "AI推理服务", status: "healthy", uptime: "99.90%", latency: "120ms" }, { name: "API网关", status: "degraded", uptime: "99.85%", latency: "85ms" }, { name: "数据库集群", status: "healthy", uptime: "99.99%", latency: "8ms" }, { name: "缓存服务", status: "healthy", uptime: "99.99%", latency: "2ms" }, ] // 服务状态接口 interface ServiceStatus { name: string status: 'healthy' | 'degraded' | 'unhealthy' latency: string message: string } // 告警接口 interface Alert { id: string type: 'info' | 'warning' | 'error' message: string time: string status: 'active' | 'resolved' } export default function MonitoringPage() { const [cpuUsage, setCpuUsage] = useState(65) const [memoryUsage, setMemoryUsage] = useState(68) const [diskUsage, setDiskUsage] = useState(80) const [networkIO, setNetworkIO] = useState(256) const [loading, setLoading] = useState(true) const [services, setServices] = useState(serviceStatus.map(s => ({ ...s, status: s.status as 'healthy' | 'degraded' | 'unhealthy', message: '' }))) const [alerts, setAlerts] = useState(recentAlerts.map(a => ({ ...a, type: a.type as 'info' | 'warning' | 'error', status: a.status as 'active' | 'resolved' }))) const [dbInfo, setDbInfo] = useState(null) // 获取真实监控数据 const fetchMonitoringData = async () => { try { const res = await fetch('/api/monitoring') const data = await res.json() if (data.success) { // 更新服务状态 if (data.health?.services) { setServices(data.health.services.map((s: any) => ({ name: s.name, status: s.status, latency: s.latency, uptime: s.status === 'healthy' ? '99.99%' : '99.5%', message: s.message }))) } // 更新告警 if (data.alerts?.alerts) { setAlerts(data.alerts.alerts) } // 更新数据库信息 if (data.database?.server) { setDbInfo(data.database) // 根据MongoDB内存使用更新内存指标 const memMB = data.database.server.memory?.resident || 0 setMemoryUsage(Math.min(90, (memMB / 8000) * 100)) } } } catch (e) { console.error('获取监控数据失败:', e) } finally { setLoading(false) } } useEffect(() => { fetchMonitoringData() // 模拟CPU和网络波动 const interval = setInterval(() => { setCpuUsage((prev) => Math.min(95, Math.max(30, prev + (Math.random() - 0.5) * 10))) setNetworkIO((prev) => Math.min(500, Math.max(100, prev + (Math.random() - 0.5) * 50))) }, 3000) // 每30秒刷新真实数据 const refreshInterval = setInterval(fetchMonitoringData, 30000) return () => { clearInterval(interval) clearInterval(refreshInterval) } }, []) return (
{/* 页面标题 */}

系统监控与运营看板

实时监控系统健康状态、服务运行和告警信息

{/* 系统资源概览 */}
CPU使用率
80 ? "text-red-600" : cpuUsage > 60 ? "text-amber-600" : "text-emerald-600"}`} > {cpuUsage.toFixed(1)}%

8核 / 16线程

内存使用
85 ? "text-red-600" : memoryUsage > 70 ? "text-amber-600" : "text-emerald-600"}`} > {memoryUsage.toFixed(1)}%

54.4GB / 80GB

磁盘使用
85 ? "text-red-600" : "text-amber-600"}`}> {diskUsage}%

1.6TB / 2TB

网络IO
{networkIO} MB/s

入站: 180MB/s | 出站: 76MB/s

{/* 功能入口 */}

系统健康度

服务状态与性能指标

告警中心

告警规则与通知管理

2

业务指标

核心业务KPI监控

{/* 系统资源趋势 */} 系统资源趋势 (24小时)
CPU
内存
{/* 最近告警 */}
最近告警
{recentAlerts.map((alert) => (
{alert.type === "error" ? ( ) : alert.type === "warning" ? ( ) : ( )}

{alert.message}

{alert.time} {alert.status === "active" ? ( 待处理 ) : ( 已解决 )}
))}
{/* 服务状态 */} 服务状态
{serviceStatus.map((service, i) => (

{service.name}

可用性: {service.uptime} | 延迟: {service.latency}

{service.status === "healthy" ? "正常" : service.status === "degraded" ? "降级" : "故障"}
))}
) }