2019年10月4日 星期五

開源網路裝置服務監控系統:LibreNMS (二)



前一篇的內容是以 LibreNMS 搭配 SNMP 取得裝置的詳細資訊,儘管豐富但仍然不夠全面。

LibreNMS 的功力當然不僅於此,所以本篇將介紹如何更進一步的取得更多裝置其它資訊,讓 LibreNMS 可以看到更多有用的資訊。




IPMI/BMC

IPMI 是伺服器主機板上提供的管理功能,可以提供硬體上許多的管理能力與詳細硬體資訊。在 LibreNMS 中要使用它,請進入已經加入 LibreNMS 監控的裝置中,點選右方功能表的齒輪圖示,再點選 [Edit] 進入設定頁,接著切換至 [IPMI] 頁籤,並於此處輸入該主機的 IPMI 相關帳密資訊即可完成。



設定 IPMI 整合


經過這樣設定之後,下一次的輪詢就會結合 IPMI 的結果加以顯示,該裝置就可以有更完整的資訊輸出。



顯示 IPMI 資訊


如上圖的範例,就是顯示由 IPMI 中取得的詳細風扇轉速、電壓等使用資訊。

在其中一次的客戶案例就是經由監測溫度值看到問題,該主機平常的 CPU 運作溫度大約都在 45~55 度之間徘徊,但有一天夜裡開始,溫度持續維持在 85 度以上,有時甚至飆到 99 度後當機。

經過了解,是因為該主機運作已久,原本 CPU 與散熱片之間的散熱膏已經完全損耗,使得導熱能力大幅下降所致,經過停機檢修把散熱膏重新塗佈以後,該伺服器即恢復正常運作。








發行版本

某些 Linux 發行版本不會在 SNMP 中可以取得詳細與正確的資訊,最多只能取得 Linux 核心版本號,這對於想要掌握已安裝的版本較為不便。

我們可以透過 LibreNMS 提供的 Distro 工具,搭配 SNMP 輸出讓 LibreNMS 可以取到更完整且正確的資訊。

在需要被監測的主機上執行以下動作:

下載 Distro 指令碼

curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x /usr/bin/distro

在 SNMP 中 Distro 回應值 (/etc/snmp/snmpd.conf)

# 請在最後一行加入
extend .1.3.6.1.4.1.2021.7890.1 distro /usr/bin/distro

# 完成後存檔離開並重啟服務
systemctl restart snmpd

經過設定,就可以在 LibreNMS 看到完整的發行版本資訊,除了 Linux,FreeBSD 也同樣受惠。




取得發行版本資訊







代理程式

接著還可以透過 LibreNMS 整合的代理程式機制,取得更多的詳細資訊。

在這個部份 LibreNMS 是藉由整合另一個套件 Check_MK 來增強能力,安裝的方法在官方網站上已有提供,以 Ubuntu 安裝為例:

安裝與設定 Check_MK

cd /opt/
git clone https://github.com/librenms/librenms-agent.git
cd librenms-agent
cp check_mk_agent /usr/bin/check_mk_agent
chmod +x /usr/bin/check_mk_agent
cp check_mk@.service check_mk.socket /etc/systemd/system
mkdir -p /usr/lib/check_mk_agent/plugins /usr/lib/check_mk_agent/local
cp agent-local/* /usr/lib/check_mk_agent/local/
chmod +x /usr/lib/check_mk_agent/local/$script
systemctl enable check_mk.socket && systemctl start check_mk.socket

安裝完成後,Check_MK 就會固定監聽 6556/TCP 這個連接埠。


開啟連接 Check_MK 

回到 LibreNMS 的 Device 設定頁面,[Device] -> [Edit] -> [Modules],捲至下方將 `unix-agent` 開關切成 ON,即可在下一次輪詢時經由 Check_MK 取得詳細資訊。



經由代理程式取得資訊


從上圖可以看到使用 Check_MK 後,我們可以看到這台伺服器的型號、序號,以其頁籤上多出了Processes、Pkgs 這兩個,分別顯示目前運作中的處理程序、該主機已安裝過的套件以及版本。

目前 LibreNMS 支援連接 Linux、FreeBSD 上運作的 Check_MK,Windows 上雖然也有 Check_MK 可以安裝,但是 LibreNMS 並無法從 Windows 版的 Check_MK 將資訊取回,這是目前較為可惜之處。







更新狀況

對於惡意程式層出不窮的今日,能否儘快安裝更新檔是對抗漏洞攻擊的關鍵之一,LibreNMS 支援我們檢查 Device 上的作業系統是否已將安裝至最新版本,或是仍有更新檔尚未安裝。

這個功能屬於 Application 層面, 可以參考官方的步驟進行,請在要監視的裝置上操作:


下載最新版 OS Update 程式

wget https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/osupdate -O /etc/snmp/osupdate
chmod +x /etc/snmp/osupdate

設定 OS Update 至 SNMP (/etc/snmp/snmpd.conf)

# 在最後一行加入
extend osupdate /etc/snmp/osupdate
# 編輯完成後存檔退出並重新啟動服務
systemctl restart snmpd

完成以後,LibreNMS 就可以取得還有多少套件尚未更新。除了觀看圖表,也可以把這些更新數字經過設定後做為警報發送。


未安裝更新數量圖


目前 Application 支援以下應用的監視:
  • Apache 
  • Asterisk 
  • BIND9/named 
  • C.H.I.P 
  • Ceph 
  • DHCP Stats 
  • Entropy 
  • EXIM Stats 
  • Fail2ban 
  • FreeBSD NFS Client 
  • FreeBSD NFS Server 
  • FreeRADIUS 
  • FreeSwitch 
  • GPSD 
  • Mailscanner 
  • Memcached 
  • Munin 
  • MySQL/MariaDB 
  • NGINX 
  • NFS Server 
  • NTP Client 
  • NTP Server/NTPD 
  • Nvidia GPU 
  • OS Updates 
  • PHP-FPM 
  • Pi-hole 
  • Postfix 
  • Postgres 
  • PowerDNS 
  • Proxmox 
  • Raspberry PI 
  • SDFS Info 
  • SMART 
  • Squid 
  • TinyDNS/djbdns 
  • Unbound 
  • UPS-nut 
  • UPS-apcups 
  • ZFS








小結

在 LibreNMS 所提供的多種功能裡,不僅 SNMP 重要,其它輔助的 Check_MK、Applications 等進階的應用方式,都能夠強化我們對目標裝置的掌握性,資訊取得越多,越能夠從資訊裡取得有用警訊,更可以從圖表中快速了解可疑的關鍵點,早做處理。

LibreNMS 能做的事還不僅於此。下一篇,我將介紹更多資安檢測有關的實用功能,可以協助 IT 管理者解決更多困擾。







參考資料