设为首页 收藏本站
查看: 1865|回复: 0

[经验分享] zabbix企业应用之监控域名过期时间与ssl证书过期时间

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-1-29 09:11:41 | 显示全部楼层 |阅读模式
如果各位维护过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证书,所以我没有弄成模板,如果你想一个主机监控一个域名,可以弄成模板。有问题留言,我会及时反馈。


    运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-41687-1-1.html 上篇帖子: zabbix 实现短信告警 下篇帖子: Centos 7.0 安装Zabbix ssl证书 监控
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表