使用主机服务覆盖 Nagios 主机组服务

Gee*_*man 5 monitoring configuration nagios

我目前正在尝试为主机组中的所有主机定义一组服务,这工作正常。

我的问题是,然后我希望能够从主机组覆盖这些已包含在主机中的服务定义。例如,对于某个特定 Linux 服务器需要将其 PING 检查阈值从默认值提高的情况。

例如,我想在linux-server主机组中有一个主机,它继承了几个服务(SSH、磁盘、PING 等),但是对于我想用自己的唯一值覆盖的特定服务,定义一个特定于该主机,具有自定义值。

例如。linux-server使用自定义PING服务定义定义主机:

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%
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,现在,即使主机名和服务描述与组级别 PING 检查的匹配,也只列出了一项 PING 服务server-01,这是组级别 PING 检查,而不是主机级别。

它似乎确实在某种程度上进行了注册就像在我的 Nagios 日志中我可以看到的那样:

7 月 16 日 19:12:27 localhost nagios:警告:在主机“server-01”上找到服务“PING”的重复定义

但最终,就像我检查服务检查结果的“性能数据”一样不起作用,我可以在那里看到数据中包含的阈值是组检查的阈值,而不是主机检查的阈值。

在服务定义中,在“hostgroup_name”下添加一行:“host_name !zlinux_hostname”

这将从服务检查中排除 zlinux 主机。

对我来说,这不是一个理想的解决方案,因为我们最终可能不得不做出许多例外,这似乎很难维护。

如果有人对如何使这项工作有任何见解,我将不胜感激!

附加位

目前,我正在定义我的组级 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%
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*rki 3

您可以使用“自定义变量宏”(http://nagios.sourceforge.net/docs/3_0/macros.html

在您的 ping 服务定义中使用例如:

check_command  check_ping!200.0,20%!$_HOSTVAR_SERVICE_PING_CRITICAL_RTA$,40%
Run Code Online (Sandbox Code Playgroud)

在您的主机模板中设置默认值:

_VAR_SERVICE_PING_CRITICAL_RTA  500
Run Code Online (Sandbox Code Playgroud)

在主机定义中应使用差异值集,例如

_VAR_SERVICE_PING_CRITICAL_RTA  1500
Run Code Online (Sandbox Code Playgroud)

明确地。