mr923 发表于 2015-12-24 11:59:32

nagios event handler应用

  一. 介绍
nagios的事件处理(Event Handlers)可以在监控的主机或服务的状态发生变化时触发脚本或系统命令来对故障进行处理,事件处理在告警发出前发生。
  事件处理会在下面情况下触发:
1). 主机或服务处于一个软态(SOFT)故障状态时;
2). 主机或服务处于一个硬态(HARD)故障状态时;
3). 主机或服务从软态或硬态的故障状态中初始恢复时;
  事件处理命令可以通过各种语言脚本来完成,脚本中需要处理下面的参数:
对服务的:$SERVICESTATE$、$SERVICESTATETYPE$和$SERVICEATTEMPT$;
对主机的:$HOSTSTATE$、$HOSTSTATETYPE$和$HOSTATTEMPT$;
脚本须检测这些作为命令行参数传入的值,并采取必要动作来处理这些值。
  下面通过一个简单的实例来说明,事件处理的用法。先易后难。在系统高负载的情况下,一般就登陆不了服务器,收集当时服务器状态对服务故障排查非常重要的。因此,在检测到系统负载报警的情况下,top下系统信息。
  二. nagios配置



view source
print?

# mkdir /usr/local/nagios/libexec/eventhandlers
# cd /usr/local/nagios/libexec/eventhandlers/
# vim process_snapshot.sh
内容如下:
#!/bin/bash

case "$1" in
    OK)
      ;;
    WARNING)
      /usr/local/nagios/libexec/check_nrpe -H $4 -c process_snapshot
      ;;
    UNKNOWN)
      ;;
    CRITICAL)
      /usr/local/nagios/libexec/check_nrpe -H $4 -c process_snapshot
      ;;
esac
exit 0
# chmod +x process_snapshot.sh
# chown -R nagios.nagios /usr/local/nagios/libexec/eventhandlers/  添加命令:



view source
print?

# vim /usr/local/nagios/etc/objects/commands.cfg
##########################################
#
#   event handlers
#
define command{
      command_name    process_snapshot
      command_line    $USER1$/eventhandlers/process_snapshot.sh $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$ $HOSTADDRESS$
}  配置服务使用事件处理:



view source
print?

define service{
      use                           local-service
      host_name                     localhost
      service_description             Current Load
      normal_check_interval         1
      check_command                   check_local_load!1.0,4.0,3.0!2.0,6.0,4.0
      event_handler                   process_snapshot
      }  打开全局事件处理



view source
print?

# vi /usr/local/nagios/etc/nagios.cfg
enable_event_handlers=1  三. NRPE配置
更改nrpe配置



view source
print?

# vi /usr/local/nagios/etc/nrpe.cfg
#定义执行的命令
command=top -cSb n 1 | tail -n +8 | sort -rn -k9 | head -n20 > /tmp/proc_snap.log
#允许命令中带有参数
dont_blame_nrpe=1  如果使用脚本,需要给nagios执行脚本的权限



view source
print?

# visudo
nagios ALL=(root) NOPASSWD:/usr/local/nagios/libexec/eventhandlers/XXXXXX.sh  四. 效果


  这里只要是负载告警了就会top下当前状态信息。后面应用将精确到HARD故障状态时触发处理。
  来源:http://www.ttlsa.com/nagios/nagios-event-handlers-application/

ewelamb 发表于 2016-8-5 10:48:57

这个好东西。。学习了
页: [1]
查看完整版本: nagios event handler应用