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

使用主机服务覆盖 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%
}

不幸的是,目前,即使主机名和服务描述与组级 PING 检查相匹配,也只列出了一个 PING 服务,server-01而且这是组级 PING 检查,而不是主机级 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%
}

答案1

我知道这是一篇旧帖子,但我在寻找其他内容时偶然发现了这个问题。我不是 Nagios 专家,但我确实喜欢它。

您在主机组中设置的任何检查都将应用于该主机组中的任何主机(您已经知道)。如果您在主机 cfg 中创建相同的检查,那么它将覆盖主机组检查。

无论如何,我这样做的方法是:

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!-l c -w 80 -c 90
    }

2. 但是,有一台服务器的可用空间比正常情况下少得多。因此,在其主机 cfg 中,我拥有:

define service{
    use         generic-service
    host_name       ServerName
    service_description C: Drive Space
    check_command       check_nt!USEDDISKSPACE!-l c -w 95 -c 99
    notification_period     workhours
    }

现在,服务检查将在主机组中所有主机达到 80% 和 90% 时向您发出警报,但您添加了检查并且其中包含更改值的主机除外。

通过这种方式安排,我只能添加自定义服务以及主机定义中不属于常态的服务检查。

我不确定这是否常见,但是本文在设置配置文件时,我大吃一惊。我已经厌倦了编辑这些巨大的文本文件,而这让一切变得如此简单。

无论如何,我希望这会有所帮助。

答案2

您可以使用“自定义变量宏”(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

明确地。

相关内容