主机上需要安装 jq 用来解析 json 串
访问 API,获取 json 数据
curl -s --negotiate -u : "$rm:8088/ws/v1/cluster/scheduler"
通过 jq 命令来解析队列部分的数据
queue_json=`echo $queue_json|jq '.scheduler.schedulerInfo.queues'`
获取队列总数量
queue_json_size=`echo $queue_json|jq '.queue[]|.queueName'|wc -l`
根据总数来遍历数据,得到每个队列的信息
for((j=0;j<$queue_json_size;j++))
do
queue_name=`echo $queue_json|jq ".queue[$j].queueName"|sed 's/\"//g'`
#echo $queue_name
vcore_total=`echo $queue_json|jq ".queue[$j].maxEffectiveCapacity.vCores"`
vcore_used=`echo $queue_json|jq ".queue[$j].resourcesUsed.vCores"`
vcore_avali=`expr $vcore_total-$vcore_used|bc`
vcore_used_rate=$([ $vcore_total == 0 ] && echo 0 || echo "$vcore_used $vcore_total"| awk '{printf "%.2f",$1/$2*100}')
mem_total=`echo $queue_json|jq ".queue[$j].maxEffectiveCapacity.memory"`
mem_used=`echo $queue_json|jq ".queue[$j].resourcesUsed.memory"`
mem_avali=`expr $mem_total-$mem_used|bc`
mem_used_rate=$([ $mem_total == 0 ] && echo 0 || echo "$mem_used $mem_total"| awk '{printf "%.2f",$1/$2*100}')
app_submitted=`echo $queue_json|jq ".queue[$j].numApplications"`
app_running=`echo $queue_json|jq ".queue[$j].numActiveApplications"`
app_completed=`echo $queue_json|jq ".queue[$j].numPendingApplications"`
done
根据 需要将数据推出去,或者写入数据库
脚本弊端:目前只支持两个层级的队列,脚本还需要优化