在客户端机器上创建脚本
vim /etc/zabbix/zabbix_agentd.d/check-cert-expire.sh
#!/bin/sh
host=$1
port=$2end_date=`openssl s_client -servername $host -host $host -port $port -showcerts </dev/null 2>/dev/null | sed -n '/BEGIN CERTIFICATE/,/END CERT/p' | openssl x509 -text 2>/dev/null | sed -n 's/ *Not After : *//p'`# openssl 检验和验证SSL证书。# -servername $host 因一台主机存在多个证书,利用SNI特性检查# </dev/null 定向标准输入,防止交互式程序Hang。从/dev/null 读时,直接读出0 。# sed -n 和p 一起使用,仅显示匹配到的部分。 //,// 区间匹配。# openssl x509 -text 解码证书信息,包含证书的有效期。if [ -n "$end_date" ]then end_date_seconds=`date '+%s' --date "$end_date"` now_seconds=`date '+%s'` echo "($end_date_seconds-$now_seconds)/24/3600" | bcfi
vim /etc/zabbix/zabbix_agentd.d/check_domain_beian.py
#/usr/bin/env python
#author:denglei#email:dl528888@gmail.comimport urllib2import urllibimport sysimport datetimeimport timeimport recheck_api='https://whois.aliyun.com/whois/domain/?spm=5334.7477273.3.1'%sys.argv[1]header={"User-Agent": "Mozilla-Firefox5.0"}result = urllib2.urlopen(check_api)check_result = result.read()print check_resultc=re.findall("GODADDY.COM*",check_result)cc=re.findall("GoDaddy*",check_result)if len(c) == 0 and len(cc) == 0: c=re.findall("Registrar Registration Expiration Date.*",check_result) if len(c) == 0: c=re.findall("Expiration Date.*",check_result) m=re.search("\d+-\d+-\d+..\d+:\d+:\d+",c[0]) d=m.group() e=re.sub('T',' ',d)elif len(c) ==0 and len(cc) != 0: c=re.findall("Record expires on.*",check_result) m=re.search("\d+-\d+-\d+",c[0]) d=m.group() e=time.strftime("%Y-%m-%d %T",time.strptime(d,'%Y-%m-%d'))else: c=re.findall("Expiration Date.*",check_result) m=re.search("\d+-\w+-\d+",c[0]) if m is None: m=re.search("\w+ \w+ \d+ \d+:\d+:\d+ \w+ \d+",c[0]) d=m.group() e=time.strftime("%Y-%m-%d %T",time.strptime(d,'%a %b %d %H:%M:%S %Z %Y')) else: d=m.group() e=time.strftime("%Y-%m-%d %T",time.strptime(d,'%d-%b-%Y'))if len(c) == 0: e=''def conver_time(start_time): start_time=start_time now_time=time.strftime('%Y-%m-%d %H:%M:%S') warn_start=datetime.datetime.strptime(start_time,"%Y-%m-%d %H:%M:%S") warn_finish=datetime.datetime.strptime(now_time,"%Y-%m-%d %H:%M:%S") #td=warn_finish - warn_start td=warn_start - warn_finish warn_continue=(td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6 if warn_continue >= 86400 : day = warn_continue // 86400 return dayif len(e) != 0: print conver_time(e)else: print '1'vim /etc/zabbix/zabbix_agentd.d/userparameter_ssl_check_expire.conf
UserParameter=ssl[*],/bin/bash /etc/zabbix/zabbix_agentd.d/check-cert-expire.sh $1 $2
UserParameter=check_domain_beian[*],python /etc/zabbix/zabbix_agentd.d/check_domain_beian.py $1
重启zabbix-agent
进入zabbix后台配置监控项与触发器
配置---主机---监控项---添加监控项
键值: ssl[www.baidu.com,443]
配置触发器,配置---主机--触发器--添加触发器
表达式:{Zabbix server:ssl[www.baidu.com,443].last()}<10