国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Docker 監(jiān)控的一點(diǎn)想法

doodlewind / 2586人閱讀

摘要:目前項(xiàng)目?jī)?nèi)部署了,于是涉及到關(guān)于監(jiān)控的事情,參考一些經(jīng)典實(shí)例以及一些自己的想法,總結(jié)一下思路。監(jiān)控方便,只能通過(guò)在宿主機(jī)本身查看對(duì)應(yīng)容器的。

目前項(xiàng)目?jī)?nèi)部署了docker,于是涉及到關(guān)于監(jiān)控的事情,參考一些經(jīng)典實(shí)例以及一些自己的想法,總結(jié)一下思路。

1、關(guān)于監(jiān)控的內(nèi)容 監(jiān)控宿主機(jī)本身

監(jiān)控宿主機(jī)本身還是比較簡(jiǎn)單的,同其他服務(wù)器監(jiān)控類似,對(duì)cpu、network、io、disk等做通用的檢查,這里不再細(xì)說(shuō)。

額外的,因?yàn)槭莇ocker的宿主機(jī),還應(yīng)該監(jiān)控 容器本身的一些指標(biāo),如 :

擁有的全部的容器數(shù)量;

正在運(yùn)行的容器的數(shù)量;

dead容器的數(shù)量(如果此數(shù)量變化應(yīng)該報(bào)警);

docker 本身的信息,如Storage Driver、Data Space Used、Data Space Total、Metadata Space Total、Metadata Space Used、client version、client api version、server version、servier api version 等;

監(jiān)控容器

docker容器通過(guò)namespace做資源隔離,通過(guò)cgroup來(lái)做資源限制。監(jiān)控方便,只能通過(guò)在宿主機(jī)本身查看對(duì)應(yīng)容器的cgroup stats。

具體大項(xiàng)有:

容器的本身信息,如名稱,ip、使用的鏡像、啟動(dòng)時(shí)間、啟動(dòng)命令等;

容器的狀態(tài),如可先監(jiān)控兩個(gè)量值,running or not running (當(dāng)狀態(tài)變化時(shí)報(bào)警);

容器使用cpu的資源信息;

容器使用memory的資源信息;

容器的network io信息;

容器的disk信息;

2、關(guān)于監(jiān)控項(xiàng)的獲取 宿主機(jī)本身

宿主機(jī)的一般信息獲取 見zabbix監(jiān)控項(xiàng),不重復(fù)。

擁有的全部容器的數(shù)量:

docker ps -a -q | wc -l

正在運(yùn)行的容器的數(shù)量:

docker ps  -q | wc -l 

非運(yùn)行狀態(tài)的容器的數(shù)量:

docker ps -a  | grep -v "Up "  | grep -v "CONTAINER" | wc -l

docker本身信息,可從命令 docker version & docker info中獲取

監(jiān)控容器

1、容器本身信息 & 狀態(tài):

從docker inspect 中獲取,簡(jiǎn)單腳本如下:

#!/usr/bin/env python
import commands
import sys
import types
import json
def get_container_info( container ):
msg = commands.getoutput("docker inspect "+container)
#return msg
data = json.loads( msg )
return data[0]
container = sys.argv[1]
msg = get_container_info( container )
containerid = msg["Id"]
image = msg["Image"]
name = msg["Name"]
ip = msg["NetworkSettings"]["IPAddress"]
status = msg["State"]["Running"]
startedat = msg["State"]["StartedAt"]
print containerid, image, name, ip, status, startedat

2、 容器使用cpu情況:

從cpuacct中獲取相應(yīng)的值,首先要獲取一個(gè)cpu周期的時(shí)間值,getconf CLK_TCK,默認(rèn)為100,即100Hz,一個(gè)周期即為 1/100s = 10ms = 10^7 ns;

可以獲取cpuacct.usage、 cpuacct.stat ,但是具體怎么做對(duì)比,還得觀察。

