1. 首页
  2. 系统运维
  3. Nagios

nagios的web页面从apache到nginx的迁移步骤

Nginx和Nagios的安装过程略。由于Nginx不支持Perl的CGI,所以先需要来搭建Perl环境。让Nginx支持Perl的CGI方法有好几种,基本原理都是通过Perl的FCGI模块实现。

  1. yum -y install perl-devel

安装FCGI模块

  1. wget http://search.cpan.org/CPAN/authors/id/F/FL/FLORA/FCGI-0.73.tar.gz
  2. tar xvzf FCGI-0.73.tar.gz
  3. cd FCGI-0.73
  4. perl Makefile.PL
  5. make && make install
  6. cd ../

安装FCGI-ProcManager模块

  1. wget http://search.cpan.org/CPAN/authors/id/G/GB/GBJK/FCGI-ProcManager-0.19.tar.gz
  2. tar xvzf FCGI-ProcManager-0.19.tar.gz
  3. cd FCGI-ProcManager-0.19
  4. perl Makefile.PL
  5. make && make install
  6. cd ../

安装IO perl-IO-String IO::ALL模块

  1. #安装IO
  2. wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/IO-1.25.tar.gz
  3. tar zxvf IO-1.25.tar.gz
  4. cd IO-1.25
  5. perl Makefile.PL
  6. make && make install
  7. cd ../
  8. #安装 perl-IO-String
  9. yum install perl-IO-String
  10. #安装IO::ALL模块
  11. wget http://search.cpan.org/CPAN/authors/id/I/IN/INGY/IO-All-0.87.tar.gz
  12. tar zxvf IO-All-0.87.tar.gz
  13. cd IO-All-0.87
  14. perl Makefile.PL
  15. make && make install
  16. cd ../

下载Perl脚本

  1. wget http://download.chekiang.info/blog/perl-fcgi.zip
  2. unzip perl-fcgi.zip
  3. cp  perl-fcgi.pl /usr/local/nginx/
  4. #修改脚本权限
  5. chmod 755 /usr/local/nginx/perl-fcgi.pl

建立一个CGI启动/停止脚本
这个SHELL脚本只是为了方便管理上面的Perl脚本。脚本中的www为nginx的运行用户,请据自己的实际情况调整。
注意事项:不能用root用户执行(会提示). 要用与Nginx相同身份的用户执行。否则可能会在Nginx Log中提示 Permision Denied。

  1. vim /usr/local/nginx/start_perl_cgi.sh
  2. #!/bin/bash
  3. dir=/usr/local/nginx/
  4. stop ()
  5. {
  6. #pkill  -f  $dir/perl-fcgi.pl
  7. kill $(cat $dir/logs/perl-fcgi.pid)
  8. rm $dir/logs/perl-fcgi.pid 2>/dev/null
  9. rm $dir/logs/perl-fcgi.sock 2>/dev/null
  10. echo “stop perl-fcgi done”
  11. }
  12. start ()
  13. {
  14. rm $dir/now_start_perl_fcgi.sh 2>/dev/null
  15. chown www.www $dir/logs
  16. echo “$dir/perl-fcgi.pl -l $dir/logs/perl-fcgi.log -pid $dir/logs/perl-fcgi.pid -S $dir/logs/perl-fcgi.sock” >>$dir/now_start_perl_fcgi.sh
  17. chown www.www $dir/now_start_perl_fcgi.sh
  18. chmod u+x $dir/now_start_perl_fcgi.sh
  19. sudo -u www $dir/now_start_perl_fcgi.sh
  20. echo “start perl-fcgi done”
  21. }
  22. case $1 in
  23. stop)
  24. stop
  25. ;;
  26. start)
  27. start
  28. ;;
  29. restart)
  30. stop
  31. start
  32. ;;
  33. esac
  34. #修改脚本权限
  35. chmod 755 /usr/local/nginx/start_perl_cgi.sh
  36. #启动脚本
  37. /usr/local/nginx/start_perl_cgi.sh start
  38. 正常情况下在/usr/local/webserver/nginx/logs下生成perl-fcgi.sock这个文件,如果没有生成,请检查下上面的步聚
  1. #启动
  2. /usr/local/nginx/start_perl_cgi.sh start

