• 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
            }
    
  • 相关阅读:
    判断activity是否显示在界面上
    限制EditText的输入字数
    安卓自定义类似TabHost的导航栏
    安卓中加载布局文件的三种方法
    绘图——Android绘图基础:Canvas、Paint等
    使用简单图片
    使用原始资源
    MySQL分表(Partition)学习研究报告
    Docker基础知识介绍
    Python开发系列
  • 原文地址:https://www.cnblogs.com/huaxiaoyao/p/5028509.html
Copyright © 2020-2023  润新知