Chinaunix首页 | 论坛 | 博客
  • 博客访问: 407609
  • 博文数量: 119
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 1061
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-14 12:48
个人简介

醉心于技术。

文章分类

全部博文(119)

文章存档

2018年(34)

2016年(1)

2015年(4)

2014年(6)

2013年(74)

我的朋友

分类: 系统运维

2015-02-13 11:53:33

一. 介绍
的事件处理(Event Handlers)可以在监控的主机或服务的状态发生变化时触发脚本或系统命令来对故障进行处理,事件处理在告警发出前发生。

事件处理会在下面情况下触发:
1). 主机或服务处于一个软态(SOFT)故障状态时;
2). 主机或服务处于一个硬态(HARD)故障状态时;
3). 主机或服务从软态或硬态的故障状态中初始恢复时;

事件处理命令可以通过各种语言脚本来完成,脚本中需要处理下面的参数:
对服务的:$SERVICESTATE$、$SERVICESTATETYPE$和$SERVICEATTEMPT$;
对主机的:$HOSTSTATE$、$HOSTSTATETYPE$和$HOSTATTEMPT$;
脚本须检测这些作为命令行参数传入的值,并采取必要动作来处理这些值。

下面通过一个简单的实例来说明,事件处理的用法。先易后难。在系统高负载的情况下,一般就登陆不了服务器,收集当时服务器状态对服务故障排查非常重要的。因此,在检测到系统负载报警的情况下,top下系统信息。

二. nagios配置

# 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/

添加命令:

# 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$
}

配置服务使用事件处理:

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
        }

打开全局事件处理

# vi /usr/local/nagios/etc/nagios.cfg
enable_event_handlers=1

三. NRPE配置
更改nrpe配置

# vi /usr/local/nagios/etc/nrpe.cfg
#定义执行的命令
command[process_snapshot]=top -cSb n 1 | tail -n +8 | sort -rn -k9 | head -n20 > /tmp/proc_snap.log 
#允许命令中带有参数
dont_blame_nrpe=1

如果使用脚本,需要给nagios执行脚本的权限

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

四. 效果

eventhandler

eventhandler

这里只要是负载告警了就会top下当前状态信息。后面应用将精确到HARD故障状态时触发处理。

来源:

阅读(1981) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~