运维案例

如何监控资源池使用情况

2019-05-06  本文已影响0人  爱拼才会赢Jack

因为Yarn资源池队列满了无法提前干预,所以基于CDH5.7版本开发python脚本,大部分原因可能都是个别MapReduce任务占用大部分资源。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author: chentujin
# funaction: get hadoop YARN ResourceManager App Running Status
import sys, json, os
import requests
import time, datetime

#yarn app status api interface
def get_yarn_status():
    try:
        url = "http://172.18.18.100:8088/ws/v1/cluster/scheduler"
        header = {"Content-Type": "application/json"}
        request = requests.get(url, headers=header)
        if request.status_code == 200:
            obj = json.loads(request.text)
            return obj
        else:
            print(request.status_code)
            return 'err'
    except Exception as err:
        print(err)
        return 'err'

if __name__ == '__main__':
    ret = get_yarn_status()
    tmp = time.time()
    log_time = time.strftime('%Y-%m-%d %H:%M', time.localtime(tmp))
    if len(ret) > 0 and ret != 'err':
        print("check ok.")
        result = ret['scheduler']['schedulerInfo']['rootQueue']['childQueues']
        for n in result:
            queue_name = n['queueName'].split('.')[1]
            used_memory = n['usedResources']['memory']
            used_vcores = n['usedResources']['vCores']
            max_memory = n['maxResources']['memory']
            max_vcores = n['maxResources']['vCores']
            if max_vcores == used_vcores or max_memory == used_memory:
                print("ResourcePoll Full: queue %s cpu %s memory %s" %(queue_name,max_vcores,max_memory))
上一篇 下一篇

猜你喜欢

热点阅读