InfraGuard

读懂概览首页

在一个屏幕上读取可用性与安全综合评分、KPI 卡片、检测环形图以及全宽实时服务器条带的融合主控台。

概览 —— 这个画面做什么

概览 是登录后的第一个画面(/)。它以 单一视图 贯穿 可用性 与 安全 —— 上部区域显示综合健康仪表、KPI 卡片与检测环形图,下部区域显示服务器集群的 负载 / 内存 / 网络 / 存储 时序条带。

主要特点:

所有数值都是由运行在 Laravel 之外的采集器写入数据库的 真实数据。如果旧版数据库不可达或为空,控制器会优雅地回退到结构完全相同的 模拟数据(演示);此时 source 为 mockup、rev 为 0,因此前端会跳过重新渲染。

何时使用

布局

顶部主视觉

标题与标语(“即时响应 · 自动就绪 · 随时可恢复”),右侧则是采集时间戳(stamp)与主机数量、LIVE/PAUSED 开关 以及 全屏 按钮。

健康评分(左侧)

两个环形仪表(可用性、安全)以及下方的 双列证据面板:

列 6 个符号(悬停提示) 评分来源
可用性依据 存活性 · 负载 · 内存 · 磁盘 · RAID · 备份 来自 aggregate() 的 avail_parts(计入持续时间的综合值 0–100)
安全依据 IDS · AI · Web · 防火墙 · 信誉 · TLS PostureService(将 24 小时未处置残留占比归一化为健康评分)

每个符号的颜色由 metric_cls 决定:≥90 为 good · ≥70 为 warn · 更低为 crit · 无数据显示 —(na)。

KPI 卡片(中央 3×2 + 2 张条件卡片)

卡片 数值 副行
服务器 在线/总数 离线数量或“全部在线”
负载峰值 可见集合中的最大负载 主机 · “N 分钟前”
内存峰值 可见集合中的最大内存 % 主机 · “N 分钟前”
网络峰值 最大包数(取入/出中较大者) 主机 · “N 分钟前”
威胁 未处理(= Kitsune 封锁数) 今日封锁
备份 14 天成功率 % 24 小时执行次数 · 上次耗时 · 主要类型
Web 服务(条件) up/总数 最慢的主机 · ms
数据库(条件) up/总数 最繁忙的数据库 · 24 小时慢查询 · 排队

负载/内存/网络的 峰值由前端按“当前可见服务器(current_servers)范围内各序列的最大值”计算。 也就是说 改变分屏/页码,会改变峰值卡片所考察的服务器集合。 “N 分钟前”标签根据首次观测到该峰值的 seq 位置(times[idx])推导得出。

服务性能面板(右侧)

将一个 Web 与一个数据库显示为紧凑仪表 —— 是单个服务而非汇总,因此某个失控的服务不会被平均值掩盖。使用下拉菜单(“选择其他服务”)更换对象:

检测环形图(右侧)

按四个类别(IDS/AI/Web/扫描)显示 24 小时的检测结果。ECharts 环形图 + HTML 图例(名称 · 简略计数 · 占比条)。

底部 —— 全宽服务器条带

在 Server stats 工具栏(RAID 芯片 · “可用空间 <1G” 芯片 · 高度滑块 · 范围标签 · 时间范围切换 · 分屏按钮)下方有四条条带:

使用方法

  1. 先看仪表 —— 读取两个评分的颜色。若偏低,将鼠标悬停到下方 6 个证据符号 中的红色(crit)/ 琥珀色(warn)单元格上,查看是哪个维度被扣分。
  2. KPI 卡片 —— 扫视异常值(离线服务器、威胁、备份成功率)。用峰值卡片的“N 分钟前”确定事件时刻。
  3. 切换时间窗口 —— 右下角的 6h · 24h · 3d 按钮会改变条带的时间窗口。选择会保存到 localStorage(infr:range:overview),并通过 range 参数向服务器重新查询。KPI 卡片与健康仪表始终固定为 24 小时的概念(重新取窗口的只有条带)。
  4. 分屏 —— All · 2 · 3 按钮会把服务器集群分成若干页(◀▶)。便于铺展到多台显示器。
  5. 高度与刻度 —— 滑块设置条带高度(80–360px),各条带的 Lin/Log 设置 y 轴刻度(对尖峰频繁的主机很有帮助)。
  6. 实时 / 全屏 —— 主视觉区的 LIVE 开关用于开启/关闭轮询;full screen 会隐藏顶部导航栏,进入监控墙模式。

范围 → 采样点数

底部条带的时间窗口会依据 server_status 的采集间隔(约 5 分钟)换算为 seq 采样点数。

range seq 采样点数
6h 72
24h 288(默认)
3d 864

实时更新(轮询)的行为

every 30s  ──▶  GET /overview/rev   (cheap latest seq)
                   │  rev changed?
                   ├─ no  → skip (0 bandwidth)
                   └─ yes → GET /overview/live?range=<window>  → swap data + re-render charts

