使用zabbix监控网站ssl证书到期,避免由于网站证书到期,而导致网站访问异常!
当前系统Centos7.6,此方式只需要在zabbix-server主机上运行一个zabbix-agent,然后在web页面配置监控所需要的域名即可(任意域名都可以),如果当前主机已经安装好了zabbix-agent,下面前两步可忽略!
注意:网上大部分的脚本都有问题,虽然都能获取到到期时间,但是要注意的是,获取的剩余到期时间并不是很准确。另外,还有个问题,如果有多个二级域名,它们的证书到期时间都不一样,但是脚本检测出来的时间都是一样的。
原因:网上很多脚本获取证书时间的时候都没有指定-servername参数,所以才会导致此问题的出现!!!这是一坑……
1、同步好主机时间
yum -y install ntp
/usr/sbin/ntpdate ntp1.aliyun.com
2、配置zabbix4.0源
官方源(速度有时候很不理想)
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
或者可以考虑使用清华大学的源
wget -P /etc/yum.repos.d/ http://down.whsir.com/downloads/zabbix.repo
3、安装zabbix-agent4.0
yum install zabbix-agent
4、启动zabbix-agent
systemctl enable zabbix-agent
systemctl start zabbix-agent
5、配置ssl检测
mkdir /etc/zabbix/script
cd /etc/zabbix/script
vi ssl_certificates_check.sh
#!/bin/bash
time=`openssl s_client -servername $1 -connect $1:443 2>/dev/null | openssl x509 -noout -dates 2>/dev/null | grep notAfter | cut -d'=' -f2`
time1=`date +%s -d "$time"`
time2=$(( $time1 - `date +%s`))
time3=$(( $time2 / 24 / 3600 ))
echo $time3
给予执行权限
chmod +x ssl_certificates_check.sh
添加一个userparameter_ssl_certificates_check.conf文件
vi /etc/zabbix/zabbix_agentd.duserparameter_ssl_certificates_check.conf
UserParameter=ssl_check[*],/etc/zabbix/script/ssl_certificates_check.sh $1
6、重启zabbix-agent
systemctl restart zabbix-agent
7、使用zabbix-get检测配置
yum install zabbix-get
zabbix_get -s 127.0.0.1 -p 10050 -k ssl_check[blog.whsir.com]
如果看到正常返回ssl证书到期值,表示配置正确,可以进入web页面进行配置了
8、开始进入web页面配置
配置-主机-创建主机ssl_certificates_check

创建好主机后添加监控项ssl_check $1
,注意我这里更新间隔是1d,为了演示效果,建议先配置成30s,后续配置图形无误后,再把这个值改成1d,证书的到期时间毕竟是固定的,如果长期配置成30s的话很浪费资源!

9、创建触发器
触发器的这个时间根据情况自行设置,我这里以30天为单位
问题表现形式设置ssl证书小于等于30天触发警告
{ssl_certificates_check:ssl_check[blog.whsir.com].last()}<=30
恢复表达式设置ssl证书大于30天恢复警告
{ssl_certificates_check:ssl_check[blog.whsir.com].last()}>30

10、添加图形,勾选查看触发器,添加监控项

至此ssl证书监控配置完成,后续可以搭配邮件功能进行邮件报警
注:本文转自https://blog.whsir.com/post-3561.html
Be First to Comment