Nagios是一款开源的免费监控软件,能很好的监控WindowsLinuxUnix的主机状态,交换机、路由器等网络设备等。相信很多朋友都有用过这个软件,下面把我的安装使用过程中拿出来和大家分享一下,有不足之处希望大家指正。

安装环境: Redhat 5.5 x86_64bit

一、主监控机系统的安装

1、建目录用户与授权:

[root@localhost ]# groupadd nagios

[root@localhost ]# useradd -g nagios  nagios

[root@localhost ]# mkdir /usr/local/nagios

[root@localhost ]# chown nagios:nagios /usr/local/nagios

 

2、解压与安装(下载地址:http://sourceforge.net/projects/nagios/files/)

[root@localhost ]# tar -zxvf nagios-3.2.3.tar.gz

[root@localhost ]# cd nagios-3.2.3

[root@localhost ]# ./configure

[root@localhost ]# make all

[root@localhost ]# make install

[root@localhost ]# make install-init

[root@localhost ]# make install-commandmode

[root@localhost ]# make install-config

 

3、安装相关插件(下载地址:http://www.nagios.org/download/plugins/)

[root@localhost ]# tar -zxvf nagios-plugins-1.4.15.tar.gz

[root@localhost ]# cd nagios-plugins-1.4.15

[root@localhost ]# ./configure

[root@localhost ]# make && make install

[root@localhost ]# ls /usr/local/nagios/libexec/  查看有无安装成功,成功会显示组件包)

 

4、安装apache发布器(如果之前系统未安装httpd组件的话,要新装一下相关的rpm)

[root@localhost ]# rpm -ivh apr-1.2.7-11.x86_64.rpm

[root@localhost ]# rpm -ivh postgresql-libs-8.1.11-1.el5_1.1.x86_64.rpm

[root@localhost ]# rpm -ivh apr-util-1.2.7-7.el5.x86_64.rpm

[root@localhost ]# rpm -ivh httpd-2.2.3-22.el5.x86_64.rpm

[root@localhost ]# rpm -ivh httpd-manual-2.2.3-22.el5.x86_64.rpm

(注意这上面的rpm包要按照顺序来安装)

 

5、配置发布器httpd.conf的参数:

[root@localhost ]# vim /etc/httpd/conf/httpd.conf

(在文件内容的最底下添加)

  1. ServerName localhost:80   
  2. ScriptAlias /nagios/cgi-bin  /usr/local/nagios/sbin  
  3. <Directory "/usr/local/nagios/sbin"> 
  4. Options ExecCGI  
  5. AllowOverride None  
  6. Order allow,deny  
  7. Allow from all  
  8. AuthName "Nagios Access"  
  9. AuthType Basic   
  10. AuthUserFile /usr/local/nagios/etc/htpasswd.users  
  11. Require valid-user   
  12. </Directory>   
  13.  
  14. Alias /nagios  /usr/local/nagios/share  
  15. <Directory "/usr/local/nagios/share">   
  16. Options None   
  17. AllowOverride None  
  18. Order allow,deny   
  19. Allow from all   
  20. AuthName "Nagios Access"   
  21. AuthType Basic   
  22. AuthUserFile /usr/local/nagios/etc/htpasswd.users  
  23. Require valid-user   
  24. </Directory> 

6、添加nagios的登录用户(nagiosadmin)

[root@localhost ]# htpasswd -c /usr/local/nagios/etc/htpasswd.users  nagiosadmin

[root@localhost ]# cat /usr/local/nagios/etc/htpasswd.users  (说明:查看有无添加成功)

7、添加启动nagios服务:

[root@localhost ]# chkconfig --add nagios

[root@localhost ]# chkconfig nagios on

[root@localhost ]# service nagios start

8、启动http发布服务:

[root@localhost ]# service httpd start

[root@localhost ]# chkconfig httpd on

9、登录页面:

1http://IP地址/nagios  

2) 输入登录用户名和密码

3) 进入管理平台

 

注意: 如果输入用户名和密码成功登录以后,页面显示“无权访问网页”,这是因为没有安装PHP的套件,nagios的网页需要php来支持。解决办法如下:

(1) 确保linux主机或服务器能够上互联网

  (2) 执行下面的安装命令

[root@localhost ]# yum install php (说明:yum命令会先对比本机缺少的php包,然后自动从互联网上寻找,找到以后会列出来,提示你是否下载安装,这时候再点击“yes”下载过来自动安装。)

 

二、主监控机系统的参数配置

1、主配置文件:nagios.cfg

[root@localhost ]# cd /usr/local/nagios/etc

