使用nagios调用shell脚本执行

时间:2015-07-27 12:03:59

标签: shell automation sh nagios

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

2 个答案:

答案 0 :(得分:1)

事件处理程序

Nagios和Naemon允许执行自定义脚本,包括主机和服务进入“问题状态”。由于您的实现是为了重新启动特定的应用程序,因此您很可能需要成为服务事件处理程序。

来自Nagios Documentation

  

可以在程序范围内启用或禁用事件处理程序   使用主配置文件中的enable_event_handlers。

     

可以启用或禁用特定于主机和服务的事件处理程序   在主机和服务中使用event_handler_enabled指令   定义。特定于主机和服务的事件处理程序不会   如果禁用全局enable_event_handlers选项,则执行。

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

  1. 首先,通过修改或添加以下行到Nagios配置文件来启用事件处理程序。
  2. [IE:/usr/local/nagios/etc/nagios.cfg]:

    enable_event_handlers=1

    1. 定义并启用将触发脚本的服务故障的事件处理程序。通过在已定义的服务中添加两个event_handler指令来实现此目的。
    2. [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连接并执行:
      2. [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连接到远程系统,并执行您已决定的命令。

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

答案 1 :(得分:0)

您可以使用 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插件。我经常使用它。

祝你好运!!