Nagios的灵魂与之精华.

    全在配置文件,如果只是将服务搭建起来,那和不搭有什么区别呢.

    Nagios的配置文件非常多,只要其中一个配置文件出现错误,就会导致Nagios 无法正常工作。也很灵活,但只要掌握了其中的规律,就很简单了

了解Nagios 的各个配置文件

1.主配置文件nagios.cfg

    nagios默认的配置文件比较少,并且将很主机,主机组,服务,服务组写在同一个文件中.

    这样做的好处是配置文件管理比较方便,但是数据量大了之后,很难整理.所以建议将这些配置分开

 
  
  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/contactgroups.cfg
  6. cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
  7. cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg
  8. cfg_file=/usr/local/nagios/etc/objects/services.cfg
  9. cfg_file=/usr/local/nagios/etc/objects/servicegroups.cfg
  10. #check_external_commands=0check_external_commands=1.这行的作用是允许在web 界面下执行重启nagios、停止主机/服务检查等操作。
  11. #把command_check_interval的值从默认的1 改成command_check_interval=15s(根据自己的情况定这个命令检查时间间隔,不要太长也不要太短)。

2.资源配置文件resource.cfg

    资源文件可以保存用户自定义的宏.资源文件的一个主要用处是用于保存一些敏感的配置信息,如系统口令等不能让CGIs 程序模块获取到的东西

3.CGI配置文件cgi.cfg

    CGI 配置文件包含了一系列的设置,它们会影响CGIs程序模块.还有一些保存在主配置文件之中,因此CGI 程序会知道你是如何配置的Nagios并且在哪里保存了对象定义.最实际的例子就是,如果你想建立一个只有查看报警权限的用户,或者只有查看其中一些服务 器或者服务状态的权限,通过修改cfi.cfg可以灵活的控制web访问端的权限.

