Zabbix 增加HTTPS网站SSL证书过期时间监控

原文地址:https://zhangnq.com/3106.html

随着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","zhangnq.com"]”,其中check_ssl.py是脚本的名字,中括号里是对应的参数“-H zhangnq.com”,查询zhangnq.com域名443端口的SSL证书。

Type of information:numeric,整数格式

Update interval:5m,5分钟检查一次

Zabbix 增加HTTPS网站SSL证书过期时间监控_第1张图片

注:添加item后注意查看“Latest data”里是不是正常采集到数据。

2、添加trigger

Expression:触发器两个条件,分别是30分钟没有数值(SSL证书信息获取失败)和30分钟内最大值小于15(SSL证书到期时间小于15天)。

Zabbix 增加HTTPS网站SSL证书过期时间监控_第2张图片

如果有多个HTTPS网站的话按照这个步骤添加即可。

你可能感兴趣的:(Linux)