zabbix企业应用之监控域名过期时间与ssl证书过期时间

简介:

如果各位维护过n多个域名,可能会对备案与续费有所了解,备案是十分麻烦,各种流程,而续费的话,虽然比较简单,但如果你没有提前续费,可能导致域名不可用,甚至被他人给恶意注册,为了解决这样的问他,我今天给各位分享一下,如何使用zabbix监控域名过期时间与ssl证书过期时间,默认的触发器是在域名或ssl证书要过期前60天通知。

下面是监控域名过期时间的效果图

wKiom1TIOHeTYbIlAARFBuMm5aY078.jpg

下面是监控ssl证书过期时间效果图

wKioL1TIOabg9BotAAKsOUQWSlM422.jpg

如何实现:

一、客户端

1、修改zabbix_agentd.conf文件

在zabbix_agentd.conf最后添加以下内容

1
2
UserParameter=check_domain_beian[*],python  /usr/local/zabbix_server/bin/check_domain_beian .py $1
UserParameter=check_ssl_cert_expire[*], /bin/bash  usr /local/zabbix_server/bin/check_ssl_cert_expire .sh $1 $2

其中check_domain_beian是监控域名过期时间,check_ssl_cert_expire是监控ssl证书过期时间

2、把下面脚本放入客户端的bin里(我的是放在/usr/local/zabbix_server/bin)

监控域名过期时间的脚本/usr/local/zabbix_server/bin/check_domain_beian.py内容为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#/usr/bin/env python
#author:denglei
#email:dl528888@gmail.com
import  urllib2
import  urllib
import  sys
import  datetime
import  time
import  re
check_api= 'http://whomsy.com/api/%s?output=json' %sys.argv[1]
header={ "User-Agent" :  "Mozilla-Firefox5.0" }
result = urllib2.urlopen(check_api)
check_result = result. read ()
print check_result
c=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  day
if   len(e) != 0:
     print conver_time(e)
else :
     print  '1'

我是使用python来实现,使用whomsy接口获取信息,然后通过正则过滤出结果。

ps:网上虽然有很多接口可以使用,但好多都是过期或者需要花钱的,免费的话,也限制了监控的频率,我的域名比较多所以只能自己弄了。

下面是监控ssl证书的脚本check_ssl_cert_expire.sh内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#/bin/bash
host=$1
port=$2
end_date=`openssl s_client -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' `
if  [ -n  "$end_date"  ]
then
     end_date_seconds=` date  '+%s'  -- date  "$end_date" `
# date指令format字符串时间。
     now_seconds=` date  '+%s' `
     echo  "($end_date_seconds-$now_seconds)/24/3600"  |  bc
fi

ps:这个脚本是我在网上找的,非原创

重要:如果想使用这个脚本监控ssl证书,需要ssl证书在服务器里使用,否则没办法监控的。

3、重启zabbix客户端服务

1
2
ps  -ef| grep  zabbix| grep  - v  grep | awk  '{print $2}' | xargs  kill  -9
/usr/local/zabbix/sbin/zabbix_agentd  -c  /usr/local/zabbix/conf/zabbix_agentd .conf

二、服务端

1、域名过期时间的项目

wKioL1TIPKCiG389AAG3HUfmekU299.jpg

我是1小时监控一次,大家可以设置更长,但别大于一天。

2、监控域名过期时间的触发器

wKioL1TIPTmh-AzRAADoX_K7z_Q100.jpg

只要还有60天就过期报警,报警级别是“一般严重”,我这里报警级别为”一般严重“为短信或邮件通知,”严重“报警为语音报警通知。

3、监控ssl证书过期时间项目

wKioL1TIPe6hA11OAAGuFZu2fbY466.jpg

4、监控ssl证书过期时间的触发器

wKioL1TIPi-DEIwDAADP5D4izzU170.jpg

