nagios的远程nrpe运行指定脚本,重启服务,event_handler指令

网上看了,大部分都是远程处理故障,也就是远程执行命令,需要无密码登录,配置ssh的key,既然有了check_nrpe,为何还需要远程执行,那不就是脱裤子放屁吗。

例子环境如下:

监控服务器上安装了nagios和check_nrpe,ip为192.168.0.100
被监控服务器安装nrpe的客户端,ip为192.168.0.200

客户端操作,也就是192.168.0.200操作
1、建立监控脚本,我们来监控php进程是否关掉,如果挂掉,在报警前我们重启apache,脚本名为handle_php,路径为/usr/local/nagios/libexec 如下:

#!/bin/bash
case "$1" in

    OK)
        echo 'ok' >> /usr/local/nagios/var/tmp.txt
        ;;
    WARNING)
        echo 'WARNING' >> /usr/local/nagios/var/tmp.txt
        ;;
    UNKNOWN)
        echo 'unknown' >> /usr/local/nagios/var/tmp.txt
        ;;
    CRITICAL)
        case "$2" in
            SOFT)
                case "$3" in
                    3)
                        echo 'sudo /etc/rc.d/init.d/httpd restart3' >>  /usr/local/nginx/var/tmp.txt
                        ;;
                    2)
                        echo 'sudo /etc/rc.d/init.d/httpd restart2' >> /usr/local/nagios/var/tmp.txt
                        ;;
                    1)
                        echo 'sudo /etc/rc.d/init.d/httpd restart1' >> /usr/local/nagios/var/tmp.txt
                        ;;
                    *)
                        echo 'critical*' >> /usr/local/nagios/var/tmp.txt
                esac
                ;;
            HARD)
                #这里的sudo 以及重启的命令,仅仅打印,只是为了说明可以执行,方便测试
                echo 'sudo /etc/rc.d/init.d/httpd restart' >> /usr/local/nagios/var/tmp.txt
               ;;
            *)
            echo 'aaaaaa' >> /usr/local/nagios/var/tmp.txt
            ;;
        esac
        ;;
    *)
        #打印参数,用于测试
        echo $1,$2,$3 >> /usr/local/nagios/var/tmp.txt
       ;;
    esac
exit 0

2、测试,看看脚本是否能执行
#/usr/local/nagios/libexec/handle_php CRITICAL soft 3
运行完毕后,在/usr/local/nagios/var/tmp.txt 中出现critical*,说明脚本运行没问题

3、编辑/usr/local/nagios/etc/nrpe.cfg文件,添加内容如下:
command[handle_php]=sudo /usr/local/nagios/libexec/handle_php $ARG1$ $ARG2$ $ARG3$
解释一下,$ARG1$ $ARG2$ $ARG3$三个参数,用空格分开
配置文件中   dont_blame_nrpe=1 ,默认为0,大概的意思是“

这个选项决定了NRPE守护进程是否允许客户端指定执行命令的参数。 这个选项需要在安装nrpe的时候开启——enable-command-args参数,否则不能用,***启用此选项存在安全风险! *** 
上面红字重要,否则,客户端脚本执行不了
重启nrpe,
killall nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

测试,通过在服务器上运行
/home/system/nagios/libexec/check_nrpe -H 192.168.0.200 -c handle_php -a CRITICAL SOFT 3
客户端查看/usr/local/nginx/var/tmp.txt的内容,有打印信息,客户端配置成功。

4、配置服务器端,配置主机监控文件,如下:
define service{
      use                                   hosta-service                                   ; Name of service template to use
      host_name                     a-192.168.0.200
      service_description      HTTP
      check_command          check_nrpe!check_http
      event_handler              check_nrpe!handle_php -a $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$
}

5、配置完毕,测试
重启systemctl restart nagios

经过以上配置,当触发错误信息三次的时候,发报警信息前,可以远程执行恢复命令
欢迎留言!

发表回复

您的电子邮箱地址不会被公开。