数据来源

全部为 只读。应用原样读取旧版资源表。

维度 表 / 服务 连接 用途
服务器集群 / 序列 server_status(loadavg·free·df-*·traffic-out) legacy(MAIN) 负载/内存/磁盘/网络条带、存活性
RAID storage_status(status_summary) legacy Optimal/Degraded/Failed 证据
备份 backup_history legacy 14 天成功率 · 上次 · 类型
IDS suricata_alert_ct legacy_glory 检测环形图 · 安全依据(sev 1·2)
AI 异常 kitsune_detail_log(is_blocked) legacy_glory 检测 · 威胁 · 安全依据
Web 攻击 nginx_meta_ct(is_suspicious) legacy_glory 检测 · 可疑请求比例
信誉 / 封锁 blacklist_info legacy_glory 今日封锁 · 新增封锁压力
TLS 卫生 suricata_tls_ct(version) legacy_glory 弱 TLS(<1.2)比例
Web 服务性能 WebMetricService::dashboard()(infr_web_metric) central Web 的 KPI · 性能面板
数据库性能 DbCollectorService::latest() · infr_db_metric · infr_collector(access=database) central 数据库的 KPI · 性能面板
防火墙暴露面 FirewallService::dashboard()(infr_instance_firewall) central 安全依据 fw

综合评分的计算公式

可用性 = 有数据的各维度的加权平均(权重会重新归一化)。每个维度都会考察整个显示窗口,并按“越界持续了多久(时长)、有多严重(峰值)”来扣分。

维度 权重 扣分依据
存活性 0.30 首次上报之后无响应周期所占的比例
负载 0.15 平均负载 ≥ 8 的越界(≥16 视为完全过载)
内存 0.15 使用率 > 99%(100% 视为完全吃紧)
磁盘 0.15 根分区可用空间 < 1G(仅统计已测量的分区,0G 视为完全处于风险中)
RAID 0.15 处于 Degraded/Failed 的节点计 0 分
备份 0.10 14 天成功率

安全 = 6 项证据指标(仅计入存在的指标)的加权平均。每项都会把 24 小时的 glory 测量值归一化为健康评分(0–100)—— 数量/比例越大,扣分越多(最大扣分 45 → 下限 55)。只有当所有指标都不可用时,才会回退到 detections() 的启发式标量值。

指标 权重 来源(24 小时) 扣满分的临界值
ids 0.22 高严重度(sev 1·2)IDS 告警数量 200
ai 0.22 Kitsune 封锁数量 500
web 0.20 nginx 可疑请求 比例 % 8%
rep 0.14 今日新增被封锁 IP 数量 400
tls 0.12 弱 TLS(<1.2)比例 % 5%
fw 0.10 公网 IP 的关键端口 ×2 + 关键端口 + 未纳管暴露面 200

缓存 TTL

对象 TTL 键
概览真实数据(build) 30s infr:overview:data:v1:{points}
服务性能面板(web/db) 15s infr:ov:perf
安全依据(PostureService) 300s infr:sec:posture:v1:<range>

访问权限

故障排查与常见问题

Q. 仪表/卡片显示的像是演示数值。 这是旧版数据库(legacy/legacy_glory)连接失败或没有数据时触发的模拟数据回退。如果载荷中的 source 为 mockup、rev 为 0,说明真实数据库不可用。请检查数据库连通性与采集器的写入情况(管理 ▸ 采集器)。

Q. 某个证据符号显示 —。 表示该维度没有数据(会被排除在加权之外)。例如防火墙 CMDB(infr_instance_firewall)为空时,fw 会显示 — —— 需要的是防火墙资产,而不是旧的 firewall_status。当不存在匹配的 storage_status.host 时,RAID 会被排除。

Q. 数据没有更新。 请检查:(1) 主视觉区的开关是否显示为 PAUSED;(2) 标签页是否处于后台(隐藏期间轮询会暂停)。采集器在 Laravel 之外大约以 5 分钟间隔 写入,因此即使以 30 秒轮询,实际数值也可能滞后数分钟。如果 rev 没有变化,就不会拉取沉重的载荷。

Q. 负载峰值对应的服务器在不同视图下不一样。 峰值是针对 当前视图(分屏/页码)的服务器集合 计算的。若要面向全部服务器做判断,请把分屏设为 All。

Q. 网络入流量始终为 0。 server_status 中没有按别名区分的入向数据源,因此 net_in 用 0 填充,只测量 traffic-out(包数)。详细带宽请参见 流量(网络 I/O)。

Q. 改变范围后 KPI/仪表没有变化。 这是预期行为。range(6h/24h/3d)仅适用于底部条带,KPI 卡片与健康仪表是固定的 24 小时概念。

相关内容

개요 — 헬스 스코어·근거 심볼·서버 통계
개요 — 헬스 스코어·근거 심볼·서버 통계