今天有點時間搞了一下munin cgi了,下面我們來看小編整理的一篇關于linux中使用munin cgi 動態生成圖形文件的例子,希望對各位有幫助.
今天又弄了一下munin,發現有些圖片出不來.
http://Vevb.com/static/dynazoom.html?cgiurl_graph=/munin-cgi/munin-cgi-graph&plugin_name=xxxxxx 加載圖片的地方報404錯誤.
1,安裝munin
請參考:linux munin 服務器監控 安裝配置
2,安裝munin-nginx
# yum install munin-nginx spawn-fcgi
安裝完了以后,在4個地方,會產生重要文件.
- [root@node1 www]# ll /etc/nginx/conf.d/ |grep munin
- -rw-r--r-- 1 root root 1427 12月 30 14:11 munin.conf //nginx的配置文件
- [root@node1 www]# ll /var/www/cgi-bin/
- 總用量 24
- -rwxr-xr-x 1 root munin 14530 11月 27 03:37 munin-cgi-graph //perl cgi程序
- -rwxr-xr-x 1 root munin 4245 11月 27 03:37 munin-cgi-html
- [root@node1 www]# ll /etc/init.d/ |grep munin-fcgi
- -rwxr-xr-x 1 root root 1123 12月 30 19:22 munin-fcgi-graph //調用munin-cgi-graph的系統腳本
- -rwxr-xr-x 1 root root 1037 12月 29 15:59 munin-fcgi-html
- [root@node1 www]# whereis spawn-fcgi //perl程序的承載器
spawn-fcgi:/usr/bin/spawn-fcgi /usr/share/man/man1/spawn-fcgi.1.gz
在這里注意,/etc/init.d/munin-fcgi-graph,這個文件啟動munin-cgi-graph,老是有問題,所以從官方網站找到了啟動腳本.
3,修改munin.conf的主配置文件
- [root@node1 munin]# cat munin.conf |awk '{if($0 !~ /^$/ && $0 !~ /#/) {print $0}}'
- dbdir /var/lib/munin
- htmldir /var/www/html/munin
- logdir /var/log/munin
- rundir /var/run/munin
- tmpldir /etc/munin/templates
- includedir /etc/munin/conf.d
- graph_strategy cgi //在此處將cron改為cgi
- cgiurl_graph /munin-cgi/munin-cgi-graph
- html_strategy cron
- [munin]
- address 127.0.0.1
- use_node_name yes
4,修改nginx的munin虛擬機
- [root@node1 www]# cat /etc/nginx/conf.d/munin.conf |awk '{if($0 !~ /^$/ && $0 !~ /#/) {print $0}}'
- server {
- listen 80;
- server_name munin.51yip.com; //自定義
- root /var/www/html/munin; //munin html的根目錄
- index index.html index.htm;
- location ^~ /munin-cgi/munin-cgi-graph/ {
- fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);
- fastcgi_param PATH_INFO $fastcgi_path_info;
- fastcgi_pass unix:/var/run/munin/spawn-fcgi-munin-graph.sock;
- include fastcgi_params;
- }
- }
5,啟動腳本
- [root@node1 www]# cat /etc/init.d/spawn-fcgi-munin-graph |awk '{if($0 !~ /^$/ && $0 !~ /#/) {print $0}}'
- PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
- NAME=spawn-fcgi-munin-graph
- PID_FILE=/var/run/munin/$NAME.pid
- SOCK_FILE=/var/run/munin/$NAME.sock
- SOCK_USER=tank //nginx的啟動用戶
- FCGI_USER=munin
- FCGI_GROUP=munin
- FCGI_WORKERS=2
- DAEMON=/usr/bin/spawn-fcgi
- DAEMON_OPTS="-s $SOCK_FILE -F $FCGI_WORKERS -U $SOCK_USER -u $FCGI_USER -g $FCGI_GROUP -P $PID_FILE -- /var/www/cgi-bin/munin-cgi-graph"
- if [ ! -x $DAEMON ]; then
- echo "File not found or is not executable: $DAEMON!"
- exit 0
- fi
- status() {
- if [ ! -r $PID_FILE ]; then
- return 1
- fi
- for FCGI_PID in `cat $PID_FILE`; do
- if [ -z "${FCGI_PID}" ]; then
- return 1
- fi
- FCGI_RUNNING=`ps -p ${FCGI_PID} | grep ${FCGI_PID}`
- if [ -z "${FCGI_RUNNING}" ]; then
- return 1
- fi
- done;
- return 0
- }
- start() {
- if status; then
- echo "FCGI is already running!"
- exit 1
- else
- $DAEMON $DAEMON_OPTS
- fi
- }
- stop () {
- if ! status; then
- echo "No PID-file at $PID_FILE found or PID not valid. Maybe not running"
- exit 1
- fi
- for PID_RUNNING in `cat $PID_FILE`; do
- kill -9 $PID_RUNNING
- done
- rm -f $PID_FILE
- rm -f $SOCK_FILE
- }
- case "$1" in
- start)
- echo "Starting $NAME: "
- start
- echo "... DONE"
- ;;
- stop)
- echo "Stopping $NAME: "
- stop
- echo "... DONE"
- ;;
- force-reload|restart)
- echo "Stopping $NAME: "
- stop
- echo "Starting $NAME: "
- start
- echo "... DONE"
- ;;
- status)
- if status; then
- echo "FCGI is RUNNING"
- else
- echo "FCGI is NOT RUNNING"
- fi
- ;;
- *)
- echo "Usage: $0 {start|stop|force-reload|restart|status}"
- exit 1
- ;;
- esac
- exit 0
注意:其實上述腳本就是圍繞以下命令寫的,也可以說上述腳本與以下命令等同.
- # spawn-fcgi -s /var/run/munin/spawn-fcgi-munin-graph.sock -F 2 -U tank -u munin -g munin /var/www/cgi-bin/munin-cgi-graph
6,權限設置
# chown tank:munin -R /var/www/cgi-bin/ //tank為nginx啟動用戶
這一步,非常非常重要,這一步不做的話,圖片出不來,nginx會報以下錯誤,因為這個小問題,費了我好幾個小時.
- 2014/12/29 18:20:56 [error] 12263#0: *1 connect() to unix:/var/run/munin/spawn-fcgi-munin-graph.sock failed (111: Connection refused) while connecting to upstream,
7,重啟相關服務
- # /etc/init.d/nginx restart
- # /etc/init.d/munin-node restart
- # chmod +x /etc/init.d/spawn-fcgi-munin-graph
- # /etc/init.d/spawn-fcgi-munin-graph start
等一會后,久違的圖片出來.
新聞熱點
疑難解答