本文实例为大家分享了python脚本监控docker容器的方法,供大家参考,具体内容如下
脚本功能:
1、监控CPU使用率
2、监控内存使用状况
3、监控网络流量
具体代码:
#!/usr/bin/env python # --*-- coding:UTF-8 --*-- import sys import tab import re import os import time from docker import Client import commands keys_container_stats_list = ['blkio_stats', 'precpu_stats', 'Network', 'read', 'memory_stats', 'cpu_stats'] merit_list=['usage','limit','mem_use_percent','total_cpu_usage','system_cpu_usage','cpu_usage_percent','rx_bytes','tx_bytes'] returnval = None def start(container_name): global container_stats conn=Client(base_url='unix://run/docker.sock',version='1.19') generator=conn.stats(container_name) try: container_stats=eval(generator.next()) except NameError,error_msg: pass # print error_msg container_stats=eval(generator.next()) finally: conn.close() def monitor_docker(monitor_item,merit): if merit == 'mem_use_percent': start(container_name) mem_usage = container_stats['memory_stats']['usage'] mem_limit = container_stats['memory_stats']['limit'] returnval = round(float(mem_usage) / float(mem_limit),2) print returnval elif merit == 'system_cpu_usage': start(container_name) first_result = container_stats['cpu_stats']['system_cpu_usage'] start(container_name) second_result = container_stats['cpu_stats']['system_cpu_usage'] returnval = second_result - first_result print returnval elif merit == 'total_cpu_usage': start(container_name) first_result = container_stats['cpu_stats']['cpu_usage']['total_usage'] start(container_name) second_result = container_stats['cpu_stats']['cpu_usage']['total_usage'] returnval = second_result - first_result print returnval elif merit == 'cpu_usage_percent': start(container_name) system_use=container_stats['cpu_stats']['system_cpu_usage'] total_use=container_stats['cpu_stats']['cpu_usage']['total_usage'] cpu_count=len(container_stats['cpu_stats']['cpu_usage']['percpu_usage']) returnval = round((float(total_use)/float(system_use))*cpu_count*100.0,2) print returnval elif merit == 'rx_bytes': command='''docker exec -it api1 ifconfig eth1 | grep "bytes" | awk '{print $2}' | awk -F ':' '{print $2}' ''' result_one = commands.getoutput(command) time.sleep(1) command='''docker exec -it api1 ifconfig eth1 | grep "bytes" | awk '{print $2}' | awk -F ':' '{print $2}' ''' result_second = commands.getoutput(command) returnval = round((int(result_second) - int(result_one))/1024,2) print returnval elif merit == 'tx_bytes': command='''docker exec -it api1 ifconfig eth1 | grep "bytes" | awk '{print $6}' | awk -F ':' '{print $2}' ''' result_one = commands.getoutput(command) time.sleep(1) command='''docker exec -it api1 ifconfig eth1 | grep "bytes" | awk '{print $6}' | awk -F ':' '{print $2}' ''' result_second = commands.getoutput(command) returnval = round((int(result_second) - int(result_one))/1024,2) print returnval if __name__ == '__main__': command='''docker ps | awk '{print $NF}'| grep -v "NAMES"''' str=commands.getoutput(command) container_counts_list=str.split('\n') if sys.argv[1] not in container_counts_list: print container_counts_list print "你输入的容器名称错误,请重新执行脚本,并输入上述正确的容器名称." sys.exit(1) else: container_name = sys.argv[1] if sys.argv[2] not in keys_container_stats_list: print keys_container_stats_list print '你输入的容器监控项不在监控范围,请重新执行脚本,并输入上述正确的监控项.' sys.exit(1) else: monitor_item = sys.argv[2] if sys.argv[3] not in merit_list: print merit_list print "你输入的容器监控明细详细不在监控范围内,请重新执行脚本,并输入上述正确的明细监控指标." else: merit = sys.argv[3] monitor_docker(monitor_item,merit)
以上就是python脚本监控docker容器的全部代码,希望对大家的学习有所帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

禅工作室 13.0.1
功能强大的PHP集成开发环境

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)