在Nagiosconfiguration中定义variables?

为了从一开始就消除一些可能的混淆,我不想在主机定义中定义自己的字段,而是创build一个可以跨多个主机定义使用的variables来填充其中一个标准字段。

当我将虚拟机添加到我们的Nagios服务器时,我将虚拟化群集中的机器添加为该机器的父母,因为如果这些服务器中的任何一个启动了,则该虚拟机应该是可访问的。 这导致在表单的每个虚拟机的定义中input:

define host{ host_name xxx1 alias xxx1.domain.tld address xxx.xxx.xxx.xxx parents dom0_1, dom0_2, dom0_3, dom0_4, dom0_5, dom0_6 ... } 

问题是,我们的集群不断变化和扩展,在每个虚拟机中都必须更新这个条目是一件很痛苦的事情,我希望能够在一个地方改变它,并且改变会影响所有的定义我们的虚拟机。

同意使用模板,但是您需要使用略微不同的模板语法。 模板是添加了“注册0”的主机/服务定义,然后在使用时inheritance实际主机定义中的模板,不要忘记在新模板中inheritance系统默认主机

 define host { name host-template1 use generic-host parents dom0_1,dom0_2 register 0 } define host { use host-template1 host_name ..... .... } 

Nagios调用这些“macros”,并将其定义在resource.cfg中,您可以在Nagios安装的/ etc目录中find它们。 就像是:

  $USER5$=dom0_1,dom0_2,dom0_3,dom0_4,dom0_5,dom0_6 

添加到resource.cfg应该做的工作($ USER1 $通过$ USER4 $已被采取); 尽pipe如此,你可能不得不使用反斜杠和东西来逃避所有的逗号/空格。 然后你可以定义你的主机,如:

 define host{ host_name xxx1 alias xxx1.domain.tld address xxx.xxx.xxx.xxx parents $USER5$ ... } 

我想你想使用一个模板:

 define template { parents dom0_1, dom0_2 name cluster_parents_tmpl } define host { use cluster_parents_tmpl host_name xxx1 alias xxx1.domain.tld address xxx.xxx.xxx.xxx ... }