当Icinga2主机具有关键服务时,是否可以运行脚本?

时间:2018-10-11 12:29:37

标签: nagios icinga icinga2

比方说,给定的主机FooHost正在运行Apache2。 Icinga2运行ssh命令检查,并发现Apache2未运行,从而触发严重警报。

是否可以让Icinga2在此事件上执行脚本?在此示例中,我想编写一个脚本,对systemctl restart apache2进行SSH远程执行。

或者,我们可以编写一个可以在 all 服务器上部署的看门狗脚本,但是将其写入Icinga2框并使用ssh remote execute更为有意义。中央控制。

除非重新启动也失败,否则我认为没有理由必须聘请工程师来解决此问题。

2 个答案:

答案 0 :(得分:0)

据我了解,这是不可能的,但是你可以使用 nagios nrpe命令 cronjob ,它是像这样的执行命令

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:"
}