nagios监控功能非常强大,不仅仅适用于几台设备的监控,也适合用于上千台的主机和设备进行的监控。但当机器变得越来越多时,管理就会变得越来越混乱,这时分组就会显的比较清晰明了。nagios的分组功能非常强大,可以进行主机分组、服务分组、通知分组等。以下主要针对主机分组,服务分组和通知分组做下说明。

一、主机分组

在设备比较多的情况下,某些人负责某个片区或某几台主机的情况下,可能很不方便找到自己的主机并查看相应的资源占用情况。这时就可以利用主机分组,点开相应的组就可以查看自己所管理的主机的情况。方法如下:
在nagios.cfg中添加cfg_file=/usr/local/nagios/etc/objects/hostgroups.cfg,并在hostgroups.cfg中增加如下内容:

 1define hostgroup{
 2      hostgroup_name  JJH-servers ; The name of the hostgroup
 3      alias           JJH Servers ; Long name of the group
 4      members mtop2,mtop3,alimtop,jjh-cc
 5      }
 6define hostgroup{
 7       hostgroup_name  switches
 8       alias           Switches
 9       contact_groups  switch-admins
10       members         switch1,switch2,switch3,switch4,switch5
11      }

如上配置所示,分组的设备不但可以是主机,也可以是交换机、路由器或打印机等。多个设备之间在members项下利用逗号进行分隔 。在定义的组内也可以通过contact相关项通知到联系人组或联系人。分组配置完成后通过nagios -v nagios.cfg测试通过后,reload重新加载。完成后可以在web页上依点在Current Status --- Host Groups项下就可以查看相应的分组及其包含的主机,如下图所示

hostgroups

二、服务分组

类似于主机分组,在一个单位中,各个不同的职位人员可能负责不同的内容块,如DBA只关心数据库的相关情况,而要在多台hosts上一目了解所有数据库的相关监控项,就可以利用服务分组。具体做法为在nagios.cfg中添加:cfg_file=/usr/local/nagios/etc/objects/servicegroup.cfg,servicegroup.cfg的新增内容如下:

1define servicegroup{
2servicegroup_name       name
3alias                   NA
4members                 host,service,host2,service2,…………
5}

同样,nagios -v nagios.cfg测试ok后,reload重载配置文件并生效 。这里就不再上图,完成后在web上通过Current Status --- ervice Groups查看某服务组内的各主机上服务的情况。

三、联系人分组

在分组上的配置,同hostgroups和servicegroups一样,contactgroup同上面两者之间没有区别。多个通知人之间在members上利用逗号分隔。我这里把定义联系人和定义联系组放到同一配置文件contacts.cfg中(视个人习惯,放成多个也无所谓,只要在nagios.cfg中包含就可以了)。如下:

 1#定义联系人
 2define contact{
 3        contact_name                    contact-win             ; Short name of user
 4        use                             generic-contact         ; Inherit default values from generic-contact template
 5        alias                           Nagios Win            ; Full name of user
 6        pager                           13456XXXXXX            ; phone
 7        email                           abc@139.com,def@361way.com
 8        }
 9define contact{
10        contact_name                    contact-jjh             ; Short name of user
11        use                             generic-contact         ; Inherit default values from generic-contact template
12        alias                           Nagios jjh            ; Full name of user
13        pager                           13865XXXXXX            ; phone
14        email                           abc@139.com,def@361way.com
15        }
16#定义分组
17define contactgroup{
18        contactgroup_name       admins-win
19        alias           Nagios Administrators
20       members                 contact-win
21        }
22define contactgroup{
23        contactgroup_name       admins-jjh
24        alias                   jjh Administrators
25        members                 contact-jjh
26    }

四、一点总结

1、主机分组时,确保先做了主机定义;服务分组时,确保定义了相关的服务;联系人分组时,确保定义了相关的联系人 。一般主机和该主机上的相关服务我习惯于写在同一配置文件中,以主机名命名或以IP或业务类型进行分类。这个视个人规划而定,nagios的配置文件书上非常灵活。只要确保终最被加载就行。
2、主机监控、服务监控和模板定义和人员通知非常的灵活,可以互相进行引用,例如:在模板定义中定义通知的人员,然后直接在主机的主机定义项中和服务定义项中引用该模板,即可通知相关的人;也可以不在模板中定义联系人或通知组,只定义触发条件及通知时间等,直接在define host、define service时直接加入contacts、contact_groups ,由于篇幅原因,这里就不再介绍,在另一篇博文里单独做下总结。