国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

【博文推薦】Docker高級應用之資源監控

云計算
本篇博文出自51CTO博客博主dl528888。在本文中,博主將與大家分享他在開發Docker平臺時是如何監控資源與進行圖像展示的。

  本篇博文出自51CTO博客博主吟—技術交流,有任何問題請進入博主頁面互動討論!

博文地址:http://dl528888.blog.51cto.com/2382721/1635951

最近忙著開發docker平臺,所以挺久沒有更新博客了,今天給大家分享一下,我開發docker平臺里如何監控資源與進行圖像展示的。

默認docker 1.5版本有stats命令查看容器的cpu使用率、內存使用量與網絡流量,但此功能有2個必須:

1、必須是docker 1.5版本

2、必須使用默認docker0的網橋(如果你使用ovs這樣非原生的網橋無法獲取數據的)

我開發的監控里docker是1.5版本,并且通過使用ifconfig來獲取容器rx或rx量來獲取容器流量,解決了必須使用docker默認網橋才可以獲取流量數據。

下面是容器資源監控效果圖

1、平臺里資源監控界面

 

Docker高級應用之資源監控

2、查看容器yangjing-test的cpu使用率資源監控

 

Docker高級應用之資源監控

3、查看內存使用量資源監控

 

Docker高級應用之資源監控

4、查看容器網絡流量信息

 

Docker高級應用之資源監控

#p#

下面是監控數據收集腳本信息

