Munin 是一個使用 RRDTOOL 工具將數值圖形化並透過網頁顯示,比如系統 CPU 負載、記憶體大小、郵件佇列數等等任何只要你能使用它本身提供的 plugins 或自寫的。
Munin 也有 maseter/node 概念,意思就是可以中央控管圖形化每台主機的狀態。

1.) 安裝 munin munin-node

Munin is a server/node pair that graphs, htmlifies and optionally sends out notifications about data it gathers. It's designed to let it be easy to graph new datasources.

Munin-node is a perlscript listening to port 4949 using the Net::Server Perl module. It reads all the scripts in /etc/munin/plugins (or CONFDIR/plugins/, to be more spesific) on startup. The node accepts these commands:

2.) 設定 munin master

more /etc/munin/munin.conf

# 預設內容如下
dbdir   /var/lib/munin                                 # 儲存 rrd 資料檔
htmldir /var/www/html/munin                    # 儲存圖檔,會根據下面定義好的群組在此目錄底下建立群組目錄
logdir  /var/log/munin                                 # log 記錄檔
rundir  /var/run/munin

tmpldir /etc/munin/templates

[localhost]
    address 127.0.0.1
    use_node_name yes

# 多加一個來說明
[ws.ssorc.tw]                        # 定義一個 ssorc.tw 的群組,這群組底下有個 ws.ssorc.tw 主機(node)
    address 127.0.0.1             # 這個就是有 munin-node 的 IP 位址
    use_node_name yes
    #port  4949                       # 如果 node 的 listen 不是 4949 的話

[sy.ssorc.tw]
    address 10.1.1.1
    use_node_name yes

[we.ssorc.tw]
    address 10.1.1.3
    use_node_name yes

# 如果你想把 ws.ssorc.tw 定義在 cross 群組下的話,可以這樣設
[cross;ws.ssorc.tw]
    address 127.0.0.1
    use_node_name yes

[cross;sy.ssorc.tw]
    address 10.1.1.1
    use_node_name yes

[cross;we.ssorc.tw]
    address 10.1.1.3
    use_node_name yes

# 以下先備註
#max_processes                  # 最大 munin 模擬出來的程序數量
#nsca*                                  # DEPRECATED. Use contact directives instead, and see Sending alerts from Munin.

/etc/init.d/munin-node start

瀏覽 http://ssorc.tw/munin


4.) 設定 munin node

more /etc/munin/munin-node.conf

# 記錄等級,0=>err、1=>warning、2=>notice、3=>info、4=>debug
log_level 4
log_file /var/log/munin/munin-node.log
port 4949
pid_file /var/run/munin/munin-node.pid
background 1
setseid 1

# Which port to bind to;
# 定義那個 IP 來讓 munin-node 來 listen
host *
# 跑 munin-node 的使用者及群組
user root
group root
setsid yes
# 載入 plugins 要忽略的檔案
ignore_file ~$
# 如果 munin-node 查出來的主機名稱可能不是你要的,你可以自行定義主機名稱
host_name ssorc.tw
# 定義誰可以查詢 munin-node 程序
allow ^127.0.0.1$

5.) 設定 plugins for node

plugin-conf.d 目錄裡是放置一些設定檔,而這此設定檔裡面定義了執行那個 plugins 目錄裡的 script,
而 plugins 目錄裡面的都是從 /usr/share/munin/plugins/ Link 過來的,只要 Link 過來的 plugins 都會被顯示,
不過如果我把 plugins 裡的 cpu 刪除,此時網頁上就看不到 CPU 的統計了,我也照著文件設定在 /etc/munin/plugin-conf.d/munin-node,

[cpu]
user root

不過沒有效用,為何 ???
原來不能這麼做,不能把 cpu 從 plugins 裡移除,
不過可以在 munin-node.conf 裡設定

ignore_file cpu$

來忽略統計 CPU
那這樣問題來了,為何要有 plugin-conf.d/munin-node ???
原來它真得只是用來改變執行的使用者是誰、群組是誰、撘配什麼指令

6.) RPM 安裝時,預設會在 /etc/cron.d/munin 作排程

*/5 * * * *     munin test -x /usr/bin/munin-cron && /usr/bin/munin-cron

如果要馬上讓數值統計,直接下 sudo -u minun munin-cron
不要使用 root,否則建立的檔案會變成 root,會讓 cron 以 munin 使用者執行時無法寫入檔案

指令說明:
munin-update – A program to gather data from machines running munin-node
munin-cron – A program to batch other munin programs

7.) 使用 telnet localhost 4949 查看訊息

Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
# munin node at ssorc.tw
nodes               # 列出 nodes 名稱
ssorc.tw
.
list ssorc.tw      # 列出此 nodes 可用的 plugins
open_inodes if_err_eth0 irqstats entropy if_eth0 postfix_mailqueue processes df interrupts netstat swap load hddtemp_smartctl df_inode iostat forks open_files memory vmstat
config load         # 列出 plugin 的設定
graph_title Load average
graph_args –base 1000 -l 0
graph_vlabel load
graph_scale no
graph_category system
load.label load
load.warning 10
load.critical 120
graph_info The load average of the machine describes how many processes are in the run-queue (scheduled to run "immediately").
load.info Average load for the five minutes.
.
fetch load            # 列出數值
load.value 0.18
.
version                # 列出版本
munins node on ssorc.tw version: 1.2.5
quit
Connection closed by foreign host.

你也可以直接執行 plugins
./plugins/load

load.value 0.14

./plugins/load config

graph_title Load average
graph_args –base 1000 -l 0
graph_vlabel load
graph_scale no
graph_category system
load.label load
load.warning 10
load.critical 120
graph_info The load average of the machine describes how many processes are in the run-queue (scheduled to run "immediately").
load.info Average load for the five minutes.

./plugins/load autoconf      – 這個用來得知此 plugins 是否能用,它會 check 有沒有所需要的檔案或程式

yes

Related posts 相關文章
使用 Grafana 與 Prometheus 監控主機
More...
解決 RRDTOOL 的圖突然有很大的值
More...
collectd 監控主機,把資料丟給 influxdb + grafana
More...
rrdtool 的 ds name 有長度限制
More...

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。