Nagios 中的主机可以使用多个模板吗?
我正在尝试监控一些 MSSQL 服务器。其中一些是具有单个实例的独立单服务器,而其他一些则使用 MSCS 形成 2 节点 HA 集群。
我想在特定服务器上监控的内容与我想为特定 SQL 实例监控的内容不同。例如,我想使用模板windows-server
告诉我有关给定服务器的窗口的一般信息。同样,我想使用特定的 SQL 模板来sql-instance
监控特定于 SQL 的内容,例如已连接的用户、批处理请求等。
对于我的 2 节点集群,这非常容易 - 我有三个主机定义:一个windows-server
用于每个特定节点,一个sql-instance
指向集群 DNS 名称。
对于单个实例,我希望能够拥有一个主机,该主机同时使用windows-server
和sql-instance
模板,因为它们都应该指向同一个主机名。但是,任何尝试执行以下操作:
define host {
use windows-server, sql-instance
}
或者
define host {
use windows-server
use sql-instance
}
导致 nagios 只选择其中一个模板而忽略另一个。
那么,如何在 Nagios 中最好地实现多重模板继承?
答案1
我使用了一种变通方法解决了这个问题。我没有让特定主机继承多个模板,而是将服务附加到不同的主机组,并将每个主机放在多个主机组中:
define host {
use generic-host
hostgroups sql-servers,sql-instances
}
答案2
如何让一个模板继承另一个模板?这就是我在 nagios 上的做法。您可以输入use windows-server
服务器sql-instance
模板定义,然后使用 sql-instance 定义的任何东西也将继承 windows-server 定义。在这种情况下,您可能还想将 sql-instance 重命名为 win-sql-instance。
答案3
从 3.x 开始,Nagios 支持第一个示例中的开箱即用语法:
define host {
use windows-server,sql-instance
}
请参阅http://nagios.sourceforge.net/docs/3_0/objectinheritance.html以及变更日志。
(我本来想将此作为评论添加到已接受的答案中,但没有这样做所需的声誉)
答案4
我在我的 Icinga 环境中尝试了这个并且它对 Icinga 有效:
define host {
host_name Testhost
address 192.168.220.1
check_command check-host-alive
notification_interval 15
notification_options d,u,r
max_check_attempts 3
active_checks_enabled 1
passive_checks_enabled 0
notifications_enabled 1
check_period 24x7
notification_period 24x7
contact_groups admins
parents Email Prim,Source
use Default_timeperiod_interval_1,Default_timeperiod_interval_10
}
我不太确定 Nagios,但它应该不会有太大差别。