我目前正在尝试为主机组中的所有主机定义一组服务,这工作正常。
我的问题是,我希望能够从主机组中覆盖主机中包含的这些服务定义。 例如,对于某些情况,某个特定的Linux服务器需要从默认值提高PING检查阈值。
因此,例如,我想在linux-server主机组中拥有一个主机,它inheritance了几个服务(SSH,Disk,PING等),但是对于我想用自己的唯一值覆盖的特定服务,定义一个特定于该主机的服务,具有自定义值。
例如。 使用定制的PING服务定义在linux-server定义一个主机:
define host { use n1-host host_name server-01 hostgroups linux-server alias Test Linux Server parents my-gateway,upstream-gateway address server01.test.com } define service { use generic-service host_name server-01 service_description PING check_command check_ping!100.0,5%!400.0,15% }
不幸的是,即使主机名称和服务描述与组级别的PING检查相匹配,只有一个针对server-01 PING服务被列出,这是组级PING检查,而不是主机级别。
它似乎是注册在一些水平上,因为我可以看到我的Nagios日志:
Jul 16 19:12:27 localhost nagios:警告:在主机“server-01”上为服务“PING”find重复的定义
但最终,我不能像检查服务检查结果的“性能数据”那样工作,我可以看到数据中包含的阈值是组检查的阈值,而不是主机检查。
不过,我的理解是,在3.2.0版本之前做了一个改变,允许主机级别的服务优先于主机组级别的服务。 我目前正在运行3.4.1 ,所以我认为这应该是工作。
一些导致我相信这个特性的链接应该已经被实现:
此外,我已经从3.4.1源代码中检查了我的xdata/xodtemplate.c文件副本,并且在“跳过列表”中看起来好像在主机级别检查中的优先级高于主机组检查。 虽然承认,我的分析是原始的。
我知道有可能从一个组中排除某些主机,但是这对我来说不起作用,因为一个主机组可能有多个服务,我不希望所有这些服务都从主机中删除。
我还发现,不得不维护一个排除列表,与主机本身的实际定义分开。 例如,在上面的一个链接(第二个链接)中给出了build议,以执行以下操作:
在服务定义中,在“hostgroup_name”下添加一行:“host_name!zlinux_hostname”
这将从服务检查中排除zlinux主机。
对我而言,这不是一个理想的解决scheme,因为我们可能最终不得不作出许多例外,这似乎很难维持。
如果有人对如何使这项工作有所见解有任何build议,我将非常感激!
目前,我正在定义我的组级PING服务,如下所示:
define hostgroup { hostgroup_name linux-server name Linux Servers } define service { use generic-service hostgroup_name linux-server service_description PING check_command check_ping!100.0,2%!400.0,10% }
我知道这是一个旧的post,但是当我正在寻找别的东西的时候,我碰到了这个问题。 我不是一个纳吉奥斯专家,但我很喜欢它。
您放置在主机组中的任何检查将应用于该主机组中的任何主机(您已知道)。 如果在主机cfg中创build相同的检查,则会覆盖主机组检查。
无论如何,我这样做的方式是:
1.使用其中的检查设置一个hostgroup cfg文件。 这是我的基本C:驱动器空间检查。
define service{ use generic-service hostgroup_name windows-servers service_description C: Drive Space notification_period workhours check_command check_nt!USEDDISKSPACE!-lc -w 80 -c 90 }
但是,一台服务器的运行空间比普通的less得多。 所以在它的主机cfg中,我有:
define service{ use generic-service host_name ServerName service_description C: Drive Space check_command check_nt!USEDDISKSPACE!-lc -w 95 -c 99 notification_period workhours }
现在服务检查会提示您主机组中所有主机的80%和90%,除了添加了更改值的检查主机。
以这种方式进行排列允许我只添加自定义服务以及在主机定义中不是标准的服务检查。
我不确定这是否是常用的,但是这篇文章在设置configuration文件的时候让我大惑不解。 我已经厌倦了编辑这些庞大的文本文件,而这样做很简单。
无论如何,我希望有所帮助。
你可以使用“自定义variablesmacros”( http://nagios.sourceforge.net/docs/3_0/macros.html )
在你的ping服务定义中使用例如:
check_command check_ping!200.0,20%!$_HOSTVAR_SERVICE_PING_CRITICAL_RTA$,40%
在您的主机模板中设置一个默认值:
_VAR_SERVICE_PING_CRITICAL_RTA 500
在应该使用差异值集的主机定义例如
_VAR_SERVICE_PING_CRITICAL_RTA 1500
明确。