2012年8月8日 星期三

介紹:Munin - 容易上手且支援網路傳輸的圖形化系統監控工具

使用 Munin 監控網路狀態的系統畫面

標題雖有點冗長,其實 Munin 對於大多數的終端使用者而言
就是一個可以透過 Web 介面觀看自己系統狀態的工具
詳細介紹請參考: 官網 Wiki
有關 Munin 的教學,此篇 Tutorial 寫的很好、值得一觀
本文只簡單的介紹部分內容

我們可以透過類似 sudo yum install munin-node 的指令安裝 munin-node 在特定 Server
以及在欲蒐集監控內容並且產生報表的 Server 安裝 munin 透過 sudo yum install munin 的指令
安裝完成之後,我們需要編輯兩者的 config 檔案:
(如果兩者都安裝在同一台 Server,那麼 config 檔案可以不用修改)

#首先編輯 munin-node.conf
sudo vim /etc/munin/munin-node.conf
#找到下列這一行,以修改成可查詢者的 IP (預設只允許本機做查詢)(系統若有防火牆,記得修改,預設使用的 port 為 4949)
allow ^127\.0\.0\.1$ 

#執行 munin-node
sudo /etc/init.d/munin-node start
#再來編輯 munin.conf
sudo vim /etc/munin/munin.conf

#找到被註解起來的這一行,此資料夾為最後圖形化報表的輸出目錄,可以自訂
# htmldir /var/www/html/munin/

#找到帶有 a simple host tree 的註解,下方會有一個 sample,填入被監控的 node 的資訊
[node_domain_name]
    address 127.0.0.1
    use_node_name yes
    
#不用主動執行 munin,他已經被設為 5 分鐘執行一次,如果想要更改頻率可以透過修改以下檔案達成:
sudo vim /etc/cron.d/munin


最後一步,就是將 munin 所生成出來的監控結果放到 Web Server 上面
然後使用瀏覽器觀看監測結果
如果想要直接放到 nginx 上面,可以修改以下 script:
location /SOME_FOLDER_NAME/ { 
    alias /var/www/html/;
}
如果想要先隨手架一個 light-weight 的 Web Sever 來試試看,Bottle 是我推薦的首選:
#save as test.py
from bottle import route, run, static_file
@route('/')
def return_static_file(filename):
    return static_file(filename, root='/var/www/html/munin/')
run(host='localhost', port=80, debug=True)
Run Web Server: python test.py
請打開 Browser 輸入: http://your_domain/index.html
這樣就可以見到預設的監控首頁了!

備註:
1.
如果出現 404 訊息
可以檢查 /var/www/html/munin/ 內是否已經有 munin 自動生成出的 index.html
還沒生成出來的話,就請等待幾分鐘再看看
2.
監控的結果當然不應該是 Public 開放出來的
因此無論使用哪個 Web Server
都應該啟動基本的身分驗證功能
Munin 所輸出的 HTML 資料夾內包含了 .htaccess 可供某些 Server 設置
而 Bottle 的 HTTP BASIC Authentication 方式可能比較少人知道
所以我附上實作方法:
       ###關鍵在於使用 auth_basic function, 並且傳入一個用來檢查 username 及 password 的 function###
from bottle import route, run, static_file, auth_basic
@route(‘/<filename:path>’)
@auth_basic(lambda name, pwd: name==“username” and pwd==“password”)
def return_static_file(filename):
    return static_file(filename, root=‘/var/www/html/munin/’)
run(host=‘localhost’, port=80)
3.
如果 munin-node 與 munin 並非在同一台主機內
那麼兩者之數據傳輸應該啟用 TLS 功能,以確保資訊安全

沒有留言:

張貼留言