理論上的計(jì)算方法為,在單位時(shí)間內(nèi),docker 容器對(duì)應(yīng)的cpu使用的變化值 除以 總系統(tǒng)cpu時(shí)間的變化值 乘以 100%;其中,docker容器對(duì)應(yīng)的cpu值可以從cgroup.cpuacct中的cpuacct.usage值得到,他的單位是納秒,10^9個(gè)納秒為1秒;系統(tǒng)的cpu總時(shí)間可以從/proc/stat中獲取,第一行中。以“cpu ”開頭那行,數(shù)值累加就是當(dāng)前系統(tǒng)cpu總時(shí)間,需要注意的是,他的數(shù)值單位為 “cpu周期”,就是剛才獲取到的 1/CLK_TCK ,關(guān)于/proc/stat 的說(shuō)明文檔:http://www.linuxhowtos.org/System/procstat.htm

從docker源碼中獲知,docker的stats計(jì)算方法和這個(gè)有點(diǎn)出入,它在此計(jì)算的基礎(chǔ)上,又乘以 cpu核數(shù) 得到最終結(jié)果,這個(gè)讓我有點(diǎn)不理解,和官方確認(rèn)中。。。。。
已經(jīng)和官方確認(rèn),只是雙方對(duì)“cpu利用率如何定義”的問(wèn)題,我認(rèn)為應(yīng)該是平均利用率,官方認(rèn)為應(yīng)該是total cpu 利用率,好吧。。。。。 地址為: #issues 13626
相關(guān)源碼地址為:https://github.com/docker/docker/blob/0d445685b8d628a938790e50517f3fb9...

以下是用shell完成的模擬docker計(jì)算cpu利用率方法的小腳本:

#!/bin/sh
##echo user nice system idle iowait irq softirq
CPULOG_1=$(cat /proc/stat | grep "cpu " | awk "{print $2" "$3" "$4" "$5" "$6" "$7" "$8}")
Total_1=$(echo $CPULOG_1 | awk "{print $1+$2+$3+$4+$5+$6+$7}")
CGROUP_USAGE_1=$(cat /cgroup/cpuacct/docker/55dec85d2e93c487fbeb1e85c9677e64dd1b4bdcc5be0e5f2539e52c87641d4e/cpuacct.usage)
sleep 1
CPULOG_2=$(cat /proc/stat | grep "cpu " | awk "{print $2" "$3" "$4" "$5" "$6" "$7" "$8}")
Total_2=$(echo $CPULOG_2 | awk "{print $1+$2+$3+$4+$5+$6+$7}")
CGROUP_USAGE_2=$(cat /cgroup/cpuacct/docker/55dec85d2e93c487fbeb1e85c9677e64dd1b4bdcc5be0e5f2539e52c87641d4e/cpuacct.usage)
CGROUP_USAGE=`expr $CGROUP_USAGE_2 - $CGROUP_USAGE_1`
Total=`expr $Total_2 - $Total_1`
CGROUP_RATE=`expr $CGROUP_USAGE*24/$Total/10000000*100|bc -l`
echo $CGROUP_USAGE_1 , $CGROUP_USAGE_2 , $CGROUP_USAGE , $Total,  $CGROUP_RATE

3、 容器使用memory情況:

從容器所在cgroup組中查看memory.stats信息,具體值 的信息如下

統(tǒng)計(jì)  描述
cache   頁(yè)緩存,包括 tmpfs(shmem),單位為字節(jié)
Rss 匿名和 swap 緩存,不包括 tmpfs(shmem),單位為字節(jié)
Mapped_file memory-mapped 映射的文件大小,包括 tmpfs(shmem),單位為字節(jié)
pgpgin  存入內(nèi)存中的頁(yè)數(shù)
pgpgout 從內(nèi)存中讀出的頁(yè)數(shù)
swap    swap 用量,單位為字節(jié)
Active_anon 在活躍的最近最少使用(least-recently-used,LRU)列表中的匿名和 swap 緩存,包括 tmpfs(shmem),單位為字節(jié)
Inactive_anon   不活躍的 LRU 列表中的匿名和 swap 緩存,包括tmpfs(shmem),單位為字節(jié)
Active_file 活躍 LRU 列表中的 file-backed 內(nèi)存,以字節(jié)為單位
Inactive_file   不活躍 LRU 列表中的 file-backed 內(nèi)存,以字節(jié)為單位
unevictable 無(wú)法再生的內(nèi)存,以字節(jié)為單位
hierarchical_memory_limit(重點(diǎn))   包含 memory cgroup 的層級(jí)的內(nèi)存限制,單位為字節(jié)
hierarchical_memsw_limit    包含 memory cgroup 的層級(jí)的內(nèi)存加 swap 限制,單位為字節(jié)

4、容器網(wǎng)絡(luò)io情況: 可以執(zhí)行命令: docker exec ifconfig eth0 看 Rx和Tx的值。

5、磁盤io情況 從blkio 中獲取,相關(guān)參考:

blkio.time:統(tǒng)計(jì)cgroup對(duì)設(shè)備的訪問(wèn)時(shí)間,按格式device_types:node_numbers milliseconds讀取信息即可,以下類似。

blkio.io_serviced:統(tǒng)計(jì)cgroup對(duì)特定設(shè)備的IO操作(包括read、write、sync及async)次數(shù),格式device_types:node_numbers operation number

blkio.sectors:統(tǒng)計(jì)cgroup對(duì)設(shè)備扇區(qū)訪問(wèn)次數(shù),格式device_types:node_numbers sector_count

blkio.io_service_bytes:統(tǒng)計(jì)cgroup對(duì)特定設(shè)備IO操作(包括read、write、sync及async)的數(shù)據(jù)量,格式device_types:node_numbers operation bytes

blkio.io_queued:統(tǒng)計(jì)cgroup的隊(duì)列中對(duì)IO操作(包括read、write、sync及async)的請(qǐng)求次數(shù),格式number operation

blkio.io_service_time:統(tǒng)計(jì)cgroup對(duì)特定設(shè)備的IO操作(包括read、write、sync及async)時(shí)間(單位為ns),格式device_types:node_numbers operation time

blkio.io_merged:統(tǒng)計(jì)cgroup 將 BIOS 請(qǐng)求合并到IO操作(包括read、write、sync及async)請(qǐng)求的次數(shù),格式number operation

blkio.io_wait_time:統(tǒng)計(jì)cgroup在各設(shè)備中各類型IO操作(包括read、write、sync及async)在隊(duì)列中的等待時(shí)間(單位ns),格式device_types:node_numbers operation time

6、磁盤使用情況,我以為只需要監(jiān)控docker pool space的狀況即可,默認(rèn)建立100G的空間供docker使用,可通過(guò)docker info來(lái)查看,一個(gè)典型的輸出如下:

Containers: 11
Images: 181
Storage Driver: devicemapper
Pool Name: docker-8:5-7471107-pool
Pool Blocksize: 65.54 kB
Backing Filesystem: extfs
Data file: 
Metadata file: 
Data Space Used: 7.846 GB
Data Space Total: 107.4 GB
Metadata Space Used: 15.92 MB
Metadata Space Total: 2.147 GB
Udev Sync Supported: true
Library Version: 1.02.89-RHEL6 (2014-09-01)
Execution Driver: native-0.2
Kernel Version: 2.6.32-431.el6.x86_64
Operating System: 
CPUs: 24
Total Memory: 62.87 GiB
Name: jx-lj-opweb01.lianjia.com
ID: QTML:RSSS:IKAX:FRIP:4YEQ:IXWX:ROMV:APZD:RV4M:ISY2:QW2D:VMXW

7、在前期可以先重點(diǎn)監(jiān)控 宿主機(jī)情況 & 容器的memory狀態(tài),其他狀態(tài)可記錄,監(jiān)控值可稍后商榷。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/26404.html

