#!/bin/sh
ip=10.116.100.11
port=8088
export HADOOP_HOME=/app/hadoop/bin
rmstate1=$($HADOOP_HOME/yarn rmadmin -getServiceState rm1)
rmstate2=$($HADOOP_HOME/yarn rmadmin -getServiceState rm2)
if [ $rmstate1 == *active* ]
then
   ip=10.116.100.10
fi
echo $ip
cd /home/yarn/queuecheck
rm -f maxmemory.txt
rm -f usedmemory.txt
rm -f rate.txt
rm -f qrate.txt
curl http://$ip:$port/ws/v1/cluster/scheduler | jq . | sed 's/\"//g' > scheduler.json
sed -i '1,5d' scheduler.json
sed -n -e :a -e '1,33!{P;N;D;};N;ba' scheduler.json > nscheduler.json
cat nscheduler.json | grep -i "queueName" | awk -F ": " '{print $2}' | awk -F "," '{print $1}' > qname.txt
cat nscheduler.json | grep -i "memory" | awk -F ": " '{print $2}' | awk -F "," '{print $1}' > memory.txt
line=$(cat memory.txt | wc -l)
for((k=2;k<$line;k=k+6))
do
  sed -n "$k p" memory.txt | awk '{print $1}' >> maxmemory.txt
done
for((j=3;j<$line;j=j+6))
do
  sed -n "$j p" memory.txt | awk '{print $1}' >> usedmemory.txt
