1. 程式人生 > >ZabbixWeb監控變頻器

ZabbixWeb監控變頻器

ZabbixWeb監控變頻器

前言

觀看2018年Zabbix大會有大佬用指令碼實現變頻器概念功能

這個變頻器是怎麼樣一個概念呢?

我們知道Zabbix裡每次監控間隔時間都是固定的,變頻器所做的事情就是改變監控頻率

變頻器有什麼好處?
在某些場景,我們會擔心因網路抖動引起的誤報,有些告警閾值是兩次出現問題才觸發。這樣的配置有個缺點:問題發現時間是監控頻率 x 2,變頻器所做的事情就是:第一次發現閾值有問題,手動觸發一次,並將結果存庫,這樣問題發現時間是監控頻率 + 資料採集時間,極大縮短了問題發現時間。

方案

聽完這個有趣的監控思路,自己也想嘗試一番。
想在監控站點可用性上加快故障發現時間,普通的監控項變頻器可以採用zabbix_get

zabbix_sender配合使用,實現變頻器功能;但經過一番測試,ZabbixWeb是特殊型別,需要採用其他方案。

經過一番簡單的思考,大致方案如下

  • 需要額外開發一個仿ZabbixWebMonitor的指令碼.
  • 傳入itemid,撈取資料庫相關資訊進行請求.
  • 請求完將相關資料直接存庫.

實現

初步思考方案是簡單而美好的,但是在後續實踐過程中碰到一些問題

  1. 存入資料庫,Trigger不生效問題

    還是太過年輕了,查了官網發現:ZabbixServer Trigger讀記憶體快取值而非直接讀取資料庫 .

  2. 資料庫插值行不通,如何插入WebMonitor

    抓包分析zabbix_sender主動傳值,發現tcp協議request只支援agent datatrapper data ,分別對應主動模式的item與自動捕獲資料的item,WebMonitor是屬於特殊item,無法直接插入值.

經過幾番測試跟思考,最終方案如下:

#1     每個Web額外新增一個Trapper型別item.
#2     原先觸發器進行改造,改為判斷兩項的總和.

效果

原來的Trigger

最後三次中加起來超過兩次異常觸發告警
ZabbixWeb監控變頻器

看最新資料11分40秒第一次發現故障
ZabbixWeb監控變頻器
在12分41秒的時候發出告警,也就是從故障發生到發現時間經過了1分多鐘時間
ZabbixWeb監控變頻器

加入變頻器後

Trigger改造
ZabbixWeb監控變頻器
可以看到在第一次發現故障後4秒就觸發了告警器
ZabbixWeb監控變頻器

47秒發現故障,51秒將請求結果插入庫,以及傳送到Zabbix trapper縮短了告警器觸發時間
ZabbixWeb監控變頻器

後記

這種監控思路蠻有趣的,可以用在某些特定應用場景

指令碼地址: 傳送門