相關(guān)文章

  • 基于kubernetes的docker集群實(shí)踐

    摘要:健康監(jiān)控檢查,可以說(shuō)是集群中最重要的一部分了。我們?cè)谶@里沒有使用推薦的方式,我們自己將其與內(nèi)部的系統(tǒng)做了結(jié)合,通過(guò)來(lái)對(duì)整個(gè)集群進(jìn)行監(jiān)控報(bào)警自動(dòng)化操作。 在公司內(nèi)部,基于kubernetes實(shí)現(xiàn)了簡(jiǎn)單的docker應(yīng)用集群系統(tǒng),拿出來(lái)和大家分享下,在這個(gè)系統(tǒng)中,實(shí)現(xiàn)了應(yīng)用的自動(dòng)部署、動(dòng)態(tài)擴(kuò)容、節(jié)點(diǎn)切換、健康檢查、AB式版本更新等功能,也歡迎大家將各自的實(shí)現(xiàn)也分享給我。 整體架構(gòu) 整體架構(gòu)...

    meislzhua 評(píng)論0 收藏0
  • 基于kubernetes的docker集群實(shí)踐

    摘要:健康監(jiān)控檢查,可以說(shuō)是集群中最重要的一部分了。我們?cè)谶@里沒有使用推薦的方式,我們自己將其與內(nèi)部的系統(tǒng)做了結(jié)合,通過(guò)來(lái)對(duì)整個(gè)集群進(jìn)行監(jiān)控報(bào)警自動(dòng)化操作。 在公司內(nèi)部,基于kubernetes實(shí)現(xiàn)了簡(jiǎn)單的docker應(yīng)用集群系統(tǒng),拿出來(lái)和大家分享下,在這個(gè)系統(tǒng)中,實(shí)現(xiàn)了應(yīng)用的自動(dòng)部署、動(dòng)態(tài)擴(kuò)容、節(jié)點(diǎn)切換、健康檢查、AB式版本更新等功能,也歡迎大家將各自的實(shí)現(xiàn)也分享給我。 整體架構(gòu) 整體架構(gòu)...

    Flink_China 評(píng)論0 收藏0
  • OpenStack采用Kubernetes,開始走谷歌路線了

    摘要:是一個(gè)用這種很谷歌的完美方式來(lái)運(yùn)行大規(guī)模分布式系統(tǒng)的工具。我們正在采用這種谷歌方式來(lái)運(yùn)行軟件,加上現(xiàn)代化的架構(gòu),令更加穩(wěn)定,更加易于管理。現(xiàn)目前,不足的工作運(yùn)行在公有云上。 showImg(https://segmentfault.com/img/bVAcRD); Mirantis, Intel和Google結(jié)成聯(lián)盟,準(zhǔn)備在Google鏡像中重做OpenStack,將OpenStack...

    Aklman 評(píng)論0 收藏0
  • 老肖有話說(shuō):霧霾天帶你看清Crane技術(shù)實(shí)現(xiàn)之路

    摘要:今天為大家介紹的容器管理工具是數(shù)人云基于最新技術(shù)的一個(gè)開源項(xiàng)目。今天從技術(shù)角度分享一下數(shù)人云從設(shè)計(jì)到開發(fā)的實(shí)踐之路。從控制面板說(shuō)起數(shù)人云是一家開源技術(shù)的公司,最初希望做一個(gè)開源項(xiàng)目,相當(dāng)于做了一次內(nèi)部創(chuàng)新。數(shù)人云的技術(shù)棧是,正好與十分密切。 小數(shù)表示最近霧鎖京城真是有些可怕,迷迷蒙蒙讓人看不清遠(yuǎn)處,大家外出也要注意防霾哦! 容器管理面板Crane,是 數(shù)人云的第一個(gè)開源項(xiàng)目,那...

    Alliot 評(píng)論0 收藏0
  • Docker 架構(gòu)私有云的機(jī)遇和挑戰(zhàn)

    摘要:說(shuō)起,必須要介紹是什么東西,為什么中小企業(yè)私有云適合使用。看一下現(xiàn)在的架構(gòu)圖開個(gè)玩笑。上面這四點(diǎn)導(dǎo)致我們必須要統(tǒng)一架構(gòu),最終把整個(gè)業(yè)務(wù)系統(tǒng)遷移到基于的類似于的私有云的平臺(tái)。 本文系 ArchSummit 大會(huì) CODING 工程師王振威演講實(shí)錄。 showImg(https://dn-coding-net-production-pp.qbox.me/c2f81423-54b9-4a7b...

    bang590 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<