如何使用Datadog监控Nginx Pod存储的SSL证书到期
Datadog TLS集成监控Pod本地证书的实操说明
先搞懂这个检查的实际运行逻辑
很多人刚看文档的时候会被必填的server参数卡住,以为必须要通过网络连通某台主机才能跑监控——实际上TLS检查支持两种完全独立的工作模式,server参数的作用在两种模式下完全不一样:
- 常规网络探活模式:主动向目标主机的TLS端口发起连接,提取对方返回的证书链信息计算到期时间,这时候
server填的是真实要连的主机IP/域名,需要保证网络可达 - 本地文件读取模式:直接读取指定本地路径下的证书文件内容,根本不发起任何网络连接,这时候
server参数只是一个用于标识证书所属域名的标签,不需要填真实可连通的地址
你的场景下的参数选择逻辑
完全不需要纠结填localhost还是对照nginx.conf的server_name逐个做网络探活:
- 你要监控的是nginx Pod本地volume里存的静态证书,根本没必要走网络连接的流程,直接用本地文件读取模式效率最高
server参数就填对应证书绑定的域名就行,纯粹用来做后续在Datadog控制台筛选指标的标签,不需要保证这个地址能从Agent Pod连通- 配置时直接对应每一个实际存储的证书文件条目就行,不需要遍历nginx里的所有路由规则
落地前的前置准备
因为你的证书存在nginx Pod的volume里,Datadog Agent默认运行在独立的Pod里,没有权限直接读其他Pod的存储,所以需要先把存证书的那个共享存储(比如PVC、hostPath)同步挂载到Datadog Agent的容器内,保证Agent能读到证书文件的实际路径。
可直接套用的配置示例
这个配置是存在Datadog Agent的configmap里,挂载到容器内/etc/datadog/conf.d/tls.d/conf.yaml路径下生效:
init_config: instances: # 单张证书的监控条目,有多少张需要监控的证书就复制多少段 - server: "api.your-cluster-service.com" # 填Agent容器内能读到的证书实际路径 local_cert_path: /certs-storage/api-service-fullchain.crt # 告警阈值设置:距离到期30天发警告,7天发严重告警 days_warning: 30 days_critical: 7 - server: "portal.your-cluster-service.com" local_cert_path: /certs-storage/portal-fullchain.crt days_warning: 30 days_critical: 7
常见踩坑提醒
- 只要在配置里指定了
local_cert_path,且没有配置tls_port、uri这类网络探活参数,检查就会直接走本地文件读取逻辑,不会发起任何出站请求 - 不要为了“满足必填参数要求”随便填localhost,这样后续在Datadog里会分不清哪个指标对应哪个域名,反而增加排障成本
- 配置写完可以在Agent Pod里手动跑一次
datadog-agent tls check验证,确认能正常读到证书的到期时间再长期运行
内容的提问来源于stack exchange,提问作者Ondřej
相关产品推荐
相关产品推荐