配置NGINX
Nagios Web界面登陆帐号及密码

  1. htpasswd -c /usr/local/nagios/etc/nagiospasswd mike

如果你没有htpasswd(这个工具由Apache安装包所提供),可在线生成,地址:http://www.4webhelp.net/us/password.php
修改Nagios配置文件,给新增的用户增加访问权限

  1. vi /usr/local/nagios/etc/cgi.cfg
  2. #以下几项中分别加入新增的用户,多用户用逗号分隔。
  3. authorized_for_system_information=nagiosadmin,mike
  4. authorized_for_configuration_information=nagiosadmin,mike
  5. authorized_for_system_commands=nagiosadmin,mike
  6. authorized_for_all_services=nagiosadmin,mike
  7. authorized_for_all_hosts=nagiosadmin,mike
  8. authorized_for_all_service_commands=nagiosadmin,mike
  9. authorized_for_all_host_commands=nagiosadmin,mike

nginx配置如下

  1. #nagios
  2.                 location ~ .*\.(cgi|pl)?$ {
  3.                         gzip off;
  4.                         root   /usr/local/nagios/sbin;
  5.                         rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;
  6.                         fastcgi_pass  unix:/usr/local/nginx/logs/perl-fcgi.sock;
  7.                         fastcgi_param SCRIPT_FILENAME /usr/local/nagios/sbin$fastcgi_script_name;
  8.                         fastcgi_index index.cgi;
  9.                         fastcgi_read_timeout   60;
  10.                         fastcgi_param  REMOTE_USER        $remote_user;
  11.                         include fastcgi.conf;
  12.                         auth_basic “Nagios Access”;
  13.                         auth_basic_user_file /usr/local/nagios/etc/htpasswd.users;
  14.                 }
  15.                 location ~ ^(/nagios.*\.php)(.*)$ {
  16.                         root  /home/wwwroot/monitor.nbhao.org;
  17.                         # comment try_files $uri =404; to enable pathinfo
  18.                         try_files $uri =404;
  19.                         fastcgi_pass  unix:/tmp/php56-cgi.sock;
  20.                         fastcgi_index index.php;
  21.                         include fastcgi.conf;
  22.                         #include pathinfo.conf;
  23.                 }

pnp4nagios配置如下

  1. #PNP4Nagios
  2.                 location ~ ^(/pnp4nagios.*\.php)(.*)$ {
  3.                         root  /home/wwwroot/monitor.nbhao.org;
  4.                         if ( $uri !~ /pnp4nagios/index.php(.*)) {
  5.                                 rewrite ^/pnp4nagios/(.*)$ /$1;
  6.                                 break;
  7.                         }
  8.                         fastcgi_pass  unix:/tmp/php53-cgi.sock;
  9.                         fastcgi_index index.php;
  10.                         include fastcgi.conf;
  11.                         # this splits out the trailing path
  12.                         # eg index.php?host -> $fastcgi_path_info == ‘host’
  13.                         fastcgi_split_path_info ^(.+\.php)(.*)$;
  14.                         fastcgi_param PATH_INFO $fastcgi_path_info;
  15.                         fastcgi_param SCRIPT_FILENAME /usr/local/pnp4nagios/share/index.php;
  16.                         auth_basic “Nagios Access”;
  17.                         auth_basic_user_file /usr/local/nagios/etc/htpasswd.users;
  18.                 }

特别注意pnp4nagios安装的时候需要确保php.ini中的disable_functions没有proc_open,否则会报Undefined variable的错误。找了好久才发现是这个问题。。。

联系我们

0574-55011290

QQ:248687950

邮件:admin@nbhao.org

工作时间:周一至周五,9:00-18:00,节假日休息

QR code