Nginx下构建nagios监控平台Nagios+nrpe+nagios-plugins+pnp安装文档

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

系统环境:CentOS release 5.8 x86_64

一:监控端安装

1,安装perl模块:

(1)、先安装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 
  6. make install 

(2)、安装FCGI-ProcManager模块

 
  1. wget http://mirrors.ustc.edu.cn/CPAN/authors/id/B/BO/BOBTFISH/FCGI-ProcManager-0.24.tar.gz 
  2. tar xvzf FCGI-ProcManager-0.19.tar.gz 
  3. cd FCGI-ProcManager-0.19 
  4. perl Makefile.PL 
  5. make 
  6. make install 

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

 
  1. wget http://search.cpan.org/CPAN/authors/id/G/GB/GBARR/IO-1.25.tar.gz 
  2. tar zxvf IO-1.25.tar.gz 
  3. cd IO-1.25 
  4. perl Makefile.PL 
  5. make 
  6. make install 
  7. wget http://mirrors.xmu.edu.cn/CPAN/authors/id/I/IN/INGY/IO-All-0.44.tar.gz 
  8. tar zxvf IO-All-0.41.tar.gz 
  9. cd IO-All-0.41 
  10. perl Makefile.PL 
  11. make 
  12. make install 

(4)、下载Perl脚本

这个脚本的目的就是产生一个PERL的FastCGI接口,让Nginx可以以CGI方式处理Perl。注:建议把这个脚本放在Nginx安装目录,修改脚本权限为777

 
  1. http://www.chlinux.net/perl-fcgi.zip 
  2. unzip perl-fcgi.zip 
  3. cp perl-fcgi.pl /usr/local/nginx/ 
  4. chmod 755 /usr/local/nginx/perl-fcgi.pl 

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

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

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

 
  1. vi /usr/local/nginx/start_perl_cgi.sh 
  2. #!/bin/bash 
  3. #set -x 
  4. dir=/usr/local/ nginx/ 
  5. stop () 
  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. start () 
  12. rm $dir/now_start_perl_fcgi.sh 2>/dev/null 
  13. chown nobody.nobody $dir/logs 
  14. 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 
  15. chown nobody.nobody $dir/now_start_perl_fcgi.sh 
  16. chmod u+x $dir/now_start_perl_fcgi.sh 
  17. sudo -u nobody $dir/now_start_perl_fcgi.sh 
  18. echo "start perl-fcgi done" 
  19. case $1 in 
  20. stop) 
  21. stop 
  22. ;; 
  23. start) 
  24. start 
  25. ;; 
  26. restart) 
  27. stop 
  28. start 
  29. ;; 
  30. 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这个文件,如果没有生成,请检查下上面的步聚。

2、安装Nagios和相关插件

(1)、安装前准备

安装的机器上必须有一个WEB服务,本文是在Nginx环境上安装的。下载nagios主程序和相关插件程序包

 
  1. wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz 
  2. wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz 
  3. wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz 

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

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

(2)、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

 
  1. tar zxvf nagios-3.2.3.tar.gz 
  2. cd nagios-3.2.3 
  3. ./configure --with-command-group=nagcmd 
  4. make 
  5. make all 
  6. make install 
  7. make install-init 
  8. make install-config 
  9. make install-commandmode 
  10. #这里是在Nginx下运行Nagios,这一步就不用做了 
  11. make install-webconf 
  12. cd .. 
  13. 注: 
  14. make install 用于安装主要的程序、CGI及HTML文件 
  15. make install-init 用于生成init启动脚本 
  16. make install-config 用于安装示例配置文件 
  17. make install-commandmode 用于设置相应的目录权限 
  18. 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

