使用 nagios 调用 shell 脚本执行

Invoke a shell script execution using nagios

大家好,我有一个脚本可以重新启动服务器 (/scripts/startAll.sh) 中存在的所有组件(.jar 文件)。因此,每当我的服务器出现故障时,我都想使用 nagios 调用脚本的执行,这是 运行 在不同的 linux 服务器上。有可能这样做吗?请帮助如何使用nagios调用此脚本的执行?

事件处理程序

Nagios 和 Naemon 允许为主机和进入 'problem state.' 的服务执行自定义脚本,因为您的实现是为了重新启动特定应用程序,所以您很可能需要成为服务事件处理程序。

来自Nagios Documentation:

Event handlers can be enabled or disabled on a program-wide basis by using the enable_event_handlers in your main configuration file.

Host- and service-specific event handlers can be enabled or disabled by using the event_handler_enabled directive in your host and service definitions. Host- and service-specific event handlers will not be executed if the global enable_event_handlers option is disabled.


为服务或主机启用和创建事件处理程序命令

  1. 首先,通过修改或添加以下行到您的 Nagios 配置文件来启用事件处理程序。

[IE: /usr/local/nagios/etc/nagios.cfg]:

enable_event_handlers=1

  1. 定义并启用将触发脚本的服务故障事件处理程序。为此,请在您已定义的服务中添加两个 event_handler 指令。

[IE: /usr/local/nagios/etc/services.cfg]:

define service{
    host_name       my-server
    service_description my-check
    check_command       my-check-command!arg1!arg2!etc
    ....
    event_handler my-eventhandler
    event_handler_enabled   1
    }
  1. 最后一步是创建在第 2 步中命名的 event_handler 命令,并将其指向您已经创建的脚本。有几种方法(SSH、NRPE、本地托管、远程托管)。我将使用最简单的方法,在监控系统上托管一个 BASH 脚本,该脚本将通过 SSH 连接并执行:

[IE: /usr/local/nagios/etc/objects/commands.cfg]:

 define command{

        command_name    my-eventhandler

        command_line    /usr/local/nagios/libexec/eventhandlers/my-eventhandler.sh

        }

在此示例中,脚本"my-eventhandler.sh" 应使用SSH 连接到远程系统,并执行您决定的命令。

注意: 这仅作为您环境中 one box 的快速有效解决方案。在实践中,最好远程创建事件处理程序脚本,并使用 NRPE 等代理在传递 $HOSTNAME$ 变量时执行命令(从而允许解决方案扩展到多个系统)。我找到的使用 NRPE 执行事件处理程序的最简单教程可以在 here.

中找到

您可以使用 check_by_snmp.pl

通过 snmpd 在远程主机上 运行 shell 脚本

查看https://exchange.nagios.org/directory/Plugins/*-Remote-Check-Tunneling/check_by_snmp--2F-check_snmp_extend--2F-check_snmp_exec/details

这是一个非常有用的nagios插件。我经常使用它。

祝你好运!!