我想要一个 nagios 警报,当 IP 号码存在时会发出警报,当 IP 号码不存在时会消失。我无法在 Google 上搜索这个,因为大多数人想要的恰恰相反。
我想知道是否有一种简单的方法可以做到这一点,或者我必须编写一个插件?
答案1
我建议使用最新监控插件包中包含的“negate”插件。该插件的手册页如下:https://www.monitoring-plugins.org/doc/man/negate.html
然后创建客户命令和自定义主机,例如:
define command{
command_name check-host-dead
command_line /usr/local/libexec/negate -s /usr/lib/nagios/plugins/check_ping -H '$HOSTADDRESS$' -w 5000,100% -c 5000,100% -p 1
}
和主持人加上愚蠢的服务:
define host {
host_name hostname.domain.tld
alias Verbose Description Server
address 192.168.1.50
parents parent.host_name
notifications_enabled 1 ; Host notifications are enabled
event_handler_enabled 1 ; Host event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
check_command check-host-dead
max_check_attempts 10
notification_interval 1440
notification_period wakehours
notification_options d,u,r
contact_groups noticeadmins
}
define service {
host_name hostname.domain.tld
service_description Return OK
check_command return-ok
use generic-service
contact_groups noticeadmins
normal_check_interval 10
notification_interval 60 ; set > 0 if you want to be renotified
}
需要注意的是,我们使用 Check_MK 作为 Nagios 的图形前端,并且从美学角度来看,每个主机都需要一个服务,否则我们会得到一个空白/无用的页面。因此,这是一项始终没问题的服务。在我的应用程序中,我只想在白天每天收到一次警报,因此是 1440/wakehours。您需要定义或更改 wakehours/noticeadmins 之类的内容。
答案2
如果您已经有一个可以工作的检查,但它所做的与您想要的完全相反,您是否尝试过更改退出值,以便它不会在“失败”时发出警报,而在“成功”时发出警报?在您的场景中,退出 0 表示失败,退出 1 或退出 2 表示成功。如果您对我所说的退出值感到困惑,请参阅这关联。