使用zabbix监控网站ssl证书到期,避免由于网站证书到期,而导致网站访问异常!
当前系统Centos7.6,此方式只需要在zabbix-server主机上运行一个zabbix-agent,然后在web页面配置监控所需要的域名即可(任意域名都可以),如果当前主机已经安装好了zabbix-agent,下面前两步可忽略!
注意:网上大部分的脚本都有问题,虽然都能获取到到期时间,但是要注意的是,获取的剩余到期时间并不是很准确。另外,还有个问题,如果有多个二级域名,它们的证书到期时间都不一样,但是脚本检测出来的时间都是一样的。
原因:网上很多脚本获取证书时间的时候都没有指定-servername参数,所以才会导致此问题的出现!!!这是一坑......
1、同步好主机时间
yum -y install ntp /usr/sbin/ntpdate ntp1.aliyun.com
|-----|------------------------------------------------------| | 1 2 | 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
|---|-----------------------------------------------------------------------------------------------| | 1 | 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/ https://down.whsir.com/downloads/zabbix.repo
|---|------------------------------------------------------------------------| | 1 | wget -P /etc/yum.repos.d/ https://down.whsir.com/downloads/zabbix.repo |
3、安装zabbix-agent4.0
yum install zabbix-agent
|---|--------------------------| | 1 | yum install zabbix-agent |
4、启动zabbix-agent
systemctl enable zabbix-agent systemctl start zabbix-agent
|-----|------------------------------------------------------------| | 1 2 | systemctl enable zabbix-agent systemctl start zabbix-agent |
5、配置ssl检测
mkdir /etc/zabbix/script cd /etc/zabbix/script
|-----|------------------------------------------------| | 1 2 | mkdir /etc/zabbix/script cd /etc/zabbix/script |
vi ssl_certificates_check.sh
|---|------------------------------| | 1 | 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
|-------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 2 3 4 5 6 | #!/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
|---|------------------------------------| | 1 | chmod +x ssl_certificates_check.sh |
添加一个userparameter_ssl_certificates_check.conf文件
vi /etc/zabbix/zabbix_agentd.d/userparameter_ssl_certificates_check.conf
|---|--------------------------------------------------------------------------| | 1 | vi /etc/zabbix/zabbix_agentd.d/userparameter_ssl_certificates_check.conf |
UserParameter=ssl_check[*],/etc/zabbix/script/ssl_certificates_check.sh $1
|---|-------------------------------------------------------------------------------| | 1 | UserParameter=ssl_check[*],/etc/zabbix/script/ssl_certificates_check.sh $1 |
6、重启zabbix-agent
systemctl restart zabbix-agent
|---|--------------------------------| | 1 | systemctl restart zabbix-agent |
7、使用zabbix-get检测配置
yum install zabbix-get
|---|------------------------| | 1 | yum install zabbix-get |
zabbix_get -s 127.0.0.1 -p 10050 -k ssl_check[blog.whsir.com]
|---|-----------------------------------------------------------------| | 1 | 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
|---|------------------------------------------------------------------| | 1 | {ssl_certificates_check:ssl_check[blog.whsir.com].last()}<=30 |
恢复表达式设置ssl证书大于30天恢复警告
{ssl_certificates_check:ssl_check[blog.whsir.com].last()}>30
|---|-----------------------------------------------------------------| | 1 | {ssl_certificates_check:ssl_check[blog.whsir.com].last()}>30 |
10、添加图形,勾选查看触发器,添加监控项