前提:
zabbix6 +网上资料
写这编文件的目的是让更多的人在查询了网上资料,还会遇上无法正常读取SSL证书到期时间的问题。所以在观看本文时,你需要有搭建ZABBIX6的基础,及Cenos8系统操作基础。
- 检查你的系统是否支持openssl 检测
openssl s_client -connect www.baidu.com:443 2>/dev/null | openssl x509 -noout -dates
返回结果如下图,CTRL+C可结束退出来。
如果遇上无法使用openssl请自行查阅资料安装相关插件。
- vi /usr/lib/zabbix/externalscripts/ssl_check_port.sh #这个文件我是创建到zabbix脚本目录/usr/lib/zabbix/externalscripts ,请也可cd到指定的目录后在创建。
#!/bin/bash
#获取ssl证书的过期时间
#author:Allen
#获取证书的有效时间
weburl=$1
sslprot=$2
ssltls=$3 #启用可引入1,1_1,1_2等协议版本,可解决低版服务器检测不到ssl证书时用
time=$(echo | openssl s_client -connect ${weburl}:${sslprot} -tls${ssltls} 2>/dev/null | openssl x509 -noout -dates |awk -F'=' 'NR==2{print $2}')
#有效时间生成时间戳
time1=$(date +%s -d "$time")
#当前时间生成时间戳
time2=$(date +%s)
#当前时间减去有效时间,获得将要过期的天数
time3=$(((time1-time2)/(60*60*24)))
echo $time3
代码上网上拷的,上网大概有三种版本。测试了下都可以用,特别是默认是检测443端口的。但我的情况比较特殊,所以我自己改了下这样可以自定义SSL端口
- chmod +x ssl_check_port.sh 给文件加执行权限,否则zabbix监控项无法正常
- vi /etc/zabbix/zabbix_agentd.d/userparameter_key.conf 添加以下脚本到最后一条。重启zabbix代理服务后,此部分内容会被agent.conf引入。也就是agent会知道这个key怎么操作,key后面是之前定义的shell+参数。
UserParameter=ssl_check[*],/usr/lib/zabbix/externalscripts/ssl_check_port.sh $1 $2 $3
本文中自定义的KEY是ssl_check[]
- systemctl restart zabbix-agent
- 手动添加监控项
以上两个监控项,一条是默认检测443接口,用的TLS1.2;第二条是检测的8051端口的,用的是TLS1。
- 手动检测结果
读取到正常的数值就说明成功。 - 总结。
错误代码:
unable to load certificate
139813418198848:error:0909006C:PEM routines:get_name:no start line:crypto/pem/pem_lib.c:745:Expecting: TRUSTED CERTIFICATE
当初使用网上的脚本,在一台windows 2008 IIS上面检查SSL证书。一直无法成功提示以上错误,经过多方面查找资料。发现是因为服务器SSL支持协议只能是TSL1,把通过修改脚本,以些来支持直接在zabbix监控项上面定义域名、端口号、协议版本信息,完美的解决了务类服务器检测证书时间到期问题。