python代码进去docker容器内_python脚本监控docker容器
本文实例为大家分享了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脚本监控docker容器
本文地址: http://www.cppcns.com/jiaoben/python/148494.html
python代码进去docker容器内_python脚本监控docker容器相关推荐
- About 一行Python代码搞定局域网内文件共享与传输
一行Python代码搞定局域网内文件共享与传输 前提:环境中有Python安装,并配置环境变量. 1.共享目录:Windows下,在要共享文件目录下,shift+鼠标右键,在此处打开命令行窗口(CMD ...
- Docker - 容器内应用和外部非容器应用互相访问方法
Docker搭建开发环境用的非常多,通常开发机器上既有容器形式的应用,又有本机跑着或者调试的程序,它们之间互相依赖,如何让它们之间通信顺畅,有时候是一个挺困难的事情.容器应用和容器外应用互相访问分为三 ...
- 怎么进入Docker 容器查看容器内文件,并复制容器内文件至本机
环景: ubuntu 16.04 docker Version: 20.10.7 问题描述: 怎么进入Docker 容器查看容器内文件,并复制容器内文件至本机 解决方案: 1.#docker ps 执 ...
- docker修练之容器内的脚本
场景举例: 比如容器里执行脚本 #1脚本拷贝 docker ps //找到容器的短ID或者指定的name. docker inspect -f '{{.Id}}' id or name 得到指定容器 ...
- python代码大全和用法用量_Python生成器的使用方法和示例代码
本文是<Effect Python 编写高质量Python代码的59个有效方法>的学习笔记.主要记录生成器的使用方法和示例代码. 返回队列的函数 如果函数要产生一系列结果,那么最简单的做法 ...
- python代码封装供第三方使用_python发博客
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python生成csdn博客分享图一.前言我们分享博客的方式有很多种,最常见的无 ...
- python代码怎么换行继续写_python代码太长怎么换行
在需要换行的代码后面加一个 / 回车 python怎么换行啊??我是一只崭新的程序猿...在学python..下了3.4,,,打开IDLE是个白其实我想喷上面,但是出于理智,他可能是没理解你的意思或者 ...
- python代码解释4个作用域_Python中作用域的深入讲解
前言 作用域是指变量的生效范围,例如本地变量.全局变量描述的就是不同的生效范围. python的变量作用域的规则非常简单,可以说是所有语言中最直观.最容易理解的作用域. 在开始介绍作用域之前,先抛一个 ...
- python代码大全心形盒子简单_python心形代码
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 之前看到python一行代码就可以在控制台打印心形,感觉非常神奇,昨天突然想起来 ...
最新文章
- jQuery绑定事件的三种常见方式(bind、one、【change、click、keydown、hover】)
- Python链接MySQL
- mysql和mongodb对比互补
- 【Android 应用开发】Android 网络编程 API笔记 - java.net 包相关 接口 api
- Spring Data(二)查询
- helm快速部署一个nginx应用并更改service类型为NodePort、自定义Chart的发布
- 【HTML】前端性能优化之CDN和WPO的比较
- h5分享到朋友圈_微信朋友圈创意招聘广告制作方法 H5模板
- Postman使用入门
- Spring MVC对象转换说明
- warpaffine 旋转有一部分消失_如果月球消失了,会发生什么?我们的世界又将会变得怎么样?...
- java volatile关键字的作用_java volatile关键字作用及使用场景详解
- JVM总结(一):概念----(无节操转载,潜心学习)
- 配置远程jupyter notebook
- 设置foxmail通过ccproxy代理收发邮件
- c语言炉石传说测试数据库,炉石传说:王师傅微博分享算法入门题 网友:快把C语言播完吧!...
- 第十三课、类族的结构进化-------------------狄泰软件学院
- Linux操作文档——分析和排查系统故障(日志)
- 提高电脑性能增加fps的方法
- 使用Qt构建ROS应用程序
热门文章
- 【数据结构与算法】判断单链表是否有环的算法
- boost一些常用库(数据结构,迭代器,算法及字符串) 简单介绍
- git commit 规范指南
- 为什么重写equals时必须重写hashCode方法?
- 创意or鸡肋?亚马逊想让智能音箱“手机”化
- 道康宁有机硅助力动力电池发展
- objective-c 语法快速过(4)
- VMware8 8.0.1 安装Lion正式版 原版镜像 直接DMG安装 非整合版 免引导 完美解决iCloud...
- 梦燕服饰:企业数字化走得快不是真本事,走得稳才是硬道理
- 今天的一下子跳出来了的超级玛丽