Answers:
主机组和模板。
模板使您可以定义主机和服务的类,例如“正常服务”,“关键服务”,“低优先级主机”。如果您有多个具有不同职责的团队,它们也可以用作一种划分职责的有用方法,因此您可以拥有一个“ Linux主机”模板和一个“ Windows主机”模板,每个模板定义相应的联系信息。
您可以在单个资源上使用多个模板,因此可以组成适当的正交模板。例如,您可以
host foo {
use windows-host,normal-priority-host
...
}
这将获取Windows团队的联系信息(和升级)以及“正常”主机的轮询率和阈值。
主机组使您可以将主机子集的所有检查分组在一起。具有诸如“ baseline-linux-hosts”之类的功能,可以检查负载,磁盘空间,ssh
功能以及所监视的每个主机上应包含的其他任何内容。添加诸如“ https服务器”之类的组,以检查HTTP连接,HTTPS连接和SSL证书的到期日期;“文件服务器”,用于检查NFS和SMB的可访问性,以及可能更积极的磁盘检查;或“虚拟机”,以检查VM可访问性工具是否正常运行。
将每个主机和主机组放在自己的文件中。该文件应首先包含主机或主机组定义,然后是适用于该文件的服务的定义。
如果您cfg_dir
在nagios.cfg
文件中使用指令,Nagios将在该目录中进行递归搜索。利用它。对于的设置cfg_dir=/etc/nagios/conf.d
,您可以具有如下目录树:
我倾向于为每种资源类型(命令,联系人组,联系人,升级,主机组,主机,服务组,时间段)创建一个目录,但服务除外,这些服务与使用它们的主机或主机组分组在一起。
确切的结构可以根据您的组织需求而变化。在过去的工作中,我hosts.d
为每个不同的站点使用子目录。在我目前的工作中,大多数Nagios主机定义都是由Puppet管理的,因此,有一个目录用于Puppet管理的主机,另外一个目录用于手工管理的主机。
请注意,以上内容也通常按协议将命令分成多个文件。因此,该nrpe.cfg
文件将有命令check_nrpe
和check_nrpe_1arg
,虽然http.cfg
可能有check_http
,check_http_port
,check_https
,check_https_port
,和check_https_cert
。1个
我通常没有大量的模板,因此我通常只有一个hosts.d/templates.cfg
文件和一个services.d/templates.cfg
文件。如果您更频繁地使用它们,则可以将它们放入templates.d
目录中适当命名的文件中。
1我喜欢也有一个check_http_blindly
命令,基本上是check_http -H $HOSTADDRESS$ -I $HOSTADDRESS$ -e HTTP/1.
;即使收到403响应代码,它也会返回OK。
我习惯于以这种方式配置我的nagios服务器(在切换到Icinga之前),直到使用512Mb内存/ 1个CPU服务器至少可以提供500多个服务之前,性能才不乏不足。主机组和服务组可以完全分开对待,我建议使用这种方法,因为它允许每个服务器有一个文件(此文件中定义了该服务器的服务),然后每个主机组/服务组有一个文件。这只是更容易理解/清楚。
如果遇到可伸缩性问题,则可能需要看一下nagios-nrpe-server,它在客户端执行检查,而nagios服务器所做的只是索要结果。这样可以节省支票的资源。(Nagios启动check_nrpe,请求客户端,在本地执行检查并回复给nagios)。请记住,不能以这种方式处理所有检查(例如SNMP)。
最后,即使您的问题似乎不在讨论范围之内,我还是建议改用Icinga,它具有更大的可扩展性,由一个更在意新功能实现和用户支持的更强大社区所支持。配置是相同的(相同的配置文件,相同的语法)。
您不能使创建组复杂化配置。正如asciiphil所说,您可以制作一个文件,也可以在某些现有文件中定义相同的组,例如(hosts.cfg或其他内容),然后制作此文件,或者对nagios说此文件处于活动状态(这是您将创建新的文件,如果尚未创建,则该文件已处于活动状态),这位于nagios.cfg文件中,您在其中放置了新创建文件的路径。“ cfg_file = / usr / local / nagios / etc / objects / NEW_FILE.cfg”
另一件事就是根据您的基础结构进行分组。例如,如果我有linux和Windows Server,我将创建两个不同的组,一个用于linux,另一个用于Windows。服务也一样。根据您希望在监视器上进行监视时的配置方式和查看方式,如何将它们作为组查看。
对于文件或零件如何进行分组很简单。
define hostgroup{
hostgroup_name novell-servers
alias Novell Servers
members netware1,netware2,netware3,netware4
}
在主机配置上,或者如果您使用模板,或者已经定义了主机模板或服务并使用了使用,则可以自动告诉所有主机/ Windows或linux主机是您创建的已定义主机组的成员。