一. 介绍
nagios的事件处理(Event Handlers)可以在监控的主机或服务的状态发生变化时触发脚本或系统命令来对故障进行处理,事件处理在告警发出前发生。
事件处理会在下面情况下触发:
1). 主机或服务处于一个软态(SOFT)故障状态时;
2). 主机或服务处于一个硬态(HARD)故障状态时;
3). 主机或服务从软态或硬态的故障状态中初始恢复时;文章源自运维生存时间-https://www.ttlsa.com/nagios/nagios-event-handlers-application/
事件处理命令可以通过各种语言脚本来完成,脚本中需要处理下面的参数:
对服务的:$SERVICESTATE$、$SERVICESTATETYPE$和$SERVICEATTEMPT$;
对主机的:$HOSTSTATE$、$HOSTSTATETYPE$和$HOSTATTEMPT$;
脚本须检测这些作为命令行参数传入的值,并采取必要动作来处理这些值。文章源自运维生存时间-https://www.ttlsa.com/nagios/nagios-event-handlers-application/
下面通过一个简单的实例来说明,事件处理的用法。先易后难。在系统高负载的情况下,一般就登陆不了服务器,收集当时服务器状态对服务故障排查非常重要的。因此,在检测到系统负载报警的情况下,top下系统信息。文章源自运维生存时间-https://www.ttlsa.com/nagios/nagios-event-handlers-application/
二. nagios配置文章源自运维生存时间-https://www.ttlsa.com/nagios/nagios-event-handlers-application/
# 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/
添加命令:文章源自运维生存时间-https://www.ttlsa.com/nagios/nagios-event-handlers-application/
# 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$ }
配置服务使用事件处理:文章源自运维生存时间-https://www.ttlsa.com/nagios/nagios-event-handlers-application/
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 }
打开全局事件处理文章源自运维生存时间-https://www.ttlsa.com/nagios/nagios-event-handlers-application/
# vi /usr/local/nagios/etc/nagios.cfg enable_event_handlers=1
三. NRPE配置
更改nrpe配置文章源自运维生存时间-https://www.ttlsa.com/nagios/nagios-event-handlers-application/
# 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执行脚本的权限文章源自运维生存时间-https://www.ttlsa.com/nagios/nagios-event-handlers-application/
# visudo nagios ALL=(root) NOPASSWD:/usr/local/nagios/libexec/eventhandlers/XXXXXX.sh
四. 效果文章源自运维生存时间-https://www.ttlsa.com/nagios/nagios-event-handlers-application/
文章源自运维生存时间-https://www.ttlsa.com/nagios/nagios-event-handlers-application/
文章源自运维生存时间-https://www.ttlsa.com/nagios/nagios-event-handlers-application/
这里只要是负载告警了就会top下当前状态信息。后面应用将精确到HARD故障状态时触发处理。文章源自运维生存时间-https://www.ttlsa.com/nagios/nagios-event-handlers-application/ 文章源自运维生存时间-https://www.ttlsa.com/nagios/nagios-event-handlers-application/
评论