读书人

nagios+nginx+php配备监控平台

发布时间: 2013-07-11 15:38:46 作者: rapoo

nagios+nginx+php配置监控平台
Nagios是一款非常流程的监控系统,不但可以监控系统的基本情况,也可以监控应用的情况,我假设你已经安装了nginx和php。并且php也安装了gd支持。
本文中涉及的文件都已经在附件中了。
nagios依赖php和perl,所以先装下perl环境
1.安装fcgi模块

tar -zxvf FCGI-0.73.tar.gzcd FCGI-0.73perl Makefile.PLmakemake install


2.安装fcgi-procmanager模块
tar -zxvf FCGI-ProcManager-0.19.tar.gzcd FCGI-ProcManager-0.19perl Makefile.PLmakemake install


3.安装IO和IO::ALL模块
tar -zxvf IO-1.25.tar.gzcd IO-1.25perl Makefile.PLmakemake install


tar -zxvf IO-All-0.41.tar.gzcd IO-All-0.41perl Makefile.PLmakemake install


4.下载perl脚本,用来产品perl的fast-cgi接口,让nginx以CGI的形式来处理perl
在nginx的目录下解压perl-fcgi.zip,不用做修改
unzip perl-fcgi.zip

修改权限为755
chmod 755 /etc/nginx/conf/perl-fcgi.pl

5.建立一个cgi启动/停止的脚本,用来管理上面的脚本,用户身份是nginx,需要根据自己的实际用户来修改
vi  /etc/nginx/conf/start_perl_cgi.sh#!/bin/bash#set -x#此处需要根据实际情况进行修改dir=/etc/nginx/  stop (){#pkill  -f  $dir/perl-fcgi.plkill $(cat $dir/logs/perl-fcgi.pid)rm $dir/logs/perl-fcgi.pid 2>/dev/nullrm $dir/logs/perl-fcgi.sock 2>/dev/nullecho "stop perl-fcgi done"}  start (){rm $dir/now_start_perl_fcgi.sh 2>/dev/null  chown nginx.nginx $dir/logsecho "$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  chown nginx.nginx $dir/now_start_perl_fcgi.shchmod u+x $dir/now_start_perl_fcgi.sh  sudo -u nginx $dir/now_start_perl_fcgi.shecho "start perl-fcgi done"}  case $1 instop)stop;;start)start;;restart)stopstart;;esac

修改权限为可以运行:
chmod 755 /etc/nginx/conf/start_perl_cgi.sh

启动此脚本:
/etc/nginx/conf/start_perl_cgi.sh start


6.下面开始安装nagios,先创建一个nagios帐号
/usr/sbin/useradd -m -s /sbin/nologin nagios 

创建一个名为nagcmd的用户组,用于从web接口执行外部命令。
将Nagios用户和Nginx用户加入组中。
groupadd nagcmdusermod -a -G nagcmd nagiosusermod -a -G nagcmd nginx

开始正式安装
tar zxvf nagios-3.2.3.tar.gzcd nagios-3.2.3./configure --with-command-group=nagcmdmakemake allmake installmake install-initmake install-configmake install-commandmode

给解释下:
make install 用于安装主要的程序、CGI及HTML文件
make install-init 用于生成init启动脚本
make install-config 用于安装示例配置文件
make install-commandmode 用于设置相应的目录权限

验证是否安装成功,到/usr/local/nagios,看是否存在etc、bin、 sbin、 share、 var这五个目录,如果存在则可以表明程序被正确的安装到系统了。
binNagios执行程序所在目录,其中的nagios文件即为主程序。
etcNagios配置文件位置
sbinNagios cgi文件所在目录,也就是执行外部命令所需文件所在的目录
ShareNagios网页文件所在的目录
varNagios日志文件、spid 等文件所在的目录
var/archives日志归档目录
var/rw用来存放外部命令文件

7.生成nagios的web访问帐号
htpasswd -c /usr/local/nagios/etc/nagiospasswd frady


修改Nagios配置文件,给新增的用户增加访问权限
vi /usr/local/nagios/etc/cgi.cfg
#以下几项中分别加入新增的用户,多用户用逗号分隔。
authorized_for_system_information=nagiosadmin,frady
authorized_for_configuration_information=nagiosadmin,frady
authorized_for_system_commands=nagiosadmin,frady
authorized_for_all_services=nagiosadmin,frady
authorized_for_all_hosts=nagiosadmin,frady
authorized_for_all_service_commands=nagiosadmin,frady
authorized_for_all_host_commands=nagiosadmin,frady

