LNMP环境下的Nagios搭建

安装开始:

A、安装前准备

安装的机器上必须有一个WEB服务,本文是在Nginx环境上安装的。

下载nagios主程序和相关插件程序包

#mkdir /tmp/nagios/Packages

#cd /tmp/nagios/Packages

#wget http://downloads.sourceforge.net/project/nagios/nagios-3.x/nagios-3.5.0/nagios-3.5.0.tar.gz

#wget http://nagios-plugins.org/download/nagios-plugins-1.4.16.tar.gz

#wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz

安装GD库(Nagios中的statusmap和trends模块必须)

#yum -y install libgd2-noxpm libgd2-noxpm-devel

 

B、Nagios监控端安装

1、创建Nagios用户及组

建立Nagios账号

#/usr/sbin/useradd -m -s /sbin/nologin nagios

2、创建一个名为nagcmd的用户组,用于从web接口执行外部命令。将Nagios用户和Nginx用户加入组中。

#groupadd nagcmd

#usermod -a -G nagcmd nagios

#usermod -a -G nagcmd www

注:上面的www是Nginx用户所属的组,如有不同请自行调整。

 

3、编译安装Nagios

#tar zxvf nagios-3.5.0.tar.gz
#cd nagios

#./configure --prefix=/usr/local/install/nagios --with-group=nagios --with-user=nagios --with-command-group=nagcmd --with-gd-lib=/usr/lib --with-gd-inc=/usr/include
#make all
#make install

#make install-init
#make install-config
#make install-commandmode

注:

make install 用于安装主要的程序、CGI及HTML文件

make install-init 用于生成init启动脚本

make install-config 用于安装示例配置文件

make install-commandmode 用于设置相应的目录权限

修改/usr/local/install/nagios/etc/objects/contacts.cfg

更改nagiosadmin 的联系人定义信息中的 Email 信息为你的 Email 以接收报警内容。

 

验证程序是否被正确安装

切换目录到安装路径,这里是/usr/local/install/nagios,看是否存在etc、bin、 sbin、 share、 var这五个目录

#ls /usr/local/install/nagios/

bin/     etc/     sbin/   share/   var/

注;bin–Nagios执行程序所在目录,其中的nagios文件即为主程序。

etc–Nagios配置文件位置

sbin–Nagioscgi文件所在目录,也就是执行外部命令所需文件所在的目录

Share–Nagios网页文件所在的目录

var–Nagios日志文件、spid 等文件所在的目录

var/archives–日志归档目录

var/rw–用来存放外部命令文件

4、编译并安装Nagios插件

由于Nagios主程序只是提供一个运行框架,其具体监控是靠运行在其下的插件完成的,所以Nagios插件是必须安装的。

#cd  /tmp/nagios/Packages

#tar zxvf nagios-plugins-1.4.16.tar.gz
#cd nagios-plugins-1.4.16

#./configure --prefix=/usr/local/install/nagios --with-nagios-user=nagios --with-nagios-group=nagcmd
#make &&make install

#cd ..

验证Nagios插件是否正确安装

#ls /usr/local/install/nagios/libexec     #显示安装的插件文件

 

5、搭建 Perl 环境

#cd /tmp/nagios/Packages

#yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker

#yum install -y perl-devel perl-CPAN

tar -zxvf FCGI-0.74.tar.gz

cd FCGI-0.74

perl Makefile.PL

make && make install

cd ..

安装FCGI-ProcManager

tar zxvf FCGI-ProcManager-0.24.tar.gz

cd FCGI-ProcManager-0.24

perl Makefile.PL

make && make install

cd ..

安装IO/ALL 模块

tar zxvf IO-1.25.tar.gz

cd IO-1.25

perl Makefile.PL

#make &&make install

#cd ..

tar zxvf IO-All-0.44.tar.gz

cd IO-All-0.44

perl Makefile.PL 

make &&make install

#升级MakeMaker

tar zxvf ExtUtils-MakeMaker-6.62.tar.gz

cd ExtUtils-MakeMaker-6.62

perl Makefile.PL

make &&make install

 

安装perl fcgi 模块

启动perl-cgi

我们使用 unix socket 来监听 perl CGI 请求并解析

cd /usr/local/install/nginx/sbin/

然后把http://addcn.googlecode.com/svn/trunk/conf/nagios/nginx-fcgi.pl

上的那段代码copy下来,新建一个nginx-fcgi.pl放在/usr/local/install/nginx/sbin下

chmod +x nginx-fcgi.pl

启动nginx-fcgi.pl

/usr/local/install/nginx/sbin/nginx-fcgi.pl-l /usr/local/install/nginx/logs/nginx-fcgi.log -pid /usr/local/install/nginx/logs/nginx-fcgi.pid-S /usr/local/install/nginx/logs/nginx-fcgi.sock

 

 

注意上面两行是一条命令.

这时候报错:

-bash: /usr/local/nginx/sbin/nginx-fcgi.pl: /usr/bin/perl^M:bad interpreter: No such file or directory

这个是文件格式的问题.

解决:

vi /usr/local/nginx/sbin/nginx-fcgi.pl

在命令模式下:

:set ff

可以看到格式是 doc

设置格式:

:set ff=unix

然后保存退出

:wq

再次执行上面的

 

添加nginx帐户权限

chown nagios:nagcmd /usr/local/install/nginx/logs/nginx-fcgi.sock

chown nagios:nagcmd /usr/local/install/nginx/logs/nginx-fcgi.pid

