当前位置:首页 > linux教程 > 列表

linux中使用munin cgi 动态生成图形文件的方法

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-22 23:08:09 浏览: 评论:0 

今天有点时间搞了一下munin cgi了,下面我们来看小编整理的一篇关于linux中使用munin cgi 动态生成图形文件的例子,希望对各位有帮助.

今天又弄了一下munin,发现有些图片出不来.

http://phpfensi.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个地方,会产生重要文件.

  1. [root@node1 www]# ll /etc/nginx/conf.d/ |grep munin   
  2. -rw-r--r-- 1 root root 1427 12月 30 14:11 munin.conf //nginx的配置文件   
  3.    
  4. [root@node1 www]# ll /var/www/cgi-bin/   
  5. 总用量 24   
  6. -rwxr-xr-x 1 root munin 14530 11月 27 03:37 munin-cgi-graph    //perl cgi程序   
  7. -rwxr-xr-x 1 root munin 4245 11月 27 03:37 munin-cgi-html   
  8.    
  9. [root@node1 www]# ll /etc/init.d/ |grep munin-fcgi   
  10. -rwxr-xr-x 1 root root 1123 12月 30 19:22 munin-fcgi-graph     //调用munin-cgi-graph的系统脚本   
  11. -rwxr-xr-x 1 root root 1037 12月 29 15:59 munin-fcgi-html   
  12.    
  13. [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的主配置文件

  1. [root@node1 munin]# cat munin.conf |awk '{if($0 !~ /^$/ && $0 !~ /#/) {print $0}}'   
  2. dbdir /var/lib/munin   
  3. htmldir /var/www/html/munin   
  4. logdir /var/log/munin   
  5. rundir /var/run/munin   
  6. tmpldir /etc/munin/templates   
  7. includedir /etc/munin/conf.d   
  8. graph_strategy cgi       //在此处将cron改为cgi   
  9. cgiurl_graph /munin-cgi/munin-cgi-graph   
  10. html_strategy cron   
  11. [munin]   
  12.  address 127.0.0.1   
  13.  use_node_name yes  

4,修改nginx的munin虚拟机

  1. [root@node1 www]# cat /etc/nginx/conf.d/munin.conf |awk '{if($0 !~ /^$/ && $0 !~ /#/) {print $0}}'   
  2. server {   
  3.  listen 80;   
  4.  server_name munin.51yip.com; //自定义   
  5.  root /var/www/html/munin; //munin html的根目录   
  6.  index index.html index.htm;   
  7.    
  8.  location ^~ /munin-cgi/munin-cgi-graph/ {   
  9.  fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);   
  10.  fastcgi_param PATH_INFO $fastcgi_path_info;   
  11.  fastcgi_pass unix:/var/run/munin/spawn-fcgi-munin-graph.sock;   
  12.  include fastcgi_params;   
  13.  }   
  14. }  

5,启动脚本

  1. [root@node1 www]# cat /etc/init.d/spawn-fcgi-munin-graph |awk '{if($0 !~ /^$/ && $0 !~ /#/) {print $0}}'   
  2. PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin   
  3. NAME=spawn-fcgi-munin-graph   
  4. PID_FILE=/var/run/munin/$NAME.pid   
  5. SOCK_FILE=/var/run/munin/$NAME.sock   
  6. SOCK_USER=tank    //nginx的启动用户   
  7. FCGI_USER=munin   
  8. FCGI_GROUP=munin   
  9. FCGI_WORKERS=2   
  10. DAEMON=/usr/bin/spawn-fcgi   
  11. 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"   
  12. if [ ! -x $DAEMON ]; then   
  13.  echo "File not found or is not executable: $DAEMON!"   
  14.  exit 0   
  15. fi   
  16. status() {   
  17.  if [ ! -r $PID_FILE ]; then   
  18.  return 1   
  19.  fi   
  20.    
  21.  for FCGI_PID in `cat $PID_FILE`; do   
  22.  if [ -z "${FCGI_PID}" ]; then   
  23.  return 1   
  24.  fi   
  25.    
  26.  FCGI_RUNNING=`ps -p ${FCGI_PID} | grep ${FCGI_PID}`   
  27.  if [ -z "${FCGI_RUNNING}" ]; then   
  28.  return 1   
  29.  fi   
  30.  done;   
  31.    
  32.  return 0   
  33. }   
  34.    
  35. start() {   
  36.  if status; then   
  37.  echo "FCGI is already running!"   
  38.  exit 1   
  39.  else   
  40.  $DAEMON $DAEMON_OPTS   
  41.  fi   
  42. }   
  43. stop () {   
  44.  if ! status; then   
  45.  echo "No PID-file at $PID_FILE found or PID not valid. Maybe not running"   
  46.  exit 1   
  47.  fi   
  48.    
  49.  for PID_RUNNING in `cat $PID_FILE`; do   
  50.  kill -9 $PID_RUNNING   
  51.  done   
  52.    
  53.  rm -f $PID_FILE   
  54.    
  55.  rm -f $SOCK_FILE   
  56. }   
  57. case "$1" in   
  58.  start)   
  59.  echo "Starting $NAME: "   
  60.  start   
  61.  echo "... DONE"   
  62.  ;;   
  63.  stop)   
  64.  echo "Stopping $NAME: "   
  65.  stop   
  66.  echo "... DONE"   
  67.  ;;   
  68.  force-reload|restart)   
  69.  echo "Stopping $NAME: "   
  70.  stop   
  71.  echo "Starting $NAME: "   
  72.  start   
  73.  echo "... DONE"   
  74.  ;;   
  75.    
  76.  status)   
  77.  if status; then   
  78.  echo "FCGI is RUNNING"   
  79.  else   
  80.  echo "FCGI is NOT RUNNING"   
  81.  fi   
  82.  ;;   
  83.    
  84.  *)   
  85.  echo "Usage: $0 {start|stop|force-reload|restart|status}"   
  86.  exit 1   
  87.  ;;   
  88. esac   
  89. exit 0   

注意:其实上述脚本就是围绕以下命令写的,也可以说上述脚本与以下命令等同.

  1. # 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会报以下错误,因为这个小问题,费了我好几个小时.

  1. 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,重启相关服务

  1. # /etc/init.d/nginx restart   
  2.    
  3. # /etc/init.d/munin-node restart   
  4.    
  5. # chmod +x /etc/init.d/spawn-fcgi-munin-graph    
  6.    
  7. # /etc/init.d/spawn-fcgi-munin-graph start  

等一会后,久违的图片出来.

Tags: munin cgi linux生成图形

分享到: