# 获取证书过期时间脚本
cat /etc/zabbix/scripts/base/check-http-expire.sh
#!/bin/bash
host=$1
#end_date=`whois -H $host|grep "Registry Expiry Date"|awk '{print $NF}'`
end_date=`whois -H $host|egrep "Registry Expiry Date|Expiration Time"|awk '{print $3,$4}'|sed 's#Date: ##g'`
#echo "$end_date"
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" | bc
fi
[root@zabbix-server.uc-bj2b.songguo7.com base]# cat /etc/zabbix/scripts/base/check-http-expire.sh
#!/bin/bash
host=$1
#end_date=`whois -H $host|grep "Registry Expiry Date"|awk '{print $NF}'`
end_date=`whois -H $host|egrep "Registry Expiry Date|Expiration Time"|awk '{print $3,$4}'|sed 's#Date: ##g'`
#echo "$end_date"
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" | bc
fi
# 域名自动发现脚本:
cat /etc/zabbix/scripts/base/http_discovery.py
#!/usr/bin/env python
#coding:utf-8
import os
import sys
import json
#这个函数主要是构造出一个特定格式的字典,用于zabbix
def ssl_cert_discovery():
web_list=[]
web_dict={"data":None}
with open("/etc/zabbix/scripts/base/http_list","r") as f:
for sslcert in f:
dict={}
dict["{#DOMAINNAME}"]=sslcert.strip().split()[0]
dict["{#PORT}"]=sslcert.strip().split()[1]
dict["{#OLDNS}"]=sslcert.strip().split()[2]
web_list.append(dict)
web_dict["data"]=web_list
jsonStr = json.dumps(web_dict,indent=4)
return jsonStr
if __name__ == "__main__":
print ssl_cert_discovery()
# 域名列表
cat /etc/zabbix/scripts/base/http_list
baidu.com 443 volunteer.dnspod.net.;jane.dnspod.net.
jd.cn 443 jane.dnspod.net.;volunteer.dnspod.net.
# zabbix配置
cat /etc/zabbix/zabbix_agent2.d/userparameter_http.conf
UserParameter=http_discovery,/usr/bin/python /etc/zabbix/scripts/base/http_discovery.py
UserParameter=http.info[*],/bin/bash /etc/zabbix/scripts/base/check-http-expire.sh $1
# zabbix添加监控模版
zabbix_export:version: '5.2'date: '2024-06-04T07:31:05Z'groups:-name: Templatestemplates:-template: 'Template http expire date'name: 'Template http expire date'groups:-name: Templatesapplications:-name: 域名过期剩余时间discovery_rules:-name: 域名到期_Discoverytype: ZABBIX_ACTIVEkey: http_discoverydelay: 24hlifetime: '0'item_prototypes:-name: '[{#DOMAINNAME}]域名过期剩余时间:'type: ZABBIX_ACTIVEkey: 'http.info[{#DOMAINNAME},{#PORT}]'delay: 3hhistory: 2dtrends: 7dunits: 天applications:-name: 域名过期剩余时间preprocessing:-type: MULTIPLIERparameters:- '1'trigger_prototypes:-expression: '{last()}<33'name: '[{#DOMAINNAME}] 域名过期剩余时间小于33天'priority: HIGHmanual_close: 'YES'
调整触发器时长,验证配置是否正确。
# 出发告警
# 告警恢复