我监控的话,是一个主机监控多个域名或者ssl证书,所以我没有弄成模板,如果你想一个主机监控一个域名,可以弄成模板。有问题留言,我会及时反馈。







 本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/dl528888/1609028,如需转载请自行联系原作者

相关文章
新功能上线:云解析DNS-重点域名监控功能发布
新功能上线:云解析DNS-重点域名监控功能发布
|
数据建模 网络安全
阿里云SSL证书不同类型DV、OV和EV如何收费?单域名和通配符SSL价格整理
阿里云SSL证书提供免费和收费版本,涵盖DV、OV、EV多种类型。收费证书品牌包括DigiCert、GlobalSign等,价格从238元/年起。免费SSL证书由Digicert提供,单域名有效3个月,每个实名主体每年可领取20个。具体价格和详情见阿里云SSL官方页面。
|
数据建模 网络安全
阿里云SSL证书不同类型DV、OV和EV如何收费?单域名和通配符SSL价格整理
阿里云SSL证书提供免费和收费选项。收费证书包括:DV单域名WoSign 238元/年,DigiCert通配符DV 1500元/年,GlobalSign OV企业型1864元/年等。免费SSL证书由Digicert提供,有效期3个月,每年可领取20个单域名证书。更多详情及价格表请参考阿里云官方页面。
|
安全 网络安全
单域名SSL证书跟通配符SSL证书对比
单域名SSL证书仅保护一个特定域名,如`www.example.com`,适合小型网站,价格较低且配置简单。通配符SSL证书可保护主域名及其所有子域名,如`*.example.com`,适合中大型企业,灵活性高但价格较高。选择时需根据实际需求权衡域名数量、预算和管理复杂度。
1446 5
|
安全 测试技术 网络安全
无需域名,如何通过IP地址申请SSL证书保障网站安全
SSL证书不仅适用于域名,还可为IP地址申请,确保无域名或局域网内数据传输安全。本文详解如何为IP地址申请SSL证书:选择支持的CA机构(如JoySSL),完成注册、验证并安装证书。特别适合没有域名、开发测试环境及局域网应用等场景。虽价格较高且供应商较少,但在特定需求下是有效解决方案。
|
Web App开发 安全 网络协议
多域名 SSL 证书是什么? 多域名 SSL 证书申请流程
多域名SSL证书是保护多个网站时的高效选择,它使得单个证书能够保护多个域名(网站)。这种证书通过在用户的Web浏览器和托管网站的服务器之间建立安全的加密连接,确保了敏感信息(包括登录凭证、信用卡信息和其他个人数据)的安全传输。
1365 1
|
安全 应用服务中间件 Shell
nginx配置https的ssl证书和域名
nginx配置https的ssl证书和域名
|
安全 数据建模 网络安全
阿里云SSL证书价格多少钱一年?单域名和通配符收费明细整理
阿里云提供多样化的SSL证书服务,包括免费及付费选项。免费版由DigiCert提供,适合基本需求,有效期为3个月。付费证书品牌涵盖WoSign、DigiCert、GlobalSign等,价格从238元/年起。不同品牌与类型的证书(如DV、OV、EV)费用各异,满足各类安全需求。详情及最新价格请访问阿里云官方页面。
|
安全 网络安全 数据安全/隐私保护
单域名、多域名、通配符 SSL 证书,你选对了吗?
SSL证书是保护上网安全的重要工具,相当于网站的身份证,确保信息不被窃取。单域名证书保护一个网站,多域名证书可保护多个网站,通配符证书则保护主域名下的所有子域名。选择哪种证书取决于网站规模和需求
|
安全 数据建模 测试技术
只有ip没有域名怎么申请SSL
在没有域名只有IP地址的情况下,仍可申请SSL证书。需确保拥有固定公网IP地址和服务器管理权限,选择支持IP SSL证书的CA(如JoySSL),完成注册、购买、验证、安装和测试等步骤,实现HTTPS加密访问。注意证书有效期、兼容性和安全性。

推荐镜像

更多