随着HTTPS网站的普及,SSL证书的过期时间需要重点关注。如果使用let’s encrypt的免费证书,可以配置自动更新程序。不过我觉得最好还是做下监控,因为有时候自动续期可能会出现问题。zabbix实现HTTPS网站SSL证书到期时间监控思路很清晰,把到期时间取出来和当前时间比较,比如到期前15天告警。
查询证书API接口
请求URL:https://api.nbhao.org/v1/ssl/cert
接口说明:https://api.nbhao.org/web/#/1?page_id=5
监控脚本
如下:
#!/usr/bin/env python #coding: utf-8 import requests import argparse import time url = 'https://api.nbhao.org/v1/ssl/cert' if __name__ == "__main__": parser = argparse.ArgumentParser(description="check ssl expire time.") parser.add_argument("-H", dest="host", help="https hostname") parser.add_argument("-P", dest="port", default=443, help="https port ,default 443") args = parser.parse_args() try: resp = requests.get(url = url, params={"host":args.host,"port":args.port}) result = resp.json() except: result = dict() if result: if result['code'] == 200: tm_end = result['message']['te'] # 返回剩余的天数 print (tm_end - int(time.time()))/86400 else: print "error" else: print "error"
此脚本正常会返回ssl证书剩余的天数,把这个脚本保存到zabbix的外部命令externalscripts目录,并赋予可执行权限。Zabbix外部命令具体路径在配置文件zabbix_server.conf的ExternalScripts,默认注销没有启用。
配置Zabbix
1、添加Item
type:选择“external check”
key:配置类似如“check_ssl.py[“-H”,”blog.nbqykj.cn”]”,其中check_ssl.py是脚本的名字,中括号里是对应的参数“-H blog.nbqykj.cn”,查询blog.nbqykj.cn域名443端口的SSL证书。
Type of information:numeric,整数格式
Update interval:5m,5分钟检查一次
注:添加item后注意查看“Latest data”里是不是正常采集到数据。
2、添加trigger
Expression:触发器两个条件,分别是30分钟没有数值(SSL证书信息获取失败)和30分钟内最大值小于15(SSL证书到期时间小于15天)。
如果有多个HTTPS网站的话按照这个步骤添加即可。
评论列表(0条)
学习了
文章不错非常喜欢
会写就是牛啊,我不会写的,设置个手机闹钟吧 😐