chmod 777 /usr/local/install/nginx/logs/nginx-fcgi.pid

chmod 777 /usr/local/install/nginx/logs/nginx-fcgi.sock

如果没有相关权限,访问的时候会报 502 错误.

6、配置NGINX

1)、配置Nagios Web界面登陆帐号及密码

#htpasswd –c /usr/local/install/nagios/etc/nagios passwd test

如果你没有htpasswd(这个工具由Apache安装包所提供),可在线生成需要加密数据。

a)、访问http://www.4webhelp.net/us/password.php生成需要加密数据

b)、创建加密验证文件

#vi /usr/local/install/nagios/etc/nagiospasswd

#加入生成的加密数据,冒号前是用户名,后面是加密后的密码

test:13MmxKsxRF36E


#vi /usr/local/install/nagios/etc/cgi.cfg

#以下几项中分别加入新增的用户,多用户用逗号分隔。

default_user_name=test

authorized_for_system_information=nagiosadmin,test

authorized_for_configuration_information=nagiosadmin,test

authorized_for_system_commands=nagiosadmin,test

authorized_for_all_services=nagiosadmin,test

authorized_for_all_hosts=nagiosadmin,test

authorized_for_all_service_commands=nagiosadmin,test

authorized_for_all_host_commands=nagiosadmin,test

refresh_rate=30        #nagios主页的刷新时间,我设置成30秒自动刷新


2)、修改NGINX配置,以支持WEB方式访问Nagios

将nagios下share文件链接到网站根目录,并改名为nagios。

ln -s /usr/local/install/nagios/share/usr/local/install/nginx/html/nagios

NGINX配置片断如下:

server

        {

     listen       80;

     server_name localhost;

     include  rewrite.conf;

     index  index.html index.htm index.php;

     root html/;

    auth_basic     "NagiosAccess";

    auth_basic_user_file /usr/local/install/nagios/etc/nagiospasswd;

 

location ~ .*\.(php|php5)?$

{

#fastcgi_pass unix:/tmp/php-cgi.sock;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fastcgi.conf;

}

 

location ~.*\.(cgi|pl)?$

{

gzip off;

root /usr/local/install/nagios/sbin;

rewrite ^/nagios/cgi-bin/(.*)\.cgi/$1.cgi break;

fastcgi_pass unix:/usr/local/install/nginx/logs/nginx-fcgi.sock;

fastcgi_param SCRIPT_FILENAME /usr/local/install/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/install/nagios/etc/nagiospasswd;

}

}

7、启动服务

chkconfig --add nagios

chkconfig --level 2345 nagios on

service nagios start

/usr/local/install/nagios/bin/nagios -v /usr/local/install/nagios/etc/nagios.cfg #检验配置

/usr/local/install/nagios/bin/nagiostats #运行状态

 

8、安装NRPE

1)由于Nagios只能监测自己所在的主机的一些本地情况,例如,cpu负载、内存使用、硬盘使用等等。如果想要监测被监控的服务器上的这些本地情况,就要用到NRPE。NRPE(Nagios Remote Plugin Executor)是Nagios的一个扩展,它被用于被监控的服务器上,向Nagios监控平台提供该服务器的一些本地的情况。NRPE可以称为Nagios的Linux客户端。

由于NRPE是通过SSL方式在监控和被监控主机上进行数据传输的,所以必须先安装ssl相关的软件包。

#cd /tmp/nagios/Packages

#tar zxvf nrpe-2.12.tar.gz
#cd nrpe-2.12
#./configure --prefix=/usr/local/install/nagios
#make all
#make install-plugin

注:监控主机上只需要make install-plugin这一步就可以了。监控机上只要有一个check_nrpe插件用于连接被监控端nrpe的daemon就行了。

#ln -s /tmp/nagios/Packages/nrpe-2.12/src/nrpe /usr/local/install/nagios/bin/nrpe

#ln -s /tmp/nagios/Packages/nrpe-2.12/sample-config/nrpe.cfg /usr/local/install/nagios/etc/nrpe.cfg

启动NRPE

#/usr/local/install/nagios/bin/nrpe -c /usr/local/install/nagios/etc/nrpe.cfg -d

验证NRPE是否正确安装

#/usr/local/install/nagios/libexec/check_nrpe -H localhost

注:如果成功,会返回NRPE的版本号.

2)修改NRPE配置文件,让监控主机可以访问被监控主机的NRPE。

缺省NRPE配置文件中只允许本机访问NRPE的Daemon

#vi /usr/local/install/nagios/etc/nrpe.cfg

#缺省为127.0.0.1,只能本机访问

allowed_hosts=127.0.0.1,192.168.1.108

3)在commands.cfg中增加对check_nrpe的定义

# vi /usr/local/nagios/etc/objects/commands.cfg


#'check_nrpe' command definition

define command{
        command_name    check_nrpe         # 定义命令名称为check_nrpe,services.cfg中要使用这个名称.
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$       #这是定义实际运行的插件程序.
        }


4)重启nrpe的方法

killall nrpe

#/usr/local/install/nagios/bin/nrpe -c /usr/local/install/nagios/etc/nrpe.cfg -d

本文转自奔跑在路上博客51CTO博客,原文链接http://blog.51cto.com/qiangsh/1729535如需转载请自行联系原作者


qianghong000

上一篇:Sentinel的常用配置详解


下一篇:LNMP环境下的Nagios搭建