使用python寫的,由于需要往mysql里寫入數據,所以需要安裝MySQLdb模塊以及服務端mysql開啟賬號

  1. [root@ip-10-10-29-201 code]# cat collect_docker_monitor_data_multi.py 
  2. #!/usr/bin/env python 
  3. #-*- coding: utf-8 -*- 
  4. #author:Deng Lei 
  5. #email: dl528888@gmail.com 
  6. from docker import Client 
  7. import os 
  8. import socket, struct, fcntl 
  9. import etcd 
  10. import MySQLdb 
  11. import re 
  12. import multiprocessing 
  13. import subprocess 
  14. import time 
  15. def get_local_ip(iface = 'em1'): 
  16.     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
  17.     sockfd = sock.fileno() 
  18.     SIOCGIFADDR = 0x8915 
  19.     ifreq = struct.pack('16sH14s', iface, socket.AF_INET, '\x00'*14
  20.     try
  21.         res = fcntl.ioctl(sockfd, SIOCGIFADDR, ifreq) 
  22.     except
  23.         return None 
  24.     ip = struct.unpack('16sH2x4s8x', res)[2
  25.     return socket.inet_ntoa(ip) 
  26. def docker_container_all(): 
  27.     docker_container=docker_client.containers(all=True
  28.     container_name=[] 
  29.     container_stop_name=[] 
  30.     for i in docker_container: 
  31.         container_name.append(i['Names']) 
  32.     for b in container_name: 
  33.         for c in b: 
  34.             container_stop_name.append(c[1::]) 
  35.     return container_stop_name 
  36. def docker_container_run(): 
  37.     docker_container=docker_client.containers(all=True
  38.     container_name=[] 
  39.     container_stop_name=[] 
  40.     for i in docker_container: 
  41.         if re.match('Up',i['Status']): 
  42.             container_name.append(i['Names']) 
  43.     for b in container_name: 
  44.         for c in b: 
  45.             container_stop_name.append(c[1::]) 
  46.     return container_stop_name 
  47. def check_container_stats(name): 
  48.     container_collect=docker_client.stats(name) 
  49.     old_result=eval(container_collect.next()) 
  50.     new_result=eval(container_collect.next()) 
  51.     container_collect.close() 
  52.     cpu_total_usage=new_result['cpu_stats']['cpu_usage']['total_usage'] - old_result['cpu_stats']['cpu_usage']['total_usage'
  53.     cpu_system_uasge=new_result['cpu_stats']['system_cpu_usage'] - old_result['cpu_stats']['system_cpu_usage'
  54.     cpu_num=len(old_result['cpu_stats']['cpu_usage']['percpu_usage']) 
  55.     cpu_percent=round((float(cpu_total_usage)/float(cpu_system_uasge))*cpu_num*100.0,2
  56.     mem_usage=new_result['memory_stats']['usage'
  57.     mem_limit=new_result['memory_stats']['limit'
  58.     mem_percent=round(float(mem_usage)/float(mem_limit)*100.0,2
  59.     #network_rx_packets=new_result['network']['rx_packets'] 
  60.     #network_tx_packets=new_result['network']['tx_packets'] 
  61.     network_check_command="""docker exec %s ifconfig eth1|grep bytes|awk -F ':' '{print $2,$3}'|awk -F '(' '{print $1,$2}'|awk -F ')' '{print $1}'|awk '{print "{\\"rx\\":"$1",\\"tx\\":"$2"}"}'"""%name 
  62.     network_old_result=eval(((subprocess.Popen(network_check_command,shell=True,stdout=subprocess.PIPE)).stdout.readlines()[0]).strip('\n')) 
  63.     time.sleep(1
  64.     network_new_result=eval(((subprocess.Popen(network_check_command,shell=True,stdout=subprocess.PIPE)).stdout.readlines()[0]).strip('\n')) 
  65.     #unit KB 
  66.     network_rx_packets=(int(network_new_result['rx']) - int(network_old_result['rx']))/1024 
  67.     network_tx_packets=(int(network_new_result['tx']) - int(network_old_result['tx']))/1024 
  68.     collect_time=str(new_result['read'].split('.')[0].split('T')[0])+' '+str(new_result['read'].split('.')[0].split('T')[1]) 
  69.     msg={'Container_name':name,'Cpu_percent':cpu_percent,'Memory_usage':mem_usage,'Memory_limit':mem_limit,'Memory_percent':mem_percent,'Network_rx_packets':network_rx_packets,'Network_tx_packets':network_tx_packets,'Collect_time':collect_time} 
  70.     #write_mysql(msg) 
  71.     return msg 
  72. def write_mysql(msg): 
  73.     container_name=msg['Container_name'
  74.     search_sql="select dc.id from docker_containers dc,docker_physics dp where dc.container_name='%s' and dp.physics_internal_ip='%s';"%(container_name,local_ip) 
  75.     n=mysql_cur.execute(search_sql) 
  76.     container_id=[int(i[0]) for i in mysql_cur.fetchall()][0
  77.     insert_sql="insert into docker_monitor(container_id,cpu_percent,memory_usage,memory_limit,memory_percent,network_rx_packets,network_tx_packets,collect_time) values('%s','%s','%s','%s','%s','%s','%s','%s');"%(container_id,msg['Cpu_percent'],msg['Memory_usage'],msg['Memory_limit'],msg['Memory_percent'],msg['Network_rx_packets'],msg['Network_tx_packets'],msg['Collect_time']) 
  78.     n=mysql_cur.execute(insert_sql) 
  79. if __name__ == "__main__"
  80.     local_ip=get_local_ip('ovs1'
  81.     if local_ip is None
  82.   local_ip=get_local_ip('em1'
  83.     etcd_client=etcd.Client(host='127.0.0.1', port=4001
  84.     docker_client = Client(base_url='unix://var/run/docker.sock', version='1.17'
  85.     mysql_conn=MySQLdb.connect(host='10.10.27.10',user='ops',passwd='1FE@!#@NVE',port=3306,charset="utf8"
  86.     mysql_cur=mysql_conn.cursor() 
  87.     mysql_conn.select_db('devops'
  88.     #docker_container_all_name=docker_container_all() 
  89.     docker_container_run_name=docker_container_run() 
  90.     if len(docker_container_run_name) == 1
  91.   num=1 
  92.     elif len(docker_container_run_name) >= 4 and len(docker_container_run_name) <=8
  93.   num=4 
  94.     elif len(docker_container_run_name) >8 and len(docker_container_run_name) <=15
  95.   num=8 
  96.     elif len(docker_container_run_name) >15 and len(docker_container_run_name) <=30
  97.   num=20 
  98.     else
  99.   num=40 
  100.     pool = multiprocessing.Pool(processes=num) 
  101.     scan_result=[] 
  102.     #collect container monitor data 
  103.     for i in docker_container_run_name: 
  104.         pool.apply_async(check_container_stats, (i,)) 
  105.         scan_result.append(pool.apply_async(check_container_stats, (i,))) 
  106.     pool.close() 
  107.     pool.join() 
  108.     result=[] 
  109.     for res in scan_result: 
  110.         if res.get() is not None
  111.       write_mysql(res.get()) 
  112.   else
  113.       print 'fail is %s'%res.get() 
  114.     mysql_conn.commit() 
  115.     mysql_cur.close() 
  116.     mysql_conn.close() 

下面是把此腳本放入crontab里每分鐘收集一下

  1. */1 * * * * python /root/collect_docker_monitor_data_multi.py >>/root/docker_log/docker_monitor.log 2>&1 

另外說明一下,上面的監控數據圖形化使用highstock,使用ajax進行動態加載數據,每次獲取容器所有時間監控數據。有問題請留言。
 

 

責任編輯:Ophira 來源: 51CTO
相關推薦

2015-07-01 10:25:07

Docker開源項目容器

2015-06-17 09:43:45

云計算應用傳統企業應用云平臺

2014-11-25 11:33:35

2015-05-15 10:04:28

localhost

2011-03-29 12:45:28

Cacti

2015-04-13 11:34:56

Windows DocNano ServerPaaS

2011-03-29 13:15:10

Cacti主機模板

2011-03-29 13:06:29

Cacti作圖模板

2015-06-17 09:34:09

軟件定義存儲 云存儲

2014-12-29 12:27:43

ZabbixSNMP

2013-12-21 19:58:32

SDN應用資源管理平臺SDN

2014-12-12 10:46:55

Azure地緣組affinitygro

2015-06-15 13:06:23

項目項目經驗

2015-09-29 10:26:51

pythonlogging模塊

2014-07-10 10:43:49

zabbix主從監控

2015-04-22 10:28:40

2015-05-27 09:17:50

AzureDocker

2015-05-11 10:10:16

2014-12-01 10:33:51

Python

2015-07-29 13:46:27

OpenStackIcehouse私有云實戰部署
點贊
收藏

51CTO技術棧公眾號

国产手机视频一区二区 | 伊人久久大香线蕉综合四虎小说 | 91国产精品电影| 中文字幕第一区第二区| 欧美一三区三区四区免费在线看 | 亚洲欧美一区二区久久 | 中文字幕成人在线| 亚洲人成精品久久久久久| 欧美激情极品视频| 国产伦精品一区二区三区千人斩| 蜜臀久久99精品久久久无需会员| 欧美sm精品调教视频| 中文字幕精品—区二区四季| 久久综合色视频| 日韩电影在线一区| 精品国产乱码久久久久久丨区2区| 成人午夜国产| 国产91色在线|| 亚洲黄色一区| 九色精品免费永久在线| 成人福利av| 日本高清无吗v一区| 午夜3点看的视频| 天天操天天干天天综合网| 免费观看在线午夜影视| 18成人在线| 麻豆福利在线观看| 欧美日韩国产三级| 一区二区三区韩国免费中文网站| 中文字幕中文字幕一区三区| 91国产精品成人| 久久视频在线| 在线国产福利| 国内精品伊人久久| 久久久精品人体av艺术| 欧美性猛交xxx高清大费中文| 亚洲专区国产精品| www.性欧美| 四色永久免费网站| 在线观看国产日韩| 欧美极品免费| 国产精品久久在线观看| 精品伊人久久| 日韩免费在线免费观看| 欧美三级特黄| 欧美日韩一区二区三| 国产精品色婷婷久久58| 久色成人在线| 亚洲在线网站| 日韩免费电影在线观看| 午夜午夜精品一区二区三区文| bt欧美亚洲午夜电影天堂| 嫩草影院官网| 亚洲成人a级网| 国产欧美88| 精品日本一区二区| 99免费精品在线观看| 三级视频在线| 欧美精品videos另类日本| 国产欧美二区| 宅男噜噜噜66国产免费观看| 国产欧美精品xxxx另类| 国产一区二区不卡在线| 国产日韩精品一区二区浪潮av| 欧美日韩激情视频一区二区三区| 日本一区二区久久| 成人a免费视频| 久久国产剧场电影| 日本暖暖在线视频| 91精品国产91久久久久青草| 中文字幕一区二| 日韩毛片免费看| 视频一区二区三| 国产视频欧美视频| 在线视频亚洲欧美中文| 欧美亚洲精品日韩| 精品国产乱码| 免费看欧美女人艹b| 成人免费直播live| a在线免费观看| 97久草视频| 久久精品欧洲| 日韩一级免费片| 中文字幕亚洲欧美日韩2019| 亚洲欧洲一级| 成年人在线观看网站| 欧美自拍视频在线| 欧美在线网站| 亚洲色成人www永久在线观看| zzijzzij亚洲日本少妇熟睡| ·天天天天操| 欧美图片一区二区三区| 黑人精品视频| 国产精品中文字幕在线观看| 亚洲人成网站色在线观看| 成午夜精品一区二区三区软件| aa在线观看视频| 欧美在线亚洲一区| 日本高清不卡在线观看| 久久久人成影片一区二区三区在哪下载 | 一本一道久久a久久精品蜜桃| 国产美女情趣调教h一区二区| 国产精品美女视频网站| 免费人成黄页网站在线一区二区| 又黄又爽无遮挡| 91日韩在线视频| 亚洲丝袜在线视频| 午夜黄色在线观看| 日韩视频在线观看一区二区| 国产aa精品| 午夜精品一区二区三区在线视 | 国产一区视频在线播放| 中文字幕一区免费在线观看 | 国产欧美一区二区精品性色| 国产成人l区| 91在线免费网站| 欧美一级在线观看| 夜夜嗨av一区二区三区| 久久成人一区| 风间由美性色一区二区三区四区| 中文在线资源在线| 黄色网zhan| 国产在线不卡精品| 免费av在线网站| www.亚洲一区| 日韩av网站大全| 中文字幕亚洲色图| 久久久综合免费视频| 在线不卡欧美精品一区二区三区| 国产精品视频麻豆| 亚洲蜜臀av乱码久久精品蜜桃| 成人免费一区二区三区在线观看| 久久99久久精品国产| 国产99午夜精品一区二区三区| 亚洲经典三级| 最近97中文超碰在线| 911精品国产一区二区在线| 玛雅亚洲电影| 国产最新免费视频| 亚洲性生活视频| 国产成人综合网站| 久久青草免费| 成人性生交大片免费看午夜| 凹凸国产熟女精品视频| 久久99精品久久久久久秒播放器| 国内揄拍国内精品| 欧美日韩mp4| 亚洲免费影视| 羞羞视频在线观看一区二区| 51漫画成人app入口| av在线资源站| 欧美精品少妇| 中文字幕校园春色| 国产精品wwwww| 男男gay免费网站| 无码人妻丰满熟妇区五十路百度| 美女久久久久久| 亚洲欧美成aⅴ人在线观看| 亚洲欧美资源在线| 欧美激情免费视频| 国产精品涩涩涩视频网站| 91精品国产自产精品男人的天堂| 国产精品亚洲综合在线观看| 男插女视频久久久| 国产在线观看黄| 永久在线免费观看| 超碰caoporn久久| 不卡的av影片| 日本一本草久在线中文| www.日本少妇| 日本高清xxxx| 污版网站在线观看| 免费高清成人| 国产 日韩 亚洲 欧美| 免费午夜视频在线观看| 毛片一级免费一级| 一个人看的www视频在线免费观看| 国产网站在线| 日本欧美不卡| 成人污污视频在线观看| 成人精品gif动图一区| 91麻豆免费看片| 色婷婷香蕉在线一区二区| 色8久久人人97超碰香蕉987| 欧美成人国产va精品日本一级| 91日韩在线视频| 日韩精品一区二区三区电影| 999视频在线观看| 精品视频一区二区在线| www.久久热.com| 国产91在线精品| 午夜精品毛片| 国产一区不卡视频| 在线精品视频在线观看高清| 久久婷婷五月综合色丁香| 欧美韩日亚洲| а√天堂资源地址在线下载| www.26天天久久天堂| 日韩精选视频| 国产美女精品在线|