2. 监控策略总体架构:采集层、分析层、告警层、展示层

做证书监控,最怕什么?

最怕你搭了一套系统,结果该告警的时候没响,不该告警的时候刷屏。或者数据全堆在数据库里,没人看得懂。

我早年吃过这个亏。当时给一家金融客户做证书巡检,脚本写了一大堆,每天跑完往日志里一丢。结果有一天生产环境的证书过期了,业务中断两小时。复盘时发现——日志里其实三天前就记录了告警,但没人看。

从那以后,我养成了一个习惯:监控必须分层。每一层干每一层的事,层与层之间解耦。今天我们就聊聊这个四层架构——采集层、分析层、告警层、展示层。

核心原则:采集层只负责拿数据,分析层只负责算状态,告警层只负责通知,展示层只负责呈现。谁也别越界。

设备证书监控四层架构 采集层 证书扫描 · 日志采集 · Agent 上报 · API 拉取 分析层 过期计算 · 链校验 · 算法强度 · 合规检查 告警层 分级告警 · 通知路由 · 升级策略 · 抑制去重 展示层 仪表盘 · 报表 · 趋势图 · 证书拓扑 数据源 CA / 负载均衡 / 容器

2.1 采集层:拿数据是第一要务

采集层是整个监控系统的地基。地基不稳,上面全是空中楼阁。

我个人习惯把采集方式分成三类:

  • 主动扫描——定时去连目标设备的端口(比如 443、8443),拉取证书链。适合网络可达的设备。
  • Agent 上报——在设备上装个小代理,定期把证书信息推送到中心。适合内网环境或防火墙后面的设备。
  • API 拉取——从 CA 系统、Kubernetes、负载均衡器的管理接口获取证书元数据。适合云原生场景。

我的经验:别只依赖一种采集方式。我曾经遇到过一个客户,所有证书都靠主动扫描,结果某个子网防火墙策略变更,扫描全挂了,三天没发现。后来我建议他们加上 Agent 上报做兜底,双通道采集,再没出过类似问题。

采集层要拿哪些数据?我列个清单:

数据项 说明 采集频率建议
证书序列号 唯一标识,用于去重 每次采集
颁发者 / 使用者 区分 CA 证书和终端证书 每次采集
有效期(notBefore / notAfter) 过期计算的核心字段 每次采集
签名算法 用于合规检查(如 SHA-1 预警) 首次 + 变更时
密钥长度 RSA 2048+ / ECC 256+ 等 首次 + 变更时
OCSP / CRL 分发点 吊销状态检查用 每次采集

2.2 分析层:数据变信息

采集层拿到的只是原始数据。分析层要做的,是把这些数据变成有意义的状态。

说白了,就是回答几个问题:

  • 这个证书还有多少天过期?
  • 证书链是否完整?有没有中间证书缺失?
  • 签名算法是不是已经过时了?比如还在用 SHA-1?
  • 证书有没有被吊销?
  • 域名和 SAN 跟实际使用场景匹配吗?

分析层我建议做成规则引擎的形式。每条规则只做一件事,规则之间不耦合。比如:

规则示例:
- 规则1:如果 notAfter - now < 30 天 → 状态 = "即将过期"
- 规则2:如果签名算法 == "SHA1WithRSA" → 状态 = "弱算法"
- 规则3:如果证书链深度 > 3 且缺少中间证书 → 状态 = "链不完整"

注意:分析层不要做告警。分析层只负责输出状态,比如 "即将过期"、"已吊销"、"合规"。至于这个状态要不要通知人,那是告警层的事。我曾经见过有人把告警逻辑写在分析脚本里,结果想改告警阈值还得改代码,非常痛苦。

2.3 告警层:该响的时候必须响

告警层是监控系统的"嘴"。嘴要会说话,但不能乱说话。

我总结了一个告警分级模型,你可以直接拿去用:

级别 触发条件 通知方式 响应要求
P0 紧急 证书已过期 / 已被吊销 电话 + 短信 + 即时消息 15 分钟内处理
P1 严重 距离过期 < 7 天 / 链不完整 短信 + 即时消息 1 小时内处理
P2 警告 距离过期 7-30 天 / 弱算法 即时消息 + 邮件 24 小时内处理
P3 提示 距离过期 30-60 天 / 合规检查项 邮件 / 日报 规划排期

避坑指南:我曾经遇到过一个告警风暴的问题。某个集群里 200 个节点共用一张证书,证书过期前 7 天,告警系统给每个人发了 200 条短信。后来我加了告警聚合——同一张证书的告警,不管关联了多少设备,只发一条,附带受影响设备列表。效果立竿见影。

告警层还要考虑升级策略。比如 P2 告警如果 24 小时内没人确认,自动升级成 P1,通知到更高级别的负责人。这个机制在节假日特别有用。

2.4 展示层:让数据会说话

展示层是给运维和运维领导看的。两者需求不一样。

  • 运维想看什么?当前所有证书的状态列表、即将过期的证书、异常证书的详情。
  • 领导想看什么?整体健康度、过期趋势、合规率、这个月比上个月好了还是差了。

所以我建议展示层至少包含这几个视图:

  1. 全局仪表盘——证书总数、健康度百分比、各状态分布(饼图或环形图)。
  2. 过期日历——按时间轴展示未来 90 天内过期的证书,一眼看出哪天是"高危日"。
  3. 证书详情页——点开一张证书,能看到完整的证书链、SAN 列表、最近变更记录。
  4. 合规报表——按部门或业务线统计合规率,支持导出 PDF 或 Excel。

我的建议:展示层不要做得太复杂。我见过有人把证书监控仪表盘做成了"数据大屏",各种动效、3D 旋转,结果真正有用的信息反而被淹没了。干净、清晰、一眼能看到问题——这才是好的展示层。

嗯,四层架构讲完了。你可能会问:这四层一定要分开部署吗?不一定。小规模环境可以合在一起,但逻辑上一定要分清楚。等规模大了,你会发现分层带来的好处——每一层都可以独立扩展、独立升级、独立排障。