方法一:以http://ip方式访问,NGINX配置片断如下

 
  1. server 
  2.   { 
  3.     listen       80; 
  4.     server_name  192.168.1.51; 
  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插件是必须安装的。

 
  1. tar zxvf nagios-plugins-1.4.15.tar.gz 
  2. cd nagios-plugins-1.4.15 
  3. ./configure --with-nagios-user=nagios --with-nagios-group=nagios 
  4. make 
  5. 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

 
  1. tar zxvf nrpe-2.12.tar.gz 
  2. cd nrpe-2.12 
  3. ./configure 
  4. make all 
  5. make install-plugin 
  6. make install-daemon 
  7. 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的版本号.

三、Nagios被控端安装配置

1、创建Nagios用户及组

建立Nagios账号

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

2、编译并安装Nagios插件

tar zxvf nagios-plugins-1.4.15.tar.gz

cd nagios-plugins-1.4.15

./configure --with-nagios-user=nagios --with-nagios-group=nagios

make

make install

cd ..

验证程序是否被正确安装:

ls /usr/local/nagios/libexec

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

3、安装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

cd ..

4、启动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

5、配置nagios

定义主机和主机组

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

Host.cfg文件内容如下

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

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

可以建一个hostgroup.cfg文件来定义主机组文件内容如下:

 
  1. define hostgroup{ 
  2.      hostgroup_name     DB-servers 
  3. #主机组名,可以随意 
  4.      alias          DB Server 
  5.      members          DB1,DB2 
  6. #成员 

2、建立一个service.cfg文件来定义服务,service.cfg文件内容如下:

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

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

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

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

被监控机配置好后需要重启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            24x7 
  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     24x7 
  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

#打开注释项:

 
  1. host_perfdata_command=process-host-perfdata 
  2. service_perfdata_command=process-service-perfdata 
  3. process_performance_data=1 

5.修改 commands.cfg

 
  1. cd /usr/local/nagios/etc/objects 
  2. vim commands.cfg 
  3. ##添加 
  4. 'process-host-perfdata' command definition 
  5. define command{ 
  6.         command_name    process-host-perfdata 
  7.         command_line    /usr/local/nagios/libexec/process_perfdata.pl 
  8.         } 
  9. define command{ 
  10.         command_name    process-service-perfdata 
  11.         command_line    /usr/local/nagios/libexec/process_perfdata.pl 
  12.         } 

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

 
  1. define host { 
  2. name       host-pnp 
  3. action_url /pnp/index.php?host=$HOSTNAME$ 
  4. register   0 
  5. define service { 
  6. name       srv-pnp 
  7. action_url /pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$ 
  8. register   0 
  9. 7,修改 hosts.cfg 和 services.cfg 
  10. cd /usr/local/nagios/etc/eric.com 
  11. #修改hosts.cfg 
  12. vim hosts.cfg 
  13. define host{ 
  14.         use                     linux-server,host-pnp  
  15.         host_name         eric.com 
  16.         alias                     eric.com 
  17.         address                 192.168.6.101 
  18.         } 
  19.  
  20.  
  21. # 修改 services.cfg 
  22. define service{ 
  23.         use                                     local-service,srv-pnp      
  24.         host_name                       eric.com 
  25.         service_description        PING 
  26.         check_command            check_ping!100.0,20%!500.0,60% 
  27. 8.重启 nagios 服务 
  28. /etc/init.d/nagios restart 
本文转自1594cqb 51CTO博客,原文链接:http://blog.51cto.com/wolfchen/1162956,如需转载请自行联系原作者
相关文章
|
8月前
|
运维 监控 应用服务中间件
【运维知识进阶篇】zabbix5.0稳定版详解3(监控Nginx+PHP服务状态信息)(二)
【运维知识进阶篇】zabbix5.0稳定版详解3(监控Nginx+PHP服务状态信息)(二)
147 0
|
3月前
|
缓存 应用服务中间件 nginx
Docker六脉神剑 (三) 编写Dockerfile构建nginx镜像并推送到远程仓库给其他人使用
Docker六脉神剑 (三) 编写Dockerfile构建nginx镜像并推送到远程仓库给其他人使用
30 0
|
3月前
|
应用服务中间件 nginx Docker
使用Docker构建本地Nginx容器及配置
使用Docker构建本地Nginx容器及配置
62 2
|
8月前
|
运维 监控 网络协议
【运维知识进阶篇】集群架构-Nginx常用模块(目录索引+状态监控+访问控制+访问限制)(下)
【运维知识进阶篇】集群架构-Nginx常用模块(目录索引+状态监控+访问控制+访问限制)(下)
58 0
|
8月前
|
运维 监控 应用服务中间件
【运维知识进阶篇】集群架构-Nginx常用模块(目录索引+状态监控+访问控制+访问限制)(上)
【运维知识进阶篇】集群架构-Nginx常用模块(目录索引+状态监控+访问控制+访问限制)
62 0
|
9月前
|
前端开发 JavaScript 小程序
Docker实战 | 第三篇:Docker安装Nginx,实现基于vue-element-admin框架构建的项目线上部署
Docker实战 | 第三篇:Docker安装Nginx,实现基于vue-element-admin框架构建的项目线上部署
|
6月前
|
Java jenkins 应用服务中间件
Jenkins+Gitlab+Nginx+Maven编译Java项目自动发布与基于tag版本回退(重复构建问题已解决)
Jenkins+Gitlab+Nginx+Maven编译Java项目自动发布与基于tag版本回退(重复构建问题已解决)
|
6月前
|
jenkins 应用服务中间件 持续交付
Jenkins+Gitlab+Nginx实现自动发布与回退基于tag版本的静态项目(解决重复构建问题)
Jenkins+Gitlab+Nginx实现自动发布与回退基于tag版本的静态项目(解决重复构建问题)
|
6月前
|
监控 数据可视化 应用服务中间件
吹爆,Nginx 可视化!配置监控一条龙
nginx-gui这个东西真的要吹一波,太好用了,而且源码公开。对于我这样一个作为Linux菜鸟的Java开发来说,这个可视化配置工具简直是福音!
|
7月前
|
监控 应用服务中间件 BI
如何使用 Zabbix 监控 Nginx?
如何使用 Zabbix 监控 Nginx?
157 6