4.主机定义文件
    定义你要监控的对象,这里定义的“host_name”被应用到其它的所有配置文件中,这个是我们配置Nagios 必须修改的配置文件.

 
  
  1. [root@test objects]# vim hosts.cfg 
  2. define host{ 
  3.         host_name                       Nagios-Server   ; 设置主机的名字,该名字会出现在hostgroups.cfg 和services.cfg 中。注意,这个名字可以不是该服务器的主机名。 
  4.         alias                           Nagios服务器   ; 别名 
  5.         address                         192.168.81.128 ; 主机的IP 地址 
  6.         check_command                   check-host-alive ; 检查使用的命令,需要在命令定义文件定义,默认是定义好的。 
  7.         check_interval                  1               ; 检测的时间间隔 
  8.         retry_interval                  1               ; 检测失败后重试的时间间隔 
  9.         max_check_attempts              3               ; 最大重试次数 
  10.         check_period                    24x7            ; 检测的时段 
  11.         process_perf_data               0 
  12.         retain_nonstatus_information    0 
  13.         contact_groups                  sagroup         ; 需要通知的联系组 
  14.         notification_interval           30              ; 通知的时间间隔 
  15.         notification_period             24x7            ; 通知的时间段 
  16.         notification_options            d,u,r           ; 通知的选项 
  17. #w—报警(warning),u—未知(unkown) 
  18. #c—严重(critical),r—从异常情况恢复正常 
  19. define host{ 
  20.         host_name                       Nagios-Client 
  21.         alias                           Nagios客户端
  22.         address                         192.168.81.129
  23.         check_command                   check-host-alive 
  24.         check_interval                  1
  25.         retry_interval                  1 
  26.         max_check_attempts              3
  27.         check_period                    24x7 
  28.         process_perf_data               0 
  29.         retain_nonstatus_information    0 
  30.         contact_groups                  sagroup 
  31.         notification_interval           30 
  32.         notification_period             24x7 
  33.         notification_options            d,u,r 

5.主机组定义文件
    主机组定义文件,可以方便的将相同功能或者在应用上相同的服务器添加到一个主机组里,在WEB 界面可以通过HOST Group 方便的查看该组主机的状态信息.
    将刚才定义的两个主机加入到主机组中,针对生产环境就像把所有的MySQL 服务器加到一个MySQL主机组里,将Oracle 服务器加到一个Oracle 主机组里,方便管理和查看,可以配置多个组.

 
  
  1. [root@test objects]# vim hostgroups.cfg 
  2. define hostgroup { 
  3.         hostgroup_name   Nagios-Example                  ; 主机组名字 
  4.         alias       Nagios 主机组                ; 主机组别名 
  5.         members          Nagios-Server,Nagios-Client     ; 主机组成员,用逗号隔开 

6.服务定义文件
    服务定义文件定义你需要监控的对象的服务,比如本例为检测主机是否存活,在后面会讲到如何监控其它服务,比如服务器负载、内存、磁盘等.

 
  
  1. [root@test objects]# vim services.cfg 
  2. define service { 
  3.         host_name               Nagios-Server           ; hosts.cfg 定义的主机名称 
  4.         service_description     check-host-alive        ; 服务描述 
  5.         check_period            24x7                    ; 检测的时间段 
  6.         max_check_attempts      3                       ; 最大检测次数 
  7.         normal_check_interval   3 
  8.         retry_check_interval    2 
  9.         contact_groups          sagroup                 ; 发生故障通知的联系人组 
  10.         notification_interval   10 
  11.         notification_period     24x7                    ; 通知的时间段 
  12.         notification_options    w,u,c,r 
  13.         check_command           check-host-alive 
  14. define service { 
  15.         host_name               Nagios-Client 
  16.         service_description     check-host-alive 
  17.         check_period            24x7 
  18.         max_check_attempts      3
  19.         normal_check_interval   3 
  20.         retry_check_interval    2 
  21.         contact_groups          sagroup 
  22.         notification_interval   10 
  23.         notification_period     24x7 
  24.         notification_options    w,u,c,r 
  25.         check_command           check-host-alive 

 7.服务组定义文件
    和主机组一样,我们可以按需将相同的服务放入一个服务组,这样有规律的分类,便于我们在WEB端查看.

 
  
  1. [root@test objects]# vim servicegroups.cfg 
  2. define servicegroup{ 
  3.         servicegroup_name       Host-Alive ; 组名 
  4.         alias                   Host Alive ; 别名设置 
  5.         members                 Nagios-Server,check-host-alive,Nagios-Client,check-host-alive 

8.联系人定义文件
    定义发生故障时,需要通知的联系人信息.默认安装完成后,该配置文件已经存在,而且该文件不仅定义了联系人,也定义了联系人组,为了条理化的规划,我们把联系人定义放在contacts.cfg文件里,把联系人组放在contactgroups.cfg文件中.

 
  
  1. [root@test objects]# mv contacts.cfg contacts.cfg.bak 
  2. [root@test objects]# vim contacts.cfg 
  3. define contact{ 
  4.         contact_name maoxian ; 联系人的名字 
  5.         alias maoxian ; 别名 
  6.         service_notification_period 24x7 ; 服务报警的时间段 
  7.         host_notification_period 24x7 ; 主机报警的时间段 
  8.         service_notification_options w,u,c,r ; 就是在这四种情况下报警。 
  9.         host_notification_options d,u,r ;同上。 
  10. #服务报警发消息的命令,在command.cfg 中定义。 
  11.         service_notification_commands notify-service-by-email 
  12. #服务报警发消息的命令,在command.cfg 中定义。 
  13.         host_notification_commands notify-host-by-email 
  14.         email wangyx088@gmail.com       ; 定义邮件地址,也就是接收报警邮件地址。 

9.联系人组定义文件
    联系人组定义文件在实际应用中很有好处,我们可以把报警信息分级别,报联系人分级别存放在联系人组里面.例如:当发生一些警告信息的情况下,只发邮件给系统工程师联系人组即可,但是当发生重大问题,比如主机宕机了,可以发给领导联系人组.

 
  
  1. [root@test objects]# vim contactgroups.cfg 
  2. define contactgroup{ 
  3.         contactgroup_name       sagroup                 ; 组名 
  4.         alias                   Nagios Administrators   ; 别名 
  5.         members                 maoxian             ; 联系人组成员 

10.命令定义文件 commands.cfg
    命令定义文件是Nagios中很重要的配置文件,所有在hosts.cfg还是services.cfg使用的命令都必须在命令定义文件中定义才能使用.默认情况下,范例配置文件已经配置好了日常需要使用的命令,所以一般不做修改.

11.时间段定义文件 timeperiods.cfg
    我们在检测、通知、报警的时候都需要定义时间段,默认都是使用7x24,这也是默认配置文件里配置好的,如果你需要周六日不做检测,或者在制定的维护时间不做检测,都可以在该时间段定义文件定义好,这样固定维护的时候,就不会为大量的报警邮件或者短信烦恼

 
  
  1. [root@test objects]# cat timeperiods.cfg |grep -v "^#" |grep -v "^$" 
  2. #可以根据业务需求来更改 

12.启动Nagios

 
  
  1. #1> 修改配置文件所有者 
  2. [root@test objects]# chown -R nagios:nagios /usr/local/nagios/etc/objects/ 
  3. #2> 检测配置是否正确 
  4. [root@test objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 
  5. #如果配置错误,会给出相应的报错信息,可以根据信息查找,注意,如果配置文件中有不可见字符也可以导致配置错误 
  6. #3> 重载Nagios 
  7. [root@test objects]# service nagios restart