比方说,给定的主机FooHost
正在运行Apache2。 Icinga2运行ssh命令检查,并发现Apache2未运行,从而触发严重警报。
是否可以让Icinga2在此事件上执行脚本?在此示例中,我想编写一个脚本,对systemctl restart apache2
进行SSH远程执行。
或者,我们可以编写一个可以在 all 服务器上部署的看门狗脚本,但是将其写入Icinga2框并使用ssh remote execute更为有意义。中央控制。
除非重新启动也失败,否则我认为没有理由必须聘请工程师来解决此问题。
答案 0 :(得分:0)
pgrep apache2 || /bin/systemctl restart apache2 > /dev/null 2>&1
或
/bin/systemctl status apache2 || /bin/systemctl restart apache2
,这意味着如果apache2服务未运行,它将重新启动。
答案 1 :(得分:0)
您可以使用Event Commands(例如Icinga 1.x / Nagios中的事件处理程序)来实现这一目标。
文档显示以下示例,该示例使用自定义的 shell 脚本执行重新启动操作:
object EventCommand "restart_service" {
command = [ PluginDir + "/restart_service" ]
arguments = {
"-s" = "$service.state$"
"-t" = "$service.state_type$"
"-a" = "$service.check_attempt$"
"-S" = "$restart_service$"
}
vars.restart_service = "$procs_command$"
}
object Service "Process httpd" {
check_command = "procs"
event_command = "restart_service"
max_check_attempts = 4
host_name = "icinga2-client1.localdomain"
command_endpoint = "icinga2-client1.localdomain"
vars.procs_command = "httpd"
vars.procs_warning = "1:10"
vars.procs_critical = "1:"
}