我很难在 Nagios 中为通配符和正则表达式(尤其是当它们与排除一起工作时)找到好的文档。这是我正在尝试做的一个例子:
在 中nagios.cfg,设置了以下内容,假设启用*并?作为通配符:
use_regexp_matching=1
use_true_regexp_matching=0
Run Code Online (Sandbox Code Playgroud)
在 中services.cfg,我们有一项服务,我们希望将其应用于除少数对象之外的所有对象;那是所有 Linux 主机,但不是负载平衡器。显式排除工作:
define service {
use generic-service
service_description Puppet check
hostgroup_name prod, staging, !prod-site_a-lbs
check_command check_puppet_alive_nrpe
}
Run Code Online (Sandbox Code Playgroud)
但是,我们有很多站点,每个站点在自己的主机组中都有负载均衡器(因此站点可以轻松管理通知)。而不是有一长串!prod-site_a-lbs, !staging-site_a-lbs, !prod-site_b-lbs。我希望能够将该hostgroup_name行修改为:
hostgroup_name prod, staging, !*-lbs
Run Code Online (Sandbox Code Playgroud)
我已经尝试过了,虽然我们没有收到错误消息,但此服务检查仍在应用于我们的负载平衡器。为了仔细检查,我也试过:
hostgroup_name prod, staging, !.*-lbs
Run Code Online (Sandbox Code Playgroud)
但是,这use_true_regexp_matching在运行时失败了,正如预期的那样(因为未设置)checkconfig-noprecache:
Error: Could not find any hostgroup matching '!.*lbs' ...
Run Code Online (Sandbox Code Playgroud)
在测试中,.*被接受的checkconfig-noprecacheif!被删除。
我们正在尝试的可能吗?我们可以使用通配符来排除匹配的主机组吗?或者,有没有一种替代方法同样干净?
更新(2015-09-21):在测试 Keith 的回答后,此配置有效:
在services.cfg:
define service {
use generic-service
service_description Puppet check
hostgroup_name prod, staging, !lbs
check_command check_puppet_alive_nrpe
}
Run Code Online (Sandbox Code Playgroud)
在 中hostgroups.cfg,我使用“成员”指令中的正则表达式定义了一个新的主机组:
define hostgroup {
hostgroup_name lbs
alias Load Balancers
members ^lb.*
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2464 次 |
| 最近记录: |