librenms 可以自訂 macros,其實是利用組合 SQL 字串最終得到一個 query,我們可以在 librenms 的資料表 alert_rules 看到一個欄位 query ,就是其組合的字串,但是我研究了許久,限制還是許多,不能做 GROUP BY 等統計。
而librenms有內建的一個 rule 叫 Processor usage over 85% ,他的警告方式是只要其中一個核心高於指定值,就會發出 alert,這其實超級不實用的,有太多應用就是只使用到單核心會操到滿載,例如虛擬化下的 VM,可能在 16 核心的機器,只分配給 1~2 核心,這台 VM 要是滿載,就可能發出警報,但事實上還有 14 核心是閒置的,所以必須要統計所有核心的加總平均用量才對。
上網找了一下別人的作法,找到這個討論串 https://www.reddit.com/r/networking/comments/3snq7v/what_are_some_good_custom_alert_rules_for_librenms/
內文用到的方式,最後是直接塞 SQL 了,但缺點是無法於WEB UI 中修改 rule,一旦修改,該 SQL 就又被取代了,這樣彈性大大降低,我自己也試了很多方法發現都無法突破,一直糾結在怎麼組合 SQL .... 但最後還是讓我找到一個一勞永逸的方式了,就是建立一個 VIEW 就好囉。
CREATE VIEW hrDeviceProcessorAvg AS select `librenms`.`hrDevice`.`device_id` AS `device_id`,round(avg(`librenms`.`hrDevice`.`hrProcessorLoad`),0) AS `hrProcessorLoad` from `librenms`.`hrDevice` where (`librenms`.`hrDevice`.`hrDeviceType` = 'hrDeviceProcessor') group by `librenms`.`hrDevice`.`device_id`
這段於 mysql 內執行會建立一個檢視表叫 hrDeviceProcessorAvg ,內容很簡單,就是將所有核心使用量平均起來
使用方式也很簡單,可以看以下截圖就知道了
那最後還要不要去管自訂 macros ? 答案是完全不用的。
PIGO 大您好:
要怎麼才能在librenms 告警時同時發hinet 簡訊
可以教一下嗎
謝謝
https://sms.hinet.net/new/sent_program.htm
沒試過sms
為何不用email呢?手機也收的到不是嗎?
不好意思,最近剛好也在摸這套監控,也遇到一樣CPU監控問題
目前已依您的方式建立view,但想建立alert rule時一直沒辦法找到hrDeviceProcessorAvg 這個條件
請教您我是否有遺漏的哪個步驟呢?
謝謝您。