关于用zabbix6.0.18监控网站域名SSL证书有效期那件事
简述:公司的网站域名证书马上要到期了,在zabbix上做一个关于域名证书有效期的监控设置,琢磨了一个星期后,终于是搞定了,结果也符合预期。
一、 标题直接先上结果图,不用麻烦大家往后面翻浪费时间,先看看结果图是不是大家想要的,不是的话,直接划走;

二、python脚本如下,可以直接开袋食用!
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import ssl
import socket
import sys
from datetime import datetime
def get_cert_expiry(domain, port=443):
try:
context = ssl.create_default_context()
sock = socket.create_connection((domain, port), timeout=10)
ssock = context.wrap_socket(sock, server_hostname=domain)
cert = ssock.getpeercert()
expiry_date = cert['notAfter']
expiry_datetime = datetime.strptime(expiry_date, '%b %d %H:%M:%S %Y %Z')
days_remaining = (expiry_datetime - datetime.utcnow()).days
ssock.close()
sock.close()
return days_remaining
except Exception as e:
print("Error: %s" % str(e))
try:
ssock.close()
sock.close()
except:
pass
sys.exit(1)
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: ssl_cert_check.py <domain> [port]")
sys.exit(1)
domain = sys.argv[1]
port = int(sys.argv[2]) if len(sys.argv) > 2 else 443
days = get_cert_expiry(domain, port)
print(days)
三、正文步骤如下:
1:在zabbix服务端的web界面上,配置按下列个图进行配置;
配置→主机→监控项;

创建监控项
名称自己定义。类型选择主动模式,键值最好和我的一致,因为这是需要和目标服务器的zabbix-agent的配置一致;(如果后期弄清楚了含义和原理,可以自己更改);其他项不变,然后点击添加(我这里的更新是因为已经配置好了,不想再改)
添加完成后,在下图略微等个一两分钟,如果新建的监控项后面没有异常,并一直是”已启用“状态,就可以进行下一步;如果有异常,一般都是键值不支持的问题,我琢磨一个星期的原因也是在这里被卡住了;
如果监控项没有问题,就进行下一步的触发器设置;按下图的步骤进行;

结果处选择小于,值就按你自己想要小于多少天后给你报警就行;然后选择监控项;
监控项选择你刚刚创建的那个,注意后面要显示“已启用”才可以,如果显示“不支持项”,则说明你的监控项还是有问题;

四、zabbix-agent被监控端的配置
1、(这里是重点)首先找到你的zabbix_agentd.conf配置文件,一般在/etc/zabbix路径下,用vim zabbix_agentd.conf打开该配置文件后,找到下图的两项,其中第一项的值改成1,如果前面有注释符号#,就将注释符号#去掉;将第二项改成我所写的一样,其中/etc/zabbix/pythoncheckssl.py是你用来监控证书有效期脚本的存放路径,建议直接将我这个复制:UserParameter=pythoncheckssl[*],python /etc/zabbix/pythoncheckssl.py $1 $2
也就是说,一会你要把python 脚本文件放在被监控服务器的/etc/zabbix路径下面;

继续在配置文件里找到下图这项,并将值改为0;
完成上述配置后,保存退出;如果不知道怎么保存退出的,直接百度搜Linux用vim打开文档后怎么保存退出;
下图是我Python脚本的存放路径;注意这个脚本需要给它权限,用命令:
chmod +x pythoncheckssl.py
脚本权限配置完成后,可以先验证一下,输入命令:
python pythoncheckssl.py www.你的域名
然后回车,就可以显示证书有效期天数;如果验证不成功,则重启一下zabbix-agent 进程,启动命令:
systemctl restart zabbix-agent
systemctl restart zabbix-agent.service
接着输入命令:
zabbix_agentd -t “pythoncheckssl[www.你的域名.com]”
来验证这个脚本是否已经和zabbix服务端的web进行了联系;
显示下图的内容,则表示被监控端的脚本已经可以正常被服务端的web界面识别到了,这里也是验证在web界面的监控项键值是否与被监控端正常连接了;
到此结束,有问题咱们评论区见
。
还有一点,被监控端的selinux项,要配置为Permissive,命令如下:
setenforce 0
验证命令如下:
getenforce
更多推荐

所有评论(0)