4591566 发表于 2019-1-13 06:47:38

CentOS 7 中自定义nagios 插件脚本

  一、 系统环境
  操作系统:CentOS 7

  nagios 服务器端版本:nagios-4.0.8-2.el7.x86_64
  nrpe客户端版本:nrpe-2.15-7.el7.x86_64
  二、nagios自定义插件返回码:
      Return Code   Service State   Host State
      0      OK                  UP
      1      WARNING         UP or DOWN/UNREACHABLE*
      2      CRITICAL      DOWN/UNREACHABLE
      3      UNKNOWN         DOWN/UNREACHABLE
  三、定义插件,将插件放在 /usr/lib64/nagios/plugins
  (1)脚本需要具有执行权限
  -rwxrwxrwx 1 nagios nagios 281 May 24 13:35 check_zfstatus.sh
  (2)定义监控命令,在被监控端/etc/nagios/nrpe.cfg 中,
  command= /usr/bin/sudo/usr/lib64/nagios/plugins/check_zfstatus.sh
  (3)在nagios 服务器端定义 service 及command
   define command{
          command_name check_nrpe
          command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
         }
  define service{
            use         local-service
            host_name          test
            service_description      zfs_status
            check_command      check_nrpe!check_zfs
         }
  四、重启进程,在可以在监控界面看到定义的服务了
  PS:在安装过程中遇到的问题及解决办法
  附上脚本代码:
  #! /bin/bash
   sudo   /usr/sbin/zpoolscrub myzpool
   device=` sudo /usr/sbin/zpool status | grep -o UNAVAIL | uniq `
   status=UNAVAIL
if [[ "$device" == "$status" ]]; then
    echo " devicewrong!"
    exit 2
else
    echo"device all right;"
    exit 0
fi
脚本说明:
  (1)因为zpool 只有root用户有权限,nrpe 无法调用,所以需要编辑 /etc/sudoers 文件,给予
  nrpe 权限。添加   nrpeALL=(ALL)   NOPASSWD:ALL
  Defaults    requiretty,修改为 #Defaults    requiretty,表示不需要控制终端。
  (2)[[ "$device" == "$status" ]]   因为device变量有时会为空值,故需要在判断时候写两个中括号
  (3)如遇到监控状态输出与 脚本执行结果不一致时,调错,切换到nagios 用户
/usr/lib64/nagios/plugins/check_nrpe -H IP地址 -c check_zfs
  

  

  
  



页: [1]
查看完整版本: CentOS 7 中自定义nagios 插件脚本