比方说,在给定主机,FooHost
,正在运行的Apache2。 Icinga2通过运行ssh命令检查和发现的Apache2没有运行,这将触发严重警报。
是否有可能有Icinga2对本次活动执行脚本?在这个例子中,我想编写一个脚本,它的SSH远程执行systemctl restart apache2
的。
作为替代,我们可以写,可以在所有服务器上部署一个监视脚本,但它更有道理把它写在Icinga2框,并使用SSH远程执行,因为它允许中央控制。
我看不出有任何理由要在有一个工程师的日志来解决这个问题,除非这个重启也失败了。
您可以使用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:"
}
据我知道这是不可能的,但你可以使用的nagios NRPE命令或一个cronjob这是这样执行的命令
pgrep apache2 || /bin/systemctl restart apache2 > /dev/null 2>&1
要么
/bin/systemctl status apache2 || /bin/systemctl restart apache2
这意味着,如果Apache2的服务没有运行也将重新启动。