[root@localhost ]# vim nagios.cfg

 (主要配置参数说明)

  1. cfg_file=/usr/local/nagios/etc/objects/commands.cfg    #监控命令配置文件  
  2. cfg_file=/usr/local/nagios/etc/objects/contacts.cfg    #联系人配置文件路径  
  3. cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg #监视时段配置文件路径  
  4. cfg_file=/usr/local/nagios/etc/objects/templates.cfg   #监控服务报警配置文件  
  5. cfg_file=/usr/local/nagios/etc/objects/localhost.cfg   #监控本机服务配置文件  
  6. cfg_file=/usr/local/nagios/etc/objects/windows.cfg     # 监控windows机器列表的配置文件  
  7. cfg_file=/usr/local/nagios/etc/objects/linux.cfg    #新增监控linux机器列表的配置文件  
  8. check_external_commands=1    #允许在web界面下执行重启nagios、停止主机/服务检查等操作,0表不启用  
  9. command_check_interval=5     #监控正常检测周期间隔时间,可以以设成10秒(10s),默认值是-1(为尽可能的快速轮询);注意这是检测周期,不是报警周期,检测周期设置一定要比服务的告警周期要小  
  10. interval_length=60           #间隔长度,默认值为60,代表基数是60秒,表示周期是1分钟  
  11. service_check_timeout=60     #服务检查时间间隔  
  12. host_check_timeout=30        #主机检查时间间隔  
  13. event_handler_timeout=30 
  14. notification_timeout=10        
  15. ocsp_timeout=5 
  16. perfdata_timeout=5 

 2、监控(哪些)机器的配置文件:linux.cfg

[root@localhost ]# cd /usr/local/nagios/etc/objects

[root@localhost ]# vim linux.cfg 

  1. define host{      ;要监控的主机定义  
  2.     use                linux-server    ;被监控主机用途          
  3.     host_name          web_host        ;被监控主机名称 
  4.     alias              It’s http server  ;被监控主机别
  5.     address            10.0.0.2         ;被监控主机IP地址  
  6.     }   
  7.  
  8. define hostgroup{      ;要监控的组定义 
  9.     hostgroup_name   remote-linuxt-server   ;被监控组名称
  10.     alias            linuxserver       ;被监控组别名 
  11.     members          web_host  ;被监控组成员主机名有哪些,这里不能用别名,多个成员之间用,逗号隔开 
  12.     }     
  13.  
  14. define service{  ;要监控的服务定义 
  15.    use                     local-service   ;服务模型,可自定义   
  16.    hostname                web_host        ;要加入此服务的主机名称,要与上面一致。 
  17. hostgroup_name          remote-linux-server ;要加入此服务的组名称,要与上面一致
  18.    service_description     HTTP_port      ;要监控的项目名称,可自己起
  19.    check_command           check_tcp!80!0.1!0.3  ;检测命令,配置文件在commands.cfg 
  20. notifications_enabled   0              ;是否通知报告
  21. notification_interval   10  ;发告警的时间间隔10分钟,默认单位是分钟,这行不设的话默认是1小时
  22. }   

(注意:这边的“notification_interval报警时间间隔要与templates.cfg文件中“normal_check_interval”的时间相对应,不能小于那边设置的时间,不然会报错normal_check_interval默认是10分钟发送报警邮件一次)

(说明:定义service服务的时候,要加入此服务的主机名称和组名称,可只设置一个,不必同时设置

如果服务是多台主机共用的(如检测内存),可设置一个组名称

如果服务只是某一台或几台主机用的,设置一个主机名称就可以了

 

3、命令参数配置文件:command.cfg

[root@localhost ]# cd /usr/local/nagios/etc/objects

[root@localhost ]# vim command.cfg

  1. define command{  
  2.          command_name    check_local_disk  
  3.          command_line    $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$  
  4.         }  

说明这里的$USER1$$ARG1$, $ARG2$, $ARG3$是什么意思呢?

1$USER1$  是指插件路径/usr/local/nagios/libexec

2-w $ARG1$的参数指定磁盘剩了多少是警告状态,

3-c $ARG2$的参数指定剩多少是严重状态,

4-p $ARG3$用来指定路径目录.

loccalhost.cfg调用命令的时候可写成 check_command check_local_disk!10%!5%!/

在命令名后面用!分隔出了3个参数,10%$ARG1$的值,5%$ARG2$的值,/ $ARG3$的值,

 

4、报警联系人参数配置文件:contacts.cfg

[root@localhost ]# cd /usr/local/nagios/etc/object

[root@localhost ]# vim contacts.cfg

  1. define contact{        ;联系人  
  2.     contact_name       nagiosadmin  
  3.     use                generic-contact      
  4.     alias              Nagios Admin      
  5.     email              nagios@localhost.com   ;接收报警的邮件地址  
  6.         }  
  7.  
  8. define contactgroup{    ;联系人组            
  9.     contactgroup_name     admins                  ;联系人组名  
  10.     alias                 Nagios Administrators   ;组别名  
  11.     members               nagiosadmin             ;组成员名单  
  12.         } 

5、配置完参数以后一定要重新检测是否正确

[root@localhost ]# /usr/local/nagios/bin/nagios  -v  /usr/local/nagios/etc/nagios.cfg

                                       ( -v 检查配置参数 )

[root@localhost ]# /usr/local/nagios/bin/nagios  -d  /usr/local/nagios/etc/nagios.cfg

                                       ( -d 后台重启服务进程 )

6、命令和插件监控

[root@localhost ]# cd /usr/local/nagios/libexec

[root@localhost ]# ./check_disk  -h      (查看磁盘情况的命令使用方法,提示:这边所有命令的使用方法都可以通过命令名 –h来查看)

 

命令使用:check_disk -w 10% -c 5% /    此命令的含义是检查/分区的使用情况,若剩余10%以下,为警告状态(warning)5%以下,为严重状态(critical)命令调用时简写成check_disk!10%!5%!/

 

(小结:localhost.cfg定义监控项目用某个命令,这个命令必须在commands.cfg中定义,定义这个命令时使用了libexec下的插件)