设为首页 收藏本站
查看: 946|回复: 0

Nginx下构建nagios监控平台Nagios+nrpe+nagios

[复制链接]

尚未签到

发表于 2019-1-15 06:56:32 | 显示全部楼层 |阅读模式
  系统环境:CentOS release 5.8 x86_64
  一:监控端安装
  1,安装perl模块:
  (1)、先安装FCGI模块


  • 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
  • wget http://mirrors.xmu.edu.cn/CPAN/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。注:建议把这个脚本放在Nginx安装目录,修改脚本权限为777


  • http://www.chlinux.net/perl-fcgi.zip
  • unzip perl-fcgi.zip
  • cp perl-fcgi.pl /usr/local/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 nobody.nobody $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 nobody.nobody $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这个文件,如果没有生成,请检查下上面的步聚。
  2、安装Nagios和相关插件
  (1)、安装前准备
  安装的机器上必须有一个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
  (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



  • tar zxvf nagios-3.2.3.tar.gz
  • cd nagios-3.2.3
  • ./configure --with-command-group=nagcmd
  • make
  • make all
  • make install
  • make install-init
  • make install-config
  • make install-commandmode
  • #这里是在Nginx下运行Nagios,这一步就不用做了
  • make install-webconf
  • cd ..
  • 注:
  • make install 用于安装主要的程序、CGI及HTML文件
  • make install-init 用于生成init启动脚本
  • make install-config 用于安装示例配置文件
  • make install-commandmode 用于设置相应的目录权限
  • 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
  #以下几项中分别加入新增的用户,多用户用逗号分隔。


  • 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

  2)、修改NGINX配置,以支持WEB方式访问Nagios
  方法一:以http://ip方式访问,NGINX配置片断如下


  • server
  •   {
  •     listen       80;
  •     server_name  192.168.1.51;
  •     index index.html index.htm index.php;
  •     root  /usr/local/nagios/share;
  •     auth_basic "Nagios Access";
  •     auth_basic_user_file /usr/local/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 fcgi.conf;
  •     }
  •     location ~ .*\.(cgi|pl)?$
  •     {
  •     gzip off;
  •    root   /usr/local/nagios/sbin;
  •     rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;
  •     fastcgi_pass  unix:/usr/local/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 fcgi.conf;
  •     auth_basic "Nagios Access";
  •     auth_basic_user_file /usr/local/nagios/etc/nagiospasswd;
  •     }
  •     location /nagios
  •     {
  •     alias /usr/local/nagios/share;
  •     auth_basic "Nagios Access";
  •     auth_basic_user_file /usr/local/nagios/etc/nagiospasswd;
  •       }
  •      }

  6、编译并安装Nagios插件
  由于Nagios主程序只是提供一个运行框架,其具体监控是靠运行在其下的插件完成的,所以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

  验证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的版本号.
  三、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文件内容如下


  • 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                    24x7      #检查的时间段24x7,同样来自于我们之前在timeperiods.cfg中定义的  
  •       contact_groups                  sagroup      #联系人组,上面在contactgroups.cfg中定义的sagroup  
  •       notification_interval           10     #提醒的间隔,每隔10秒提醒一次  
  •       notification_period             24x7     #提醒的周期, 24x7,同样来自于我们之前在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                 24x7   #服务检查周期
  •         notification_interval            10   #通知时间间隔
  •         normal_check_interval       1    #正常检查服务的时间间隔
  •         retry_check_interval        1     #重新检查时间间隔
  •         notification_period    24x7    #通知时间段
  •         notification_options    w,u,c,r,d   #服务在什么状态下通知,d = 状态为 DOWN , u = 状态为 UNREACHABLE , r = 状态恢复为 OK , f = flapping,  
  •         contact_groups             admins    #联系人组
  •         }

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


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

  nrpe的主配置文件是/usr/local/nagios/etc/nrpe.cfg,在command.cfg文件中定义nrpe的命令


  • define command{
  •         command_name    check_nrpe
  •         command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
  •         }

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


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


  • define service{
  •         use                             local-service,srv-pnp      
  •         host_name                       WEB1
  •         service_description             Root Partition
  •         check_command                   check_nrpe!check_disk
  •         check_period            24x7
  •         max_check_attempts      4
  •         normal_check_interval   1
  •         retry_check_interval    1
  •         contact_groups          admins
  •         notification_interval   10
  •         notification_period     24x7
  •         notification_options    w,u,c,r
  •         }

  服务端配置完后需要重启nagios服务
  三、安装pnp
  Pnp是一个绘图工具,需要依赖rrdtool软件包



  • wget http://pkgs.fedoraproject.org/repo/pkgs/pnp4nagios/pnp-0.4.13.tar.gz/20a96f81edba29dcd21215bde4af8b57/pnp-0.4.13.tar.gz
  • tar zxvf  pnp-0.4.13.tar.gz
  • cd pnp-0.4.13
  • ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-perfdata-dir=/usr/local/nagios/share/perfdata --with-rrdtool
  • make all
  • make install
  •   make install-config
  • make install-init
  •   cd /usr/local/nagios/etc/pnp
  • cp npcd.cfg-sample npcd.cfg
  • cp rra.cfg-sample rra.cfg
  • cp process_perfdata.cfg-sample process_perfdata.cfg
  • 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
  • define command{
  •         command_name    process-host-perfdata
  •         command_line    /usr/local/nagios/libexec/process_perfdata.pl
  •         }
  • define command{
  •         command_name    process-service-perfdata
  •         command_line    /usr/local/nagios/libexec/process_perfdata.pl
  •         }

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


  • define host {
  • name       host-pnp
  • action_url /pnp/index.php?host=$HOSTNAME$
  • register   0
  • }
  • define service {
  • name       srv-pnp
  • action_url /pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
  • register   0
  • }
  • 7,修改 hosts.cfg 和 services.cfg
  • cd /usr/local/nagios/etc/eric.com
  • #修改hosts.cfg
  • vim hosts.cfg
  • define host{
  •         use                     linux-server,host-pnp  
  •         host_name         eric.com
  •         alias                     eric.com
  •         address                 192.168.6.101
  •         }


  • # 修改 services.cfg
  • define service{
  •         use                                     local-service,srv-pnp      
  •         host_name                       eric.com
  •         service_description        PING
  •         check_command            check_ping!100.0,20%!500.0,60%
  • }
  • 8.重启 nagios 服务
  • /etc/init.d/nagios restart








运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-663323-1-1.html 上篇帖子: Nagios从旧的3.x版本升级到当前最新版本3.5.0 下篇帖子: pnp4nagios
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表