使用 Zabbix 自动发现与 Python 脚本为多个域名、证书配置到期检查

使用 Zabbix 自动发现与 Python 脚本为多个域名、证书配置到期检查,第1张

使用 Zabbix 自动发现与 Python 脚本为多个域名、证书配置到期检查 一、背景&需求
  • 在业务中,常常遇到域名证书到期续签的问题,证书续签后,需要为使用到证书的站点替换新证书,由于站点过多或者疏漏的原因,可能会遇到证书过期了而忘记替换的情况,因此使用 Zabbix 对域名和证书文件进行监控

  • 需求:

    • 到期检查配置多个触发器:60天后到期、30天后到期、10天后到期、明日到期、已过期、时间获取失败
    • 定时检查,而非每分钟检查

    对于第一个需求,一个域名或者证书文件的检查,直接配置监控项和证书文件即可,但是实际上往往有多个证书文件和数不完的域名,这个时候就需要借助 Zabbix 自动发现

    对于第二个需求,在配置监控项目时,将更新间隔设为0,并采用调度间隔指定时间即可

二、Python 脚本获取域名、证书时间

要对域名、证书都做监控,监控证书的目的主要是提醒那些证书即将到期,监控域名的目的主要是为了提醒哪些域名的证书即将过期。

此处不详细展示代码,脚本代码、zabbix模版、配置以及如何使用详见https://github.com/LHB6540/zabbix/tree/main/domain_cert_monitor

脚本1 get_expired_time.py:

获取指定域名、证书的剩余时间

脚本2 get_domain_day.py:

借助 get_expired_time.py 获取指定域名列表的所有到期时间并生成 Zabbix 自动发现格式的数据

脚本3 get_cert_day.py:

借助 get_expired_time.py 获取指定目录下所有证书文件的到期时间并生成 Zabbix 自动发现格式的数据

脚本4 get_signal_cert.py:

借助 get_cert_day.py 生成的数据获取单个证书的剩余有效时间

脚本5 get_signal_cert.py:

借助 get_domain_day.py 生成的数据获取单个域名使用的证书的剩余有效时间

三、配置 Zabbix 监控模板

此处不仅仅配置为自动发现规则,而是配置为模板,在模板中添加自动发现规则,主要是为了在方便在不同机器上使用

脚本代码、zabbix模版、配置以及如何使用详见https://github.com/LHB6540/zabbix/tree/main/domain_cert_monitor

首先编写 Zabbix 配置文件并重启 Agent

UserParameter=domains_discovery,cat /tmp/domain_info.tmp
UserParameter=domain_expired[*],/usr/bin/python3 /etc/zabbix/shell/domain_cert/get_signal_domain.py 
UserParameter=cert_discovery,cat /tmp/cert_info.tmp
UserParameter=cert_expired_day[*],/usr/bin/python3 /etc/zabbix/shell/domain_cert/get_signal_cert.py 

以证书监控为例

1、更新间隔设为0,表示不主动检查,自定义间隔使用调度,在每天10点进行检查

2、配置监控项原型同理

3、配置触发器,注意部分触发器的恢复表达式是额外定义的,例如还有60天到期的触发器,因为目的是在60天的时候提醒,但是如果在59天的时候还没有签新证书,逻辑上不应该是触发器恢复.

四、参考和 Tip

1、参考:

  • Zabbix 自动发现相关文档:https://www.zabbix.com/documentation/4.0/zh/manual/discovery/low_level_discovery
  • Zabbix 监控项取值间隔:https://www.zabbix.com/documentation/4.0/zh/manual/config/items/item/custom_intervals

2、Tip:

  • 代码和使用说明已上传 Github ,方便下载:

  • get_expired_time.py 中 get_cert_from_endpoint 尝试采用两种方法去进行SSL握手,主要是由于部分网站强制使用TLS1.3进行握手,而ssl.get_server_certificate 方法并不支持

  • get_expired_time.py 可以当作命令行工具直接使用哦

  • 使用 Zabbix 自动发现获取监控项后,针对每个监控项目的取值,可以采用相关项目代替脚本,这个会在后续文章中有提到,为了更好地利用这一特性,建议使用 Zabbix 5

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5351238.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-09
下一篇 2022-12-09

发表评论

登录后才能评论

评论列表(0条)

保存