[Linux实用工具]munin-node插件配置和插件编写
生活随笔
收集整理的這篇文章主要介紹了
[Linux实用工具]munin-node插件配置和插件编写
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前面介紹了2篇munin使用的相關文章:
?
- [Linux實用工具]Linux監控工具munin的安裝和配置
- [Linux實用工具]Linux監控工具munin的展示(Nginx)
?
這次介紹一下munin-node的插件的安裝配置和插件的編寫。插件配置
munin-node本身就集成了很多的插件,只需要直接建個軟鏈就可以了。像Nginx、Apach、mysql都是有現成的插件可以使用的。 munin的插件默認保存在/etc/munin/plugins里面。進去查看會發現很多軟鏈,軟鏈到/usr/share/munin/plugins 這個目錄下的文件。沒錯,munin的插件都是放置在/usr/share/munin/plugins 下的。使用相當簡單,只需要參考原有的例子,直接建軟鏈過去就可以了。 下面以mysql的插件為例: ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries ln -s /usr/share/munin/plugins/mysql_bytes /etc/munin/plugins/mysql_bytes ln -s /usr/share/munin/plugins/mysql_innodb /etc/munin/plugins/mysql_innodb 然后重啟一下munin-node 就可以生效了。 service munin-node restart插件編寫
如果需要監控的應用沒有相關的插件支持怎辦?也很簡單。隨意打開一個現有的插件,會發現具體的代碼內容,觀察發現編寫一個插件也不是很難。而且munin-node的插件支持shell、python、perl。也可以根據自己熟悉的語言來編寫插件。munin-node 提供的插件實例
以threads (/usr/share/munin/plugins/threads)插件為例,我們可以查看內部代碼: #!/bin/sh # -*- sh -*- # vim: ft=shif [ "$1" = "autoconf" ]; thengrep -q '^Threads' /proc/$$/status && echo "yes" || echo "no"exit 0 fiif [ "$1" = "config" ]; thenecho 'graph_title Number of threads'#echo 'graph_args --base 1000 -l 0 'echo 'graph_vlabel number of threads'echo 'graph_category processes'echo 'graph_info This graph shows the number of threads.'echo 'threads.label threads'echo 'threads.info The current number of threads.'exit 0 figrep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print "threads.value", sum; }' 可以直接執行插件的文件查看輸出數據的結構。可以發現所有的輸出的格式都是一樣的,而且都有1個參數。 分別使用參數autoconf、config和不使用參數,查看輸出內容: #?sh threads autoconf yes #?sh threads config graph_title Number of threads graph_vlabel number of threads graph_category processes graph_info This graph shows the number of threads. threads.label threads threads.info The current number of threads. #?sh threads threads.value 174參數說明
autoconf 用于檢測是否有進程的存在。非必要。 config 使用config參數的時候,輸出的內容是繪圖的配置信息,查看字段意思也可以知道字段的意思。 不使用參數 不使用參數的時候,輸出的是具體的進程數量。這個跟具體的命令輸出有關系。 grep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print "threads.value", sum; }'自定義插件
既然知道每個參數需要輸出的具體內容,那么我們就可以依葫蘆畫瓢,我們就可以寫出我們自己的插件。下面給出一個具體的例子,該例子用于監控一個游戲服務器的內存和CPU。 #!/bin/shkeyword=munin-nodecase $1 in(config)cat <<'EOM' graph_title MY_TITLE graph_vlabel (%) graph_args --base 1000 -l 0 graph_scale no graph_category MY_CATEGORY EOM ps aux | grep $keyword | grep -v grep | awk '{print $3,$4}' | while read cpu mem doecho "CPU.label %CPU"echo "CPU.warning 200"echo "CPU.critical 400"echo "CPU.value $cpu"echo "MEM.label %MEM"echo "MEM.warning 20"echo "MEM.critical 50"echo "MEM.value $mem"doneexit 0;; esac ps aux | grep $keyword | grep -v grep | awk '{print $3,$4}' | while read cpu mem doecho "CPU.value $cpu"echo "MEM.value $mem" done 這里沒有使用autoconf參數,其實應該使用的,萬一該進程不存在怎么辦,是吧。其實沒有統計到數值的時候,圖表是空的,所有才說autoconf參數不是必須的。 這個例子與threads不一樣的是,這里收集到的是多條數據。 插件寫好了之后,需要在/etc/munin/plugin-conf 配置一下。加入上面例子以munin-node_cpu 文件名保存。 在/etc/munin/plugin-conf 下新增一個文件,名字可以任意,如munin_info: # cat munin_info [munin-node_cpu] user root 然后重啟munin-node就可以了。 是吧,插件編寫其實很簡單吧。只要輸出的格式符合要求,隨便你使用perl、python還是shell。具體的監控完全可以自定義。譬如我假設有訪問游戲服在線人數的接口,我也可以拿出來監控,當在線人數超過多少的時候給予相關提示。?
開始使用獨立博客了,原文地址在這里:
- munin的安裝和配置
- munin的展示(Nginx)
- munin插件配置和插件編寫
- 本文轉自 Ron Ngai 博客園博客,原文鏈接:?http://www.cnblogs.com/rond/p/3804345.html?,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的[Linux实用工具]munin-node插件配置和插件编写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python之lambda表达式和内置函
- 下一篇: linux下动态库(*.so)的路径问题