更高效的SSL證書(shū)監控方案
所以今天再介紹個(gè)方法,不用手動(dòng)添加,不管你有多少項目,自動(dòng)收集
這里用到的就是zabbix的自動(dòng)發(fā)現規則,操作很簡(jiǎn)單,流程如下:
從web配置文件中獲取域名 編寫(xiě)監控腳本,輸出json格式 創(chuàng )建zabbix模板 添加自動(dòng)發(fā)現規則 主機綁定模板 驗證結果
獲取域名思路很簡(jiǎn)單,通常情況下,有證書(shū)的web配置,都監聽(tīng)443端口,所以可以通過(guò)python腳本,從web配置文件中,將監聽(tīng)了443端口的vhost中的ServerName字段拿到就可以了,當然,如果你監聽(tīng)的是其他端口,就通過(guò)其他端口去匹配,這里肯定是用正則去匹配
比如我要讀取apache中配置了證書(shū)的vhost,我寫(xiě)的正則模型如下:
通過(guò)以上簡(jiǎn)單的一個(gè)腳本,我就拿到了配置文件下所有配置了證書(shū)的域名的一個(gè)列表,如果你是nginx,一樣的方法,讀取配置文件,獲取listen是443端口的配置,拿到域名,至于怎么拿要具體看你nginx配置文件的寫(xiě)法,這里就不多說(shuō)了
zabbix編寫(xiě)的腳本,要用于自動(dòng)發(fā)現,輸出格式必須為json格式,而且鍵一定要是data,所以通過(guò)python腳本,將第一步得到的ServerName格式化輸出為json,腳本如下
這樣經(jīng)過(guò)格式化后輸出的json,zabbix才能識別,在zabbix_server端通過(guò)zabbix_get獲取數據測試
當然,能在server端獲取到數據的前提是,將上面寫(xiě)好的腳本,添加到zabbix_agent配置中,添加為UserParameter
上面添加玩玩腳本,從server端可以獲取到數據之后,就可以在zabbix的web端添加模板了,配置——模板——創(chuàng )建模板
創(chuàng )建一個(gè)模板,模板名稱(chēng)自己定,其他的選項沒(méi)有需要特別說(shuō)明的,按自己的情況來(lái)
然后這個(gè)模板中,不需要創(chuàng )建任何東西,只需要創(chuàng )建自動(dòng)發(fā)現規則
創(chuàng )建自動(dòng)發(fā)現規則的時(shí)候,名稱(chēng)同樣看自己(我比較土,就這么隨意),類(lèi)型要選zabbix客戶(hù)端,鍵值比較重要,鍵值就是你在zabbix_agent中配置的UserParameter的key,也就是這個(gè)自動(dòng)發(fā)現規則的數據,需要通過(guò)這個(gè)key來(lái)返回數據,或者說(shuō)獲取數據
添加完成后,就要開(kāi)始添加監控項原型了
自動(dòng)發(fā)現規則中,可以用自定義宏,從上面的腳本中可以看到,我把ServerName自定義為{#SERVERNAME},所以在添加監控項原型中可以使用該宏,名稱(chēng)和鍵值中通過(guò)使用該宏,動(dòng)態(tài)獲取要監控SSL的域名
這里名稱(chēng)也是自己定,用這種宏的方式,在告警的時(shí)候,可以更方便直觀(guān),鍵值這里用到的就是之前文章中的腳本,通過(guò)傳{#SERVERNAME}獲取到的域名給腳本,腳本返回證書(shū)到期時(shí)間
監控項原型添加完,就可以添加觸發(fā)器類(lèi)型了
這里是小于30天警告提醒
到這里zabbix模板就創(chuàng )建好了
主機綁定模板簡(jiǎn)單說(shuō)下,上面模板配置好之后,選擇要添加該模板的主機,在主機的模板中,鏈接剛才創(chuàng )建的模板就可以了
模板鏈接好之后,就可以通過(guò)監測中的最新數據查看返回結果了
當然,這個(gè)數據返回的時(shí)間,要根據你配置的模板中,更新間隔來(lái)定,開(kāi)始測試,可以將時(shí)間設置短一點(diǎn),測試沒(méi)問(wèn)題后,因為是SSL檢測,不需要那么頻繁檢測,所以可以按天來(lái)設置更新間隔,減輕zabbix壓力
上面模板鏈接后,如果數據沒(méi)有返回,可以通過(guò)主機中的監控項中的狀態(tài)和信息提示進(jìn)行相應的調整
通過(guò)zabbix模板及自動(dòng)發(fā)現,就可以很方便的自動(dòng)監控添加的域名,不需要一個(gè)一個(gè)添加,也不用擔心web中配置后,忘記在zabbix中添加