要到达 customer-es-prd-dobb1,数据包必须通过主机“cust-client-vpn”穿越(基于客户端的)vpn。中间主机有一个名为“customer-prod-vpn”的检查,用于监控特定连接的健康状况。
目标是使客户网络中的主机服务全部依赖于中介机器上的特定服务。然而我得到了
Error: Could not expand dependent services specified in service dependency (config file '/usr/local/nagios/etc/conf.d/servicedependency/customer.cfg', starting on line 1)
Error processing object config files!
如果我将通配符替换为“cpu 使用率”(现有检查),它就可以起作用。
这是相关的依赖块:
define servicedependency {
dependent_host_name customer-es-prd-dobb1
dependent_service_description *
host_name cust-client-vpn
service_description customer-prod-vpn
execution_failure_criteria w,u,c
notification_failure_criteria w,u,c
}
中间主机配置:
define host {
host_name cust-client-vpn
alias cust-client-vpn
address ip_addr_was_here
use nrpe-server,host-pnp
hostgroups debian-servers, monit-servers
_NRPESSL -n
contacts operations
}
这一切都取决于中间主机检查
define service {
use generic-service,srv-pnp
host_name cust-client-vpn
service_description customer-prod-vpn
check_command check_nrpe_1arg!check_customer_vpn_prod
check_interval 10
max_check_attempts 1
}
最后在 nagios 中检查“customer-prod-vpn”的状态:
customer-prod-vpn OK 05-20-2013 16:21:15 0d 14h 50m 42s 1/1 OK - UP
有没有 nagios ninjas 可以指出问题出在哪里?
答案1
‘' 仅在未使用正则表达式 (use_regexp_matching=0) 时才是有效的通配符。正则表达式中的通配符至少为 。
我选择了 .* 和 use_regexp_matching=1
答案2
看看节省时间的技巧文档页面...使用通配符的描述似乎表明你的方式应该工作,尽管他们没有明确地给出你想要做的事情的例子。
鉴于您的方法不起作用,我所知道的唯一方法就是使用服务组。
将该主机上的所有服务放入一个服务组(可能使用模板或通配符?),并使用该服务组作为依赖项。这确实有效;我就是这么做的。