8.编译安装nagios插件
Nagios的功能大部分是由其插件提供的
tar zxvf nagios-plugins-1.4.15.tar.gzcd nagios-plugins-1.4.15./configure --with-nagios-user=nagios --with-nagios-group=nagiosmakemake install 验证Nagios插件是否正确安装

ls /usr/local/nagios/libexec
显示安装的插件文件,即所有的插件都安装在libexec这个目录下。

9.启动nagios
启动前先检查下配置文件是否正确
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 如果没有报错,可以启动Nagios服务
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg 查看Nagios运行状态
/usr/local/nagios/bin/nagiostats

--------------------------------完成了?------------------------------------
没有,只是喘口气,继续
10.安装npre(被监测的服务器上需要安装)
由于nagios只能检测本机的信息,如果需要监测其它服务器,就需要安装npre
Npre通过ssh在服务期间传递数据,所以需要服务器安装ssh相关的包
yum -y install ssl*
yum -y install openssl*

编译安装NRPE
tar zxvf nrpe-2.12.tar.gzcd nrpe-2.12./configuremake allmake install-pluginmake install-daemonmake install-daemon-config

注:监控主机上只需要make install-plugin这一步就可以了。监控机上只要有一个check_nrpe插件用于连接被监控端nrpe的daemon就行了。
启动NRPE
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d 验证NRPE是否正确安装
/usr/local/nagios/libexec/check_nrpe -H localhost
注:如果成功,会返回NRPE的版本号。

修改NRPE配置文件,让监控主机可以访问被监控主机的NRPE。
缺省NRPE配置文件中只允许本机访问NRPE的Daemon
vi /usr/local/nagios/etc/nrpe.cfg

#缺省为127.0.0.1,只能本机访问
allowed_hosts=192.168.1.108 6、重启nrpe的方法
killall nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

11.配置下nginx

server{listen 80;server_name nagios.frady.info;root /usr/local/nagios/share/;#设置网站根目录auth_basic " 119 Nagios Access";auth_basic_user_file /usr/local/nagios/etc/nagiospasswd;location / {index index.Html index.html index.htm index.php;}location ~ \.php$ {root    /usr/local/nagios/share;#include fastcgi_params;#fastcgi.conffastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi.conf;#fastcgi_param SCRIPT_FILENAME /web/mantis$fastcgi_script_name;}location ~ .*\.(cgi|pl)?${gzip off;root   /usr/local/nagios/sbin;rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;fastcgi_pass  unix:/etc/nginx/logs/perl-fcgi.sock;fastcgi_param SCRIPT_FILENAME /usr/local/nagios/sbin$fastcgi_script_name;fastcgi_index index.cgi;fastcgi_read_timeout   60;fastcgi_param  REMOTE_USER        $remote_user;include fastcgi.conf;auth_basic "Nagios Access";auth_basic_user_file /usr/local/nagios/etc/nagiospasswd;fastcgi_param  REMOTE_USER        $remote_user;}location /nagios{alias /usr/local/nagios/share;auth_basic "Nagios Access";auth_basic_user_file /usr/local/nagios/etc/nagiospasswd;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$  {  rewrite ^/nagios/images/(.*) /images/$1 break; expires     30d;  }        location ~ .*\.(js|css)?$  {  rewrite ^/nagios/stylesheets/(.*) /stylesheets/$1 break;expires     1h;  }  }

这次真的装完了
12.启动监视
启动perl
/etc/nginx/start_perl_cgi.sh start
启动nagios
/usr/local/nagios/bin/nagiostats
重启npre
killall nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
重启nginx
/etc/init.d/nginx reload


注:如果你的fastcgi的配置文件中没有配置REMOTE_USER参数,一定要在nginx.conf中加上下面这个fastcgi的参数定义。
fastcgi_param REMOTE_USER $remote_user;
如果没有这个fastcgi的参数定义,Nagios就不能正确验证你的登陆信息。网上大多数文章解决Nginx下Nagios登陆验证失败的方法 都是在Nagios的cgi.cfg配置文件(nagios/etc/cgi.cfg)中关掉验证(use_authentication=0)或设置一 个缺省的登陆用户(default_user_name=test),这两种方法都是不安全的。

读书人网 >操作系统

热点推荐