centos6.3下Lnmp搭建nagios

分类:CentOS教程 阅读:43816 次

环境介绍:

系统:centos6.3 mini X64

IP:172.16.1.200

集成环境:Lnmp

—————————————————————————————-

安装开始:

1、安装FCGI模块

#yum install -y perl-devel

#wget http://search.cpan.org/CPAN/authors/id/F/FL/FLORA/FCGI-0.73.tar.gz

#tar xvzf FCGI-0.73.tar.gz

#cd FCGI-0.73

#perl Makefile.PL

#make

#make install

2、安装FCGI-ProcManager模块

#wget http://mirrors.ustc.edu.cn/CPAN/authors/id/B/BO/BOBTFISH/FCGI-ProcManager-0.24.tar.gz

#tar xvzf FCGI-ProcManager-0.19.tar.gz

#cd FCGI-ProcManager-0.19

#perl Makefile.PL

#make && make install

3、安装IO和IO::ALL模块

#wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/IO-1.25.tar.gz

#tar zxvf IO-1.25.tar.gz

#cd IO-1.25

#perl Makefile.PL

#make

#make install

#wgethttp://cpan.metacpan.org/authors/id/I/IN/INGY/IO-All-0.44.tar.gz

#tar zxvf IO-All-0.41.tar.gz

#cd IO-All-0.41

#perl Makefile.PL

#make

#make install

4、下载Perl脚本

这个脚本的目的就是产生一个PERL的FastCGI接口,让Nginx可以以CGI方式处理Perl。

#wget http://www.chlinux.net/perl-fcgi.zip

#unzip perl-fcgi.zip

#cp perl-fcgi.pl /usr/local/nginx/ 注:建议把这个脚本放在Nginx安装目录。

修改脚本权限

#chmod 755 /usr/local/nginx/perl-fcgi.pl

5、建立一个CGI启动/停止脚本

这个SHELL脚本只是为了方便管理上面的Perl脚本。脚本中的nobody为nginx的运行用户,请据自己的实际情况调整。

注意事项:不能用root用户执行(会提示). 要用与Nginx相同身份的用户执行。否则可能会在Nginx Log中提示 Permision Denied。

#vi /usr/local/nginx/start_perl_cgi.sh

#!/bin/bash

#set -x

dir=/usr/local/nginx/

stop ()

{

#pkill -f $dir/perl-fcgi.pl

kill $(cat $dir/logs/perl-fcgi.pid)

rm $dir/logs/perl-fcgi.pid 2>/dev/null

rm $dir/logs/perl-fcgi.sock 2>/dev/null

echo “stop perl-fcgi done”

}

start ()

{

rm $dir/now_start_perl_fcgi.sh 2>/dev/null

chown www.www $dir/logs

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

chown www.www $dir/now_start_perl_fcgi.sh

chmod u+x $dir/now_start_perl_fcgi.sh

sudo -u nobody $dir/now_start_perl_fcgi.sh

echo “start perl-fcgi done”

}

case $1 in

stop)

stop

;;

start)

start

;;

restart)

stop

start

;;

esac

保存退出

修改SHELL脚本权限

#chmod 755 /usr/local/nginx/start_perl_cgi.sh

启动脚本

#/usr/local/nginx/start_perl_cgi.sh start

正常情况下在/usr/local/nginx/logs下生成perl-fcgi.sock这个文件,如果没有生成,请检查下上面的步聚。

二、安装Nagios

A、安装前准备

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

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

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

#wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.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.2.3.tar.gz
#cd nagios-3.2.3
#./configure ?prefix=/usr/local/nagios ?with-command-group=nagcmd
#make all
#make install
#make install-config
#make install-commandmode
#make install-webconf
#cd ..

  • 注:
  1. make install 用于安装主要的程序、CGI及HTML文件
  2. make install-init 用于生成init启动脚本
  3. make install-config 用于安装示例配置文件
  4. make install-commandmode 用于设置相应的目录权限
  5. make install-webconf 用于安装Apache配置文件

4、验证程序是否被正确安装

切换目录到安装路径,这里是/usr/local/nagios,看是否存在etc、bin、 sbin、 share、 var这五个目录,如果存在则可以表明程序被正确的安装到系统了。

#ls /usr/local/nagios/

bin/ etc/ sbin/ share/ var/

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

etc?Nagios配置文件位置

sbin?Nagios cgi文件所在目录,也就是执行外部命令所需文件所在的目录

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

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

var/archives?日志归档目录

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

5、配置NGINX

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

#htpasswd -c /usr/local/nagios/etc/nagiospasswd test

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

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

b)、创建加密验证文件

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

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

test:25JB.R7mXY96o

修改Nagios配置文件,给新增的用户增加访问权限

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

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

  1. authorized_for_system_information=nagiosadmin,test
  2. authorized_for_configuration_information=nagiosadmin,test
  3. authorized_for_system_commands=nagiosadmin,test
  4. authorized_for_all_services=nagiosadmin,test
  5. authorized_for_all_hosts=nagiosadmin,test
  6. authorized_for_all_service_commands=nagiosadmin,test
  7. authorized_for_all_host_commands=nagiosadmin,test

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

