概述
证书过期是少数可以提前知道日期的故障。记录 probe_ssl_earliest_cert_expiry 的探针把到期日变成指标,一条简单表达式就能在用户察觉前告警。证书链校验同样重要:证书本身有效但缺少中间证书时,握手会直接失败,而不是给出到期预警。
步骤
- 定义严格校验的 HTTPS 探针模块,禁止跳过证书验证:
modules:
https_2xx:
prober: http
timeout: 5s
http:
preferred_ip_protocol: ip4
tls_config:
insecure_skip_verify: false
- 在 Prometheus 中通过 relabel 把目标地址传给 blackbox_exporter,并探测公网主机名而非源站 IP,以便覆盖 DNS、SNI 和完整证书链。
- 配置两条告警:剩余 21 天为 warning,探测连续失败 5 分钟为 critical:
probe_ssl_earliest_cert_expiry - time() < 21 * 86400
probe_success{job="blackbox_tls"} == 0
- 用一个自签名或缺少中间证书的端点验证探针会返回
probe_success 0。
验证
预期正常端点返回 probe_success 1 和未来的到期时间戳,自签名端点返回 0 并附带链错误信息。到期告警应在证书剩余不足 21 天时触发,并带上主机名标签和续期 runbook 链接。
注意事项
- 只监控清单中的端点,内部服务需要单独的目标列表。
- 到期监控无法发现证书吊销或私钥泄露,需要配合其他控制。
- 续期自动化本身也要监控,到期告警是兜底而不是主要信号。
- 每季度复核目标清单,新增主机名未加探针就等于没有监控。