Nagios实战全解(三):配置Nagios服务(中)

日期: 2009-03-10 作者:田逸 来源:TechTarget中国

  (四) 配置nagios

  配置是nagios最复杂的部分,让我们耐心一些,逐个处理,配置成功也不是什么难事。刚安装完成的nagios,其配置文件的目录是/usr/local/nagios/etc,下图是其etc目录的文件:
    
  先把这些文件改名,如 cgi.cfg-sample改成cgi.cfg ,用命令cp cgi.cfg-sample cgi.cfg …依样把余下的几个*.cfg-sample都复制成*.cfg文件。从nagios2.6版开始,不用修改配置文件localhost.cfg就可以直接运行../bin/nagios -v nagios.cfg验证程序是否能正常运行(nagios2.5及以前版本的最小运行的配置文件是minimal.cfg,但需要修改这个文件多处才能验证成功)。当然,我们不能指望这个最小的配置文件能够满足实际的需求,因此,需要对现有的配置文件进行修改,其次增加自定义的一些配置文件。通过复制这些自带的模板文件,我们可以得出几个主要的配置文件,我们可以把它归类为:

配置nagios

配置nagios

  依照这个表格,我们逐一配置之。

  1、修改主配置文件nagios.cfg.基于方便维护的原则,把各个配置目标单独放在文件中,如联系人信息在contacts.cfg中定义。Nagios.cfg文件比较长,我只把修改过的内容贴出来:
   
     #注释或删掉这行
     #cfg_file=/usr/local/nagios/etc/localhost.cfg

     #主机配置文件路径
     cfg_file=/usr/local/nagios/etc/hosts.cfg

     #//主机组配置文件路径
     cfg_file=/usr/local/nagios/etc/hostgroups.cfg

     #联系人配置文件路径
     cfg_file=/usr/local/nagios/etc/contacts.cfg    

     #联系组配置文件路径   
     cfg_file=/usr/local/nagios/etc/contactgroups.cfg

     #服务配置文件路径  
     cfg_file=/usr/local/nagios/etc/services.cfg     

     #监视时段配置文件路径
     cfg_file=/usr/local/nagios/etc/timeperiods.cfg  

     #在web界面下重启nagios、停止主机/服务检查等操作,.默认值是0.
     check_external_commands=1

     #根据自己的情况定这个命令检查时间间隔.默认值是1秒.
  command_check_interval=10s

  2、修改cgi配置文件cgi.cfg.跟修改nagios.cfg一样,只贴出被修改之处:

     #如有多个用户,中间用逗号隔开

     authorized_for_system_information=sery
     authorized_for_configuration_information=sery
     authorized_for_system_commands=sery
     authorized_for_all_services=sery
     authorized_for_all_hosts=nagiosadmin,sery
     authorized_for_all_service_commands=sery
     authorized_for_all_host_commands=sery

  在这里指定的用户”sery”可以通过浏览器操纵nagios服务的关闭、重启等各种操作。

  3、修改commands.cfg配置文件

  这个文件已经包含了发送邮件报警的部分,因此只需要再把短信报警的部分加上就可以了

     ###### host-notify-by-sms command definition
     define command{
          command_name    host-notify-by-sms
       command_line /usr/local/bin/sms.pl $CONTACTPAGER$         “$NOTIFICATIONTYPE$ alert – Host $HOSTNAME$ is $HOSTSTATE$”
          }
     ###### service-notify-by-sms command definition
     define command{
          command_name    service-notify-by-sms
       command_line    /usr/local/bin/sms.pl $CONTACTPAGER$    “$NOTIFICATIONTYPE$: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$”
          }

  第一个块定义主机报警的内容,即主机发生死机、恢复等情况发送手机短信报警,其接受者和发送内容由”$..$”定义的宏来决定。第二个块定义服务报警内容,即监控的服务或监控的主机资源发生故障时发送手机报警短信。Nagios规定,如果探测到被监控的主机停机或不可达,它就不再探测这个停机主机上的服务。通俗地一点理解:主机都停了,当然服务也跟着停了!另外一个需要注意的地方是命令行(command_line)路径一定要用全路径,这里调用的命令就是我们在全面编写的那个脚本sms.pl。

  4、 新增其他配置文件

  在主配置文件nagios.cfg中,我们注释了行cfg_file=/usr/local/nagios/etc/localhost.cfg ,而使用若干单独的配置文件来定义各种对象,这样可以获得维护方便、书写规范等诸多方面的好处。这些单独的配置文件不是自然存在的,我们需要手工创建并添加内容。当然,一开始我们并不是很清楚怎么往这些文件里添加内容,只好回过头去看官方文档,天啦,太分散了,尽然不知道怎么着手了!怎么办?打开文件 localhost.cfg-sample,心里基本上就有数了:无非是把这个文件拆分开来,形成多个文件嘛!下面我按新添一个主机进入监控的较优方式添加这些配置文件(当然也可以有其它的顺序,这并不影响监控的效果)。好了,我们先把nagios服务器本身给监控上,这些监控包括:主机存活、web服务监控、磁盘空间监控、负载监控、进程数监控、ip连接数监控。

  (1)、定义主机配置文件hosts.cfg

         define host {
         host_name                 nagios-server
         alias                      nagios server
         address                    59.26.240.63
         contact_groups              sagroup
         check_command             check-host-alive
         max_check_attempts          5
         notification_interval          10  
         notification_period           24×7
         notification_options          d,u,r
         }

  说明:

  ● 联系组contact_group没有建立,需在后面的步骤完成。
  ● 主机检查命令行一般选择检查主机存活check-host-alive。
  ● 最大尝试次数最好不要设置为”1″,一般3-4次比较合理。
  ● 通知时间间隔notification_interval 根据自己实际情况设定,它的单位是分钟。
  ● 通知选项notification_options 几个值的意思是 d-down,u-unreacheable,r-recovery.

  (2)、定义主机组配置文件hostgroups.cfg

        define hostgroup {
        hostgroup_name  sa-servers
        alias            sa servers
        members        nagios-server
        }

  说明:

  ● 这个配置文件不是必须的,为了在浏览器里方便归类及察看状态,可以添加这个文件。
  ● 主机组的成员必须是在hosts.cfg里已经定义了的,多个主机成员间用逗号分隔。

  (3)、定义联系人配置文件contacts.cfg

       define contact {
       contact_name         sery
       alias                system administrator
       service_notification_period    24×7
       host_notification_period       24×7
       service_notification_options   w,u,c,r
       host_notification_options       d,u,r
       service_notification_commands service-notify-by-email,service-notify-by-sms
       host_notification_commands     host-notify-by-email,host-notify-by-sms
       email                          sery@163.com
       pager                          13301000018
       }

  说明:

  ● 服务通知选项 w-warning,u-unknown,c-critical,r-recovery.
  ● 主机通知选项 d-down,u-unreacheable,r-recovery。
  ● 服务通知命令行及服务通知命令行在配置文件commands.cfg中得到定义,如果有报警发生,则邮件和手机短信一起发送给相关人,即下两行定义的email,pager.
  ● 收报警信息的邮件和手机,一个人如有2个手机,手机号之间有逗号分隔,邮件也如此。
  ● 如果这里定义的用户需要通过浏览器察看他所负责的服务器监控状态的话,还需要     用apache的工具htpasswd增加同名帐号。

  (4)、定义联系组配置文件contactgroups.cfg

        define contactgroup {
        contactgroup_name    sagroup
        alias                system administrator group
        members             sery
        }

  说明:

  ● 当有多个人行使同样的职责时,定义成组是非常有用的。
  ● 多个成员之间用逗号分隔。
  ● 成员必须在联系人配置文件(contacts.cfg)已经定义。

  (5)、定义服务配置文件 services.cfg

      define service {
          host_name        nagios-server
          service_description   check-host-alive
          check_period          24×7
          max_check_attempts    4
          normal_check_interval 3
          retry_check_interval  2
          contact_groups        sagroup
          notification_interval   10
          notification_period     24×7
          notification_options    w,u,c,r
          check_command           check-host-alive
          }
  define service {
          host_name             nagios-server
          service_description   check_tcp 80
          check_period          24×7
          max_check_attempts    4
          normal_check_interval 3
          retry_check_interval  2
          contact_groups        sagroup
          notification_interval   10
          notification_period     24×7
          notification_options    w,u,c,r
          check_command      check_tcp!80
          }
      define service{
          host_name               nagios-server
          service_description     check-disk
          check_command           check_nrpe!check_df
          max_check_attempts      4
          normal_check_interval   3
          retry_check_interval    2
          check_period            24×7
          notification_interval   10
          notification_period     24×7
          notification_options    w,u,c,r
          contact_groups          sagroup
          }
  define service{
          host_name               nagios-server
          service_description     check-load
          check_command           check_nrpe!check_load
          max_check_attempts      4
          normal_check_interval   3
          retry_check_interval    2
          check_period            24×7
          notification_interval   10
          notification_period     24×7
          notification_options    w,u,c,r
          contact_groups          sagroup
          }
  define service{
          host_name               nagios-server
          service_description     total_procs
          check_command           check_nrpe!check_total_procs
          max_check_attempts      4
          normal_check_interval   3
          retry_check_interval    2
          check_period            24×7
          notification_interval   10
          notification_period     24×7
          notification_options    w,u,c,r
          contact_groups          sagroup

          }
  说明:
  ● 主机名 host_name,必须是主机配置文件hosts.cfg中定义的主机。
  ● 检查用的命令 check_command,在命令配置文件中定义或在nrpe配置文件中有定义。
  ● 最大重试次数 max_check_attempts 一般设置为3-4次比较好,这样不会因为网络闪断片刻而发生误报。
  ● 检查间隔和重试检查间隔的单位是分钟。
  ● 通知间隔指探测到故障以后,每隔多少时间发送一次报警信息。 它的单位是分钟。
  ● 通知选项跟服务定义配置文件相同。
  ● 联系组contact_groups由配置文件contactgroup.cfg定义。
  ● 检查主机资源需要安装和配置nrpe,这个过程在后面完成。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

田逸
田逸

相关推荐