隨著https網(wǎng)站的普及,ssl證書的過期時(shí)間需要重點(diǎn)關(guān)注。如果使用let’s encrypt的免費(fèi)證書,可以配置自動(dòng)更新程序。不過我覺得最好還是做下監(jiān)控,因?yàn)橛袝r(shí)候自動(dòng)續(xù)期可能會(huì)出現(xiàn)問題。zabbix實(shí)現(xiàn)https網(wǎng)站ssl證書到期時(shí)間監(jiān)控思路很清晰,把到期時(shí)間取出來和當(dāng)前時(shí)間比較,比如到期前15天告警。
查詢證書api接口請求url:https://api.nbhao.org/v1/ssl/cert
接口說明:https://api.nbhao.org/web/#/1?page_id=5
監(jiān)控腳本如下:
#!/usr/bin/env python#coding: utf-8import requestsimport argparseimport timeurl = \'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\'] # 返回剩余的天數(shù) print (tm_end - int(time.time()))/86400 else: print \error\ else: print \error\此腳本正常會(huì)返回ssl證書剩余的天數(shù),把這個(gè)腳本保存到zabbix的外部命令externalscripts目錄,并賦予可執(zhí)行權(quán)限。zabbix外部命令具體路徑在配置文件zabbix_server.conf的externalscripts,默認(rèn)注銷沒有啟用。
配置zabbix1、添加itemtype:選擇“external check”
key:配置類似如“check_ssl.py[“-h”,”www.szl724.com”]”,其中check_ssl.py是腳本的名字,中括號里是對應(yīng)的參數(shù)“-h www.szl724.com”,查詢www.szl724.com域名443端口的ssl證書。
type of information:numeric,整數(shù)格式
update interval:5m,5分鐘檢查一次
注:添加item后注意查看“l(fā)atest data”里是不是正常采集到數(shù)據(jù)。
2、添加triggerexpression:觸發(fā)器兩個(gè)條件,分別是30分鐘沒有數(shù)值(ssl證書信息獲取失?。┖?0分鐘內(nèi)最大值小于15(ssl證書到期時(shí)間小于15天)。
如果有多個(gè)https網(wǎng)站的話按照這個(gè)步驟添加即可。