done
uarr=($(cat usedmemory.txt | awk '{print $1}'))
marr=($(cat maxmemory.txt | awk '{print $1}'))
for((m=0;m<${#uarr[@]};m++))
do
   for((n=0;n<${#marr[@]};n++))
   do
     if [ $m -eq $n ]
     then
        if [[ ${uarr[$m]} == *e* ]]
        then
           u1=$(echo ${uarr[$m]} | grep -i "e+0" | awk -F "e" '{print $1}')
           u2=$(echo ${uarr[$m]} | grep -i "e+0" | awk -F "e" '{print $2}' | awk -F "+0" '{print $2}')
           if [ $u2 -eq 6 ]
           then
              u3=`echo "$u1*1000000/1024" | bc`
           elif [ $u2 -eq 7 ]
           then
              u3=`echo "$u1*10000000/1024" | bc`
           elif [ $u2 -eq 8 ]
           then
              u3=`echo "$u1*100000000/1024" | bc`
           fi
        else
           u3=`echo "sclae=2; ${uarr[$m]}/1024" | bc`
        fi
        if [[ ${marr[$n]} == *e* ]]
        then
           m1=$(echo ${marr[$n]} | grep -i "e+0" | awk -F "e" '{print $1}')
           m2=$(echo ${marr[$n]} | grep -i "e+0" | awk -F "e" '{print $2}' | awk -F "+0" '{print $2}')
           if [ $m2 -eq 6 ]
           then
              m3=`echo "$m1*1000000/1024" | bc`
           elif [ $m2 -eq 7 ]
           then
              m3=`echo "$m1*10000000/1024" | bc`
           elif [ $m2 -eq 8 ]
           then
              m3=`echo "$m1*100000000/1024" | bc`
           fi
        else
           m3=`echo "sclae=2; ${marr[$n]}/1024" | bc`
        fi
        rate=$(printf "%.2f" `echo "scale=2;$u3/$m3"|bc`)
        nrate=`echo "$rate*100" | bc`
        echo $nrate >> rate.txt
     fi
   done
done
qarr=($(cat qname.txt | awk '{print $1}'))
rarr=($(cat rate.txt | awk '{print $1}'))
for((a=0;a<${#qarr[@]};a++))
do
   for((b=0;b<${#rarr[@]};b++))
   do
     if [ $a -eq $b ]
     then
        echo ${qarr[$a]}":"${rarr[$b]} >> qrate.txt
     fi
   done
done
url="http://xxx/monitor/report/sendReport"
linenum=$(cat qrate.txt | wc -l)
let linenum+=1
echo $linenum
#上报数据
function postdata(){
for (( k = 1; k< $linenum ; k++ ))
  do
  key=$(echo $(sed -n "$k p" qrate.txt | awk -F ":" '{print "bdp.ops.queue_used##qname="$1"##cluster=bdp##env=prod"}') | awk '{gsub(/[[:blank:]]*/,"",$0);print $0;}' )
  value=$(sed -n "$k p" qrate.txt | awk -F ":" '{print $2}')
  data="{\"key\":\"$key\",\"value\":\"$value\"}"
  echo $data
  cmd="curl -s -X POST -H 'Content-type':'application/json' -d '${data}' ${url}"
  sh -c "$cmd"
  done
}
postdata

expression="x>90"
time=5
count=1
alertMode="1,2,3"
members="bdp-ops"
call_users="bdp-ops"
call_content="BDP离线集群Yarn队列使用率告警"
add_url="http://xxx/monitor/rule/addReport"
hnum=$(cat qrate.txt | wc -l)
let hnum+=1
echo $hnum
function queuealert(){
for(( n = 1;n<$hnum;n++))
do
key=$(sed -n "$n p" qrate.txt | awk -F ":" '{print "bdp.ops.queue_used##qname="$1"##cluster=bdp##env=prod"}')
str1=$(sed -n "$n p" qrate.txt  | awk -F ":" '{print $1}')
str2="的使用率大于90%,请检查Yarn UI作业运行情况"
description="队列"${str1}${str2}
add_data="{\"id\":\"$key\",\"expression\":\"$expression\",\"time\":$time,\"count\":$count,\"alertMode\":\"$alertMode\",\"members\":\"$members\",\"description\":\"$description\",\"call_users\":\"$call_users\",\"call_content\":\"$call_content\"}"
echo $add_data
add_cmd="curl -s -X POST -H 'Content-type':'application/json' -d '${add_data}' ${add_url}"
sh -c "$add_cmd"
done
}
queuealert

  

Hadoop记录- Yarn scheduler队列采集的更多相关文章

  1. Hadoop记录- Yarn Job MAX

    #!/bin/sh #yarn job status:NEW.NEW_SAVING.SUBMITTED.ACCEPTED.RUNNING.FINISHED.FAILED.KILLED nnum=$(/ ...

  2. Hadoop记录-Yarn命令

    概述 YARN命令是调用bin/yarn脚本文件,如果运行yarn脚本没有带任何参数,则会打印yarn所有命令的描述. 使用: yarn [--config confdir] COMMAND [--l ...

  3. Hadoop记录-yarn ResourceManager Active频繁易主问题排查(转载)

    一.故障现象 两个节点的ResourceManger频繁在active和standby角色中切换.不断有active易主的告警发出 许多任务的状态没能成功更新,导致一些任务状态卡在NEW_SAVING ...

  4. 利用yarn多队列实现hadoop资源隔离

    大数据处理离不开hadoop集群的部署和管理,对于本来硬件资源就不多的创业团队来说,做好资源的共享和隔离是很有必要的,毕竟不像BAT那么豪,那么怎么样能把有限的节点同时分享给多组用户使用而且互不影响呢 ...

  5. hadoop记录-Hadoop参数汇总

    Hadoop参数汇总 linux参数 以下参数最好优化一下: 文件描述符ulimit -n 用户最大进程 nproc (hbase需要 hbse book) 关闭swap分区 设置合理的预读取缓冲区 ...

  6. Hadoop记录-hadoop介绍

    1.hadoop是什么? Hadoop 是Apache基金会下一个开源的大数据分布式计算平台,它以分布式文件系统HDFS和MapReduce算法为核心,为用户提供了系统底层细节透明的分布式基础架构. ...

  7. hadoop之yarn详解(框架进阶篇)

    前面在hadoop之yarn详解(基础架构篇)这篇文章提到了yarn的重要组件有ResourceManager,NodeManager,ApplicationMaster等,以及yarn调度作业的运行 ...

  8. hadoop之yarn(优化篇)

    最近一直在学习hadoop的一些原理和优化,然后也做了一些实践,也有没有去做实践的,反正个人观点都记录下来 一.yarn的介绍 YARN的基本结构由一个ResourceManager与多个NodeMa ...

  9. Fair Scheduler 队列设置经验总结

    Fair Scheduler 队列设置经验总结 由于公司的hadoop集群的计算资源不是很充足,需要开启yarn资源队列的资源抢占.在使用过程中,才明白资源抢占的一些特点.在这里总结一下. 只有一个队 ...

随机推荐

  1. Linux shell 及命令汇总

    1 文件管理命令 1.cat命令:将文件内容连接后传送到标准输出或重定向到文件 2.chmod命令:更改文件的访问权限 3.chown命令:更改文件的所有者 4.find命令:查找(符合条件)文件并将 ...

  2. Python爬虫之正则表达式(3)

    # re.sub # 替换字符串中每一个匹配的子串后返回替换后的字符串 import re content = 'Extra strings Hello 1234567 World_This is a ...

  3. Windows程序设计:格式化对话框的设计

    刚开始学习Windows程序设计,磕磕碰碰,先做个小笔记缓缓神经,主要是将MessageBox这个Windows API函数的. MessageBox函数是许多人刚开始学习Windows程序设计或者是 ...

  4. Ubuntu下安装JDK详细教程

    Ubuntu下安装JDK详细教程 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ Ubuntu版本:Ubuntu-12.04.5-desktop-i386 ...

  5. RESTful API规范

    1. 域名 应该尽量将API部署在专用的域名下. https://api.example.com 如果确定API简单,不会有进一步的括在,可以考虑放在主域名之下. https://example.or ...

  6. iowait 过高问题的查找及解决linux

    Linux 有许多可用来查找问题的简单工具,也有许多是更高级的 I/O Wait 就是一个需要使用高级的工具来debug的问题,当然也有许多基本工具的高级用法.I/O wait的问题难以定位的原因是因 ...

  7. Arduino 串口测试 电脑发数据接收后立马返回

    String comdata = ""; void setup() { Serial.begin(9600); while(Serial.read()>= 0){} //cl ...

  8. Linux内存管理 (6)vmalloc

    专题:Linux内存管理专题 关键词:vmalloc.页对齐.虚拟地址连续.物理不连续 至此,已经介绍了集中内核中内存分配函数,在开始简单做个对比总结Linux中常用内存分配函数的异同点,然后重点介绍 ...

  9. Java连接数据库,及增删改查

    自定义连接数据库的util类 package com.shuzf.jdbc; import java.sql.Connection; import java.sql.DriverManager; im ...

  10. UIImagePickerDelegate - 官方文档说明

    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDic ...