Nagios 自定义插件与安装使用之监控dead datanodes

现在我使用nagios来监控hadoop的核心进程,rm,nm,dn,nn,zkfc,jn,zk等,但是有时候进程虽然还在,但是日志不刷新,web ui上可以看到有些datanodes节点已经变为dead状态,不服务.

为了在nagios中显示出dead的datanodes我写了自定义的插件,在某一台nn节点上配置了一个command.代码要点,

首先要获取active的namenode,我们关注的是active的,不是standby的.

第二步,通过curl jmx的方法来获取我们想要的信息,过滤组合,然后发出来.

#!/bin/bash

if [[ $(su - ochadoop -c 'hdfs haadmin -getServiceState nn1')  -eq "active" ]]; then
	host="101"
else
	host="102"
fi
echo $host

nm=$( curl http://$host:50082/jmx | grep NumDeadDataNodes | grep -oE "[0-9]*" );
#echo $nm
deadnodes=$(curl http://$host:50082/jmx?qry=Hadoop:service=NameNode,name=NameNodeInfo | grep DeadNodes | sed -e "s/\\"//g" | sed -e "s/"//g" | sed -e 's/[[:space:]][[:space:]]*/ /g');
#echo $deadnodes

if [ $nm -gt 1 ]; then
		echo "detect dead datanodes ,nums:$nm, lists:$deadnodes"
		exit 2
	else 
		echo 'status is ok'
		exit 0
fi

安装:

save as check_deadnodes.sh in /usr/local/nagios/libexec/
chmod +x check_deadnodes.sh

配置 etc/objects下面的commands.cfg文件,添加如下:

define command{
        command_name    check-deadnodes
        command_line    $USER1$/check_deadnodes.sh
        }
原文地址:https://www.cnblogs.com/huaxiaoyao/p/5028509.html