#!/usr/bin/env python
#-*- coding: utf-8 -*-
from docker import Client
import os
import re
import sys
import subprocess
import time
def check_container_stats(container_name,collect_item):
global result
result=0
container_collect=docker_client.stats(container_name)
old_result=eval(container_collect.next())
new_result=eval(container_collect.next())
container_collect.close()
if collect_item == 'cpu_total_usage':
result=new_result['cpu_stats']['cpu_usage']['total_usage'] - old_result['cpu_stats']['cpu_usage']['total_usage']
elif collect_item == 'cpu_system_uasge':
result=new_result['cpu_stats']['system_cpu_usage'] - old_result['cpu_stats']['system_cpu_usage']
elif collect_item == 'cpu_percent':
cpu_total_usage=new_result['cpu_stats']['cpu_usage']['total_usage'] - old_result['cpu_stats']['cpu_usage']['total_usage']
cpu_system_uasge=new_result['cpu_stats']['system_cpu_usage'] - old_result['cpu_stats']['system_cpu_usage']
cpu_num=len(old_result['cpu_stats']['cpu_usage']['percpu_usage'])
result=round((float(cpu_total_usage)/float(cpu_system_uasge))*cpu_num*100.0,2)
elif collect_item == 'mem_usage':
result=new_result['memory_stats']['usage']
elif collect_item == 'mem_limit':
result=new_result['memory_stats']['limit']
elif collect_item == 'mem_percent':
mem_usage=new_result['memory_stats']['usage']
mem_limit=new_result['memory_stats']['limit']
result=round(float(mem_usage)/float(mem_limit)*100.0,2)
#network_rx_packets=new_result['network']['rx_packets']
#network_tx_packets=new_result['network']['tx_packets']
elif collect_item == 'network_rx_bytes':
network_check_command="""docker exec %s ifconfig eth0|grep bytes|awk -F ':' '{print $2,$3}'|awk -F '(' '{print $1,$2}'|awk -F ')' '{print $1}'|awk '{print "{\\"rx\\":"$1",\\"tx\\":"$2"}"}'"""%container_name
network_old_result=eval(((subprocess.Popen(network_check_command,shell=True,stdout=subprocess.PIPE)).stdout.readlines()[0]).strip('\n'))
time.sleep(1)
network_new_result=eval(((subprocess.Popen(network_check_command,shell=True,stdout=subprocess.PIPE)).stdout.readlines()[0]).strip('\n'))
#unit KB
result=int(network_new_result['rx']) - int(network_old_result['rx'])
elif collect_item == 'network_tx_bytes':
network_check_command="""docker exec %s ifconfig eth0|grep bytes|awk -F ':' '{print $2,$3}'|awk -F '(' '{print $1,$2}'|awk -F ')' '{print $1}'|awk '{print "{\\"rx\\":"$1",\\"tx\\":"$2"}"}'"""%container_name
network_old_result=eval(((subprocess.Popen(network_check_command,shell=True,stdout=subprocess.PIPE)).stdout.readlines()[0]).strip('\n'))
time.sleep(1)
network_new_result=eval(((subprocess.Popen(network_check_command,shell=True,stdout=subprocess.PIPE)).stdout.readlines()[0]).strip('\n'))
result=int(network_new_result['tx']) - int(network_old_result['tx'])
return result
if __name__ == "__main__":
null='null'
docker_client = Client(base_url='unix://var/run/docker.sock', version='1.17')
container_name=sys.argv[1]
collect_item=sys.argv[2]
print check_container_stats(container_name,collect_item)

messiaDemo
- 粉丝: 5
最新资源
- 地铁车站大跨度深基坑支护技术的研究与应用.doc
- 通信设备工程验收规范.doc
- 内审检查表(QR-8.2-05).docx
- 海岛度假村岩土工程勘察.doc
- 造价员入门--桩与地基基础工程.ppt
- 基于JSP在线音乐网的方案设计书与实现大学本科方案设计书.doc
- 5G时代背景下教师网络研修的创新探究.docx
- 数据库系统概论期末试题及复习资料重点知识.doc
- 第4章ANSYS边坡工程应用实例分析.doc
- OAuth2学习DotNetOpenAuth部分源码研究分析.doc
- 《建筑工程计价》模拟试卷答案-杭州.doc
- 如何使用PHOTOSHOP处理图片让宝贝图片更清晰.doc
- 某广场钢筋工技术交底.doc
- 电子工程自动化控制智能技术研究.docx
- VB超市管理系统毕业设计论文.doc
- 5幕墙技术保证措施.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



- 1
- 2
前往页