問題狀況
一般內部裝置可能不會特別為它建立 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] 選項開啟。
做完上述操作後,即可啟動傳送 sysName 給 Prometheus 的支援,因此在 Grafana 您也可以用 sysName 屬性做為篩選或顯示用途,再也不必看 IP 反推是什麼裝置啦。
參考資料
- 節省工具箱 Jason Tools: [經驗分享]LibreNMS 整合 Grafana 做為圖表顯示工具
http://blog.jason.tools/2019/07/librenms-grafana.html
- Add attach sysName to Prometheus. by jasoncheng7115 · Pull Request #12061 · librenms/librenms
https://github.com/librenms/librenms/pull/12061