2020年9月14日 星期一

[經驗分享] LibreNMS 搭配 Prometheus 時取用 sysName

LibreNMS 可以搭配 Prometheus 與 Grafana 一起使用,發揮出進階應用。不過,若使用 IP 方式新增裝置的情況下,Prometheus 所收的也是 IP,對於顯示出來的應用就沒有那麼直觀。





問題狀況

一般內部裝置可能不會特別為它建立 DNS 伺服器上的記錄,或是為了避免 DNS 服務異常導致無法輪詢裝置,所以我們在新增裝置時會採 IP 的方式加入。


以 IP 方式新增裝置


單純在 LibreNMS 使用上問題不大,可是帶到 Prometheus 時只有 hostname 欄位帶 IP 過去的 instance,對於管理者來說只看 IP 很難知道這是什麼裝置。


只有 instance 裡的 IP 可以識別裝置


當我們看 Prometheus 收進來的資料只能靠 instance 裡的 IP 識別裝置,更不要說進到 Grafana 後的痛苦。










解決方式

為了解決這個問題,我想過兩種方式,一種是在每個指標項目加上 sysName 名稱,第二是單獨回傳一個指標,裡面包含所有裝置的 hostname 與 sysName 對照表,最後我選擇實作前者。


於每個指標內加入裝置的 sysName 名稱


這個部份的程式我已經完成修改,並提交至 LibreNMS 官方 GitHub 專案合併,如要開啟此選項,請進入 LibreNMS 的 [全域設定] > [輪詢器] > [資料存放區: Prometheus] > 將 [附加 sysName] 選項開啟。


開啟 Prometheus 附加 sysName 選項


做完上述操作後,即可啟動傳送 sysName 給 Prometheus 的支援,因此在 Grafana 您也可以用 sysName 屬性做為篩選或顯示用途,再也不必看 IP 反推是什麼裝置啦。

 
將 sysName 用於 Grafana 圖表顯示








參考資料