You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Zabbix中追踪日期?证书到期监控方案求助

监控证书到期日期的可行方案

核心思路:统一用Epoch时间做对比

Zabbix的now()返回的是Unix时间戳(Epoch),所以把证书到期时间和当前时间都转成Epoch后做差值计算,是最能避免日期格式解析坑的方案。

1. 提取证书到期时间为Epoch值(推荐)

  • 写Shell脚本提取证书到期时间并转成时间戳,以PEM格式证书为例:
#!/bin/bash
CERT_PATH=$1
openssl x509 -in "$CERT_PATH" -noout -enddate | cut -d= -f2 | date +%s
  • 在Zabbix Agent的zabbix_agentd.conf中添加自定义参数:
UserParameter=cert.expiry[*],/path/to/your/script.sh $1
  • 创建Item:类型选「Zabbix agent(主动式)」或「被动式」,键值填cert.expiry[/path/to/app_cert.pem],Item会直接返回证书到期的Epoch时间。

2. 编写Trigger告警表达式

直接通过到期时间与当前时间的差值判断,比如提前30天触发告警:

{your_host:cert.expiry[/path/to/app_cert.pem].last()} - now() < 86400*30

注:86400是一天的秒数,30代表30天,可根据需求调整阈值。

3. 若已存储日期字符串格式的Item

如果Item存的是2024-12-31 23:59:59这类日期字符串,用strptime()转成Epoch再对比:

strptime({your_host:cert.expiry.date.last()}, "%Y-%m-%d %H:%M:%S") - now() < 86400*30

注意:格式串必须和Item中的日期格式完全匹配,比如日期是Dec 31 23:59:59 2024 GMT,格式串要写成"%b %d %H:%M:%S %Y %Z",否则会解析失败。

4. 批量监控证书(低级别发现LLD)

如果要监控大量证书,用Zabbix的低级别发现自动生成Item:

  • 写脚本遍历证书目录,输出JSON格式结果:
#!/bin/bash
CERT_DIR="/path/to/certs"
echo '{"data":['
FIRST=1
for cert in "$CERT_DIR"/*.pem; do
  if [ $FIRST -ne 1 ]; then echo ','; fi
  FIRST=0
  echo -n '{"{#CERTNAME}":"'$(basename "$cert")'","{#CERTPATH}":"'$cert'"}'
done
echo ']}'
  • 创建LLD规则,键值用自定义的UserParameter(比如cert.discovery),再基于LLD宏批量创建到期时间Item,关联通用Trigger模板实现批量监控。

内容的提问来源于stack exchange,提问作者Alex1__1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 03:17:13