是否有可能运行一个脚本时Icinga2一台主机拥有关键的服务?

问题描述 投票:0回答:2

比方说,在给定主机,FooHost,正在运行的Apache2。 Icinga2通过运行ssh命令检查和发现的Apache2没有运行,这将触发严重警报。

是否有可能有Icinga2对本次活动执行脚本?在这个例子中,我想编写一个脚本,它的SSH远程执行systemctl restart apache2的。

作为替代,我们可以写,可以在所有服务器上部署一个监视脚本,但它更有道理把它写在Icinga2框,并使用SSH远程执行,因为它允许中央控制。

我看不出有任何理由要在有一个工程师的日志来解决这个问题,除非这个重启也失败了。

nagios icinga icinga2
2个回答
1
投票

您可以使用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:"
}

0
投票

据我知道这是不可能的,但你可以使用的nagios NRPE命令或一个cronjob这是这样执行的命令

pgrep apache2 || /bin/systemctl restart apache2 > /dev/null 2>&1

要么

/bin/systemctl status apache2 || /bin/systemctl restart apache2

这意味着,如果Apache2的服务没有运行也将重新启动。

© www.soinside.com 2019 - 2024. All rights reserved.