因为我是多个虚拟主机绑定域名,所以server_name是域名,如果单个主机直接写IP就可以了。

NGINX配置片断如下:

  1. server
  2. {
  3. listen 80;
  4. server_name nagios.xx.com;
  5. index index.html index.htm index.php;
  6. root /usr/local/nagios/share;
  7. auth_basic “Nagios Access”;
  8. auth_basic_user_file /usr/local/nagios/etc/nagiospasswd;
  9. location ~ .*\.(php|php5)?$
  10. {
  11. #fastcgi_pass unix:/tmp/php-cgi.sock;
  12. fastcgi_pass 127.0.0.1:9000;
  13. fastcgi_index index.php;
  14. include fcgi.conf;
  15. }
  16. location ~ .*\.(cgi|pl)?$
  17. {
  18. gzip off;
  19. root /usr/local/nagios/sbin;
  20. rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;
  21. fastcgi_pass unix:/usr/local/nginx/logs/perl-fcgi.sock;
  22. fastcgi_param SCRIPT_FILENAME /usr/local/nagios/sbin$fastcgi_script_name;
  23. fastcgi_index index.cgi;
  24. fastcgi_read_timeout 60;
  25. fastcgi_param REMOTE_USER $remote_user;
  26. include fcgi.conf;
  27. auth_basic “Nagios Access”;
  28. auth_basic_user_file /usr/local/nagios/etc/nagiospasswd;
  29. }
  30. location /nagios
  31. {
  32. alias /usr/local/nagios/share;
  33. auth_basic “Nagios Access”;
  34. auth_basic_user_file /usr/local/nagios/etc/nagiospasswd;
  35. }
  36. }

6、编译并安装Nagios插件

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

#tar zxvf nagios-plugins-1.4.15.tar.gz
#cd nagios-plugins-1.4.15
#./configure ?prefix=/usr/local/nagios ?with-nagios-user=nagios ?with-nagios-group=nagios
#make &&make install

验证Nagios插件是否正确安装

#ls /usr/local/nagios/libexec

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

7、启动服务

启动前先检查下配置文件是否正确

#/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

8、安装NRPE

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

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

编译安装NRPE

#tar zxvf nrpe-2.12.tar.gz
#cd nrpe-2.12
#./configure
#make all
#make install-plugin
#make install-daemon
#make 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的版本号.

5、修改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

配置nagios

二、定义主机和主机组

1、建立一个host.cfg用来定义主机

Host.cfg文件内容如下

define host{

  • use linux-server
  • host_name WEB1 #主机名随便取,建议取一个便于记忆的名字,主机名后面最后别有空格
  • alias WEB1 #主机别名
  • address 192.168.1.51 #主机IP地址,我现在就暂时填写本机的IP
  • check_command check-host-alive #检查命令,此命令来自commands.cfg,用来监控主机是否存活
  • max_check_attempts 5 #检查失败后重试的次数
  • check_period 24×7 #检查的时间段24×7,同样来自于我们之前在timeperiods.cfg中定义的
  • contact_groups sagroup #联系人组,上面在contactgroups.cfg中定义的sagroup
  • notification_interval 10 #提醒的间隔,每隔10秒提醒一次
  • n
  • otification_period 24×7 #提醒的周期, 24×7,同样来自于我们之前在timeperiods.cfg中定义的
  • notification_options d,u,r #指定什么情况下提醒,具体含义见之前contacts.cfg部分的介绍
  • }

通过简单的复制修改就能定义多个主机了。

可以建一个hostgroup.cfg文件来定义主机组

文件内容如下

define hostgroup{

  • hostgroup_name DB-servers #主机组名,可以随意
  • alias DB Server #服务器别名
  • members DB1,DB2 #成员
  • }

2、建立一个service.cfg文件来定义服务

service.cfg文件内容如下

define service{

  • use local-service,srv-pnp
  • host_name WEB1 #主机名,这主机名必须在host.cfg文件里有定义
  • service_description Current disk #服务说明
  • check_command check_local_disk!20%!10%!/ #服务检查命令,这个命令来自command.cfg文件
  • max_check_attempts 5 #最多检查次数
  • check_period 24×7 #服务检查周期
  • notification_interval 10 #通知时间间隔
  • normal_check_interval 1 #正常检查服务的时间间隔
  • retry_check_interval 1 #重新检查时间间隔
  • notification_period 24×7 #通知时间段
  • notification_options w,u,c,r,d #服务在什么状态下通知,d = 状态为 DOWN , u = 状态为 UNREACHABLE , r = 状态恢复为 OK , f = flapping,
  • contact_groups admins #联系人组
  • }

定义联系人,设置联系人的文件名是contacts.cfg 系统默认就存在,我们只要修改就行了文件内容如下

  1. define contact{
  2. contact_name nagiosadmin #联系人名
  3. use generic-contact
  4. alias Nagios Admin #联系人别名,
  5. email nagios@localhost #联系人的邮件,nagios就是用这个邮件报警的,可以设置多个由逗号分开
  6. }

nrpe的主配置文件是/usr/local/nagios/etc/nrpe.cfg

在command.cfg文件中定义nrpe的命令

  1. define command{
  2. command_name check_nrpe
  3. command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
  4. }

要监控远程主机的服务需要在被监控机的nrpe主配置文件中定义。然后在监控服务器的command.cfg文件中定义命令。操作内容如下:

被监控机的定义

  1. command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
  2. #监控CPU的负载
  3. command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/sda2
  4. #监控硬盘第二分区的使用情况
  5. command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
  6. #监控僵尸进程
  7. command[check_local_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200 -P
  8. #监控活动进程
  9. command[check_mysql]=/usr/local/nagios/libexec/check_mysql -H localhost -u mysql用户名 ?p mysql密码 ?d 需要监控的数据库
  10. #监控mysql数据库。主要监控mysql的开启数据,每秒的查询,慢查询,刷新的表,打开的表。注mysql的用户只要给select权限就可以
  11. command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
  12. #监控交换分区的使用情况,超过20%就报 w 超过10%就报 c
  13. command[check_nginx]=/usr/local/nagios/libexec/check_nginx.sh ?url www.chlinux.net/index.php
  14. #监控nginx的状态。可以监控403.502等等
  15. command[check_traffic]=/usr/local/nagios/libexec/check_traffic.sh -V 2c -C public -H 127.0.0.1 -I 2 -w 300,300 -c 500,600 -K ?B
  16. #监控网卡流量

被监控机配置好后需要重启nrpe

nrpe重启方法

killall -9 nrpe

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

[root@localhost ~]# /usr/local/nagios/libexec/check_nrpe -H localhost

NRPE v2.12 检查是否有类似的输出,如果有就是启动成功,没有就检查配置是否正确

监控机的配置

在service.cfg文件配置如下

  1. define service{
  2. use local-service,srv-pnp
  3. host_name WEB1
  4. service_description Root Partition
  5. check_command check_nrpe!check_disk
  6. check_period 24×7
  7. max_check_attempts 4
  8. normal_check_interval 1
  9. retry_check_interval 1
  10. contact_groups admins
  11. notification_interval 10
  12. notification_period 24×7
  13. notification_options w,u,c,r
  14. }

服务端配置完后需要重启nagios服务

三、安装pnp

Pnp是一个绘图工具,需要依赖rrdtool软件包

  1. wget http://pkgs.fedoraproject.org/repo/pkgs/pnp4nagios/pnp-0.4.13.tar.gz/20a96f81edba29dcd21215bde4af8b57/pnp-0.4.13.tar.gz
  2. tar zxvf pnp-0.4.13.tar.gz
  3. cd pnp-0.4.13
  4. ./configure ?with-nagios-user=nagios ?with-nagios-group=nagios ?with-perfdata-dir=/usr/local/nagios/share/perfdata ?with-rrdtool
  5. make all
  6. make install
  7. make install-config
  8. make install-init
  9. cd /usr/local/nagios/etc/pnp
  10. cp npcd.cfg-sample npcd.cfg
  11. cp rra.cfg-sample rra.cfg
  12. cp process_perfdata.cfg-sample process_perfdata.cfg
  13. chown nagios.nagios /usr/local/nagios/etc/pnp/ -R

修改nagios的主配置文件 /usr/local/nagios/etc/nagios.cfg

#打开注释项:

host_perfdata_command=process-host-perfdata

service_perfdata_command=process-service-perfdata

process_performance_data=1

5.修改 commands.cfg

cd /usr/local/nagios/etc/objects

vim commands.cfg

##添加

# ‘process-host-perfdata’ command definition

  1. define command{
  2. command_name process-host-perfdata
  3. command_line /usr/local/nagios/libexec/process_perfdata.pl
  4. }
  5. define command{
  6. command_name process-service-perfdata
  7. command_line /usr/local/nagios/libexec/process_perfdata.pl
  8. }

6. 添加小太阳模版,镶嵌在nagios页面上。

vim templates.cfg

## 在最后添加

  1. define host {
  2. name host-pnp
  3. action_url /pnp/index.php?host=$HOSTNAME$
  4. register 0
  5. }
  6. define service {
  7. name srv-pnp
  8. action_url /pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
  9. register 0
  10. }

7,修改 hosts.cfg 和 services.cfg

cd /usr/local/nagios/etc/eric.com

#修改hosts.cfg

  1. vim hosts.cfg
  2. define host{
  3. use linux-server,host-pnp
  4. host_name eric.com
  5. alias eric.com
  6. address 192.168.6.101
  7. }

# 修改 services.cfg

  1. define service{
  2. use local-service,srv-pnp
  3. host_name eric.com
  4. service_description PING
  5. check_command check_ping!100.0,20%!500.0,60%
  6. }

8.重启 nagios 服务

/etc/init.d/nagios restart