摘要:它也給它們帶來了內核維護的每個的計數器。管理員期望每個容器的資源計數器也在里面。在的最新版本,工程師已經開始構建并發布一個名為的二進制包,它目前是的一部分,它是的。因此,像這樣做這些文件時可讀的文本格式,盡管不是人類可讀的。
應用資源計數實例注:該文作者是 Jeremy Eder,原文地址為 nsinit: per-container resource monitoring of Docker containers on RHEL/Fedora
基于 *NIX 系統的管理員習慣于查看系統各處的資源計數器,在某些地方,像 /proc, /sys 以及最近的 /cgroup 或是 /sys/fs/cgroup。RHEL6 版本廣泛的采用了 Control Groups (cgroups),cgroups 已經連續穩定的運行了幾年,并且通過審查在 Fedora 版本中也是一樣穩定的。
實現 cgroups 不僅僅是讓系統管理員在多個邏輯分區中劃分一個獨立的 OS。它也給它們帶來了內核維護的每個 cgroup 的計數器。除了常用的用例,比如服務質量保障或是收費。
Docker 的獨特轉折隨著采用 Linux 容器技術的數據提升(Docker 是把一些成熟技術封裝進一個令人欽佩的可用性包中)。管理員期望每個容器的資源計數器也在里面。非常幸運的是,因為 Docker 嚴重依賴 Cgroups,很多系統管理員熟悉的計數器是可以使用的。他們可能受益于一些可用性改進。但是如果你通過 cgroup VFS 來探索,你可以非常容易的挖掘出它們。
我應該注意到某些層次結構和命令在 RHEL 和 Fedora 是特定的。因此你或許需要為你的系統定制某些路徑或包名。
在 Fedora 的最新版本,工程師已經開始構建并發布一個名為 “nsinit” 的二進制包,它目前是 libcontainer 的一部分,它是 Docker 的 execution driver。 nsinit 是一個非常強大的 debugging 工具,系統管理員不僅僅可以看到每個容器的資源計數器,還可以看到容器的運行期配置和“跳進”容器。
怎樣使用 nsinit 的功能首先你應該從 Fedora 獲取一個副本,或者構建一個你自己的。自己構建是一項沒有必要復雜操作。因此我們非常高興他們開始為 Fedora 構建它以至于你可以這樣做:
# yum install --enablerepo=updates-testing golang-github-docker-libcontainer $ rpm -qf `which nsinit` golang-github-docker-libcontainer-1.1.0-7.git29363e2.fc20.x86_64 # nsinit NAME: nsinit - A new cli application USAGE: nsinit [global options] command [command options] [arguments...] VERSION: 0.1 COMMANDS: exec 在一個容器中執行一個新命令 init 在命名空間運行初始化進程 stats 顯示容器的統計信息 config 顯示容器的配置信息 nsenter 初始化進程用于進入一個已經存在的命名空間 pause 暫停容器的進程 unpause 解除暫停的容器進程 help, h 顯示命令列表或是一個命令的幫助信息
我覆蓋測試了 nsinit 的大部分有用的功能;config, stats 和 exec。
注意:nsinit 當前要求你在容器的狀態目錄運行,因此到目前為止,我們假設你的所有運行的命令都在那里。
因此,像這樣做:
# docker ps -q 4caad549289 # CID=`docker ps -q` # cd /var/lib/docker/execdriver/native/$CID* # ll total 8 -rw-r-xr-x. 1 root root 3826 Sep 1 20:11 container.json -rw-r--r--. 1 root root 114 Sep 1 20:11 state.json
這些文件時可讀的文本格式,盡管不是人類可讀的。nsinit 可以完美的打印這些文件。比如,一個 nsinit 配置文件的刪減版本輸出(完整的版本在這里)。注意,你可以通過使用 docker inspect 獲取更多的這些信息(但不是全部)。
# nsinit config { "mount_config": { "mounts": [ { "type": "bind", "source": "/var/lib/docker/init/dockerinit-1.1.1", "destination": "/.dockerinit", "private": true }, { "type": "bind", "source": "/etc/resolv.conf", "destination": "/etc/resolv.conf", "private": true },"mount_label": "system_u:object_r:svirt_sandbox_file_t:s0:c631,c744" }, "hostname": "4caad5492898", "environment": [ "HOME=/", "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/goroot/bin:/gopath/bin", "HOSTNAME=4caad5492898", "DEBIAN_FRONTEND=noninteractive", "GOROOT=/goroot", "GOPATH=/gopath" ], "namespaces": { "NEWIPC": true, "NEWNET": true, "NEWNS": true, "NEWPID": true, "NEWUTS": true }, "capabilities": [ "CHOWN", "DAC_OVERRIDE", "FOWNER", "MKNOD", "NET_RAW", "SETGID", "SETUID", "SETFCAP", "SETPCAP", "NET_BIND_SERVICE", "SYS_CHROOT", "KILL" ], "networks": [ { "type": "loopback", "address": "127.0.0.1/0", "gateway": "localhost", "mtu": 1500 }, { "type": "veth", "bridge": "docker0", "veth_prefix": "veth", "address": "172.17.0.6/16", "gateway": "172.17.42.1", "mtu": 1500 } ], "cgroups": { "name": "4caad5492898f1a4230353de15e2acfc05809c69d05ec7289c6a14ef6d57b195", "parent": "docker", "allowed_devices": [ "process_label": "system_u:system_r:svirt_lxc_net_t:s0:c631,c744", "restrict_sys": true }
統計模式更有趣,nsinit 讀取 cgroup 中 CPU 和 memory 使用計數器。網絡統計信息來自于 /sys/class/net/
{ "network_stats": { "rx_bytes": 180568, "rx_packets": 89, "tx_bytes": 28316, "tx_packets": 92 }, "cgroup_stats": { "cpu_stats": { "cpu_usage": { "total_usage": 985559718, "percpu_usage": [ 43613750, 79789656, 132486590, 78759739, 49063680, 60703059, 36277458, 35919550, 36329424, 20096103, 8148695, 25279255, 0, 0, 0, 6144761, 14814784, 2612915, 95162480, 33853872, 114861235, 71115914, 6533416, 33993382 ], "usage_in_kernelmode": 510000000, "usage_in_usermode": 440000000 }, "throlling_data": {} }, "memory_stats": { "usage": 27992064, "max_usage": 29020160, "stats": { "active_anon": 4411392, "active_file": 3149824, "cache": 22278144, "hierarchical_memory_limit": 9223372036854775807, "hierarchical_memsw_limit": 9223372036854775807, "inactive_anon": 0, "inactive_file": 19128320, "mapped_file": 3723264, "pgfault": 94783, "pgmajfault": 25, "pgpgin": 19919, "pgpgout": 13902, "rss": 4460544, "rss_huge": 2097152, "swap": 0, "total_active_anon": 4411392, "total_active_file": 3149824, "total_cache": 22278144, "total_inactive_anon": 0, "total_inactive_file": 19128320, "total_mapped_file": 3723264, "total_pgfault": 94783, "total_pgmajfault": 25, "total_pgpgin": 19919, "total_pgpgout": 13902, "total_rss": 4460544, "total_rss_huge": 2097152, "total_swap": 0, "total_unevictable": 0, "unevictable": 0 }, "failcnt": 0 }, "blkio_stats": {} } }
nsenter 通常用于在一個已經存在的容器中運行一個命令,像這樣:
# nsenter -m -u -n -i -p -t 19119 bash
19119 是容器中一個進程的 PID。丑陋啊,nsinit 使得這個稍微容易些(恕我直言)。
# nsinit exec cat /etc/hostname 4caad549289 # nsinit exec bash bash-4.2# exit
當你在調試每個容器的 QoS 實現時,nsinit 的功能和統計信息報告是非常有用的。實現/校驗 資源天花板/保障,對你的容器正在做的事情有一個完全的了解。
這個區域是在快速移動的。。。我想介紹另外兩個工具,最后應該比 nsinit 有更廣闊的適用性。
Google 已經發布了一個叫做 cAdvisor 的項目,提供了一個基本的 web 接口,但是更重要的 API 是給上一層(比如 Kubernetes)使用了。
Red Hat 提議容器支持 Performance Co-Pilot,一個在 RHEL7 中系統級別的性能監控工具。隨著這個目標教授了很多其他關于容器的工具。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/26336.html
摘要:在我們列舉的幾個監控的服務或平臺中,這是唯一一款國內產品。也是一款付費監控解決方案,計劃收費方案是美分小時。同樣也支持監控,還包括對容器級事件的監測停止開始等等和管理容器產生的日志。由于是一個監控方案,相對來說它的安裝和部署都比較簡單。 輕量級虛擬化容器 Docker,自發布以來便廣受業界關注,在開源界和企業界掀起了一陣風。Docker 容器相對于 VM 有以下幾個優勢:啟動速度快;資...
摘要:監控告警是運營系統最核心的功能之一,騰訊內部有一套很成熟的監控告警平臺,而且開發運維同學已經習慣這套平臺,如果我們針對容器再開發一個監控告警平臺,會花費很多精力,而且沒有太大的意義。也是一款付費監控解決方案,計劃收費方案是美分小時。 如今,越來越多的公司開始使用 Docker 了,現在來給大家看幾組數據: 2 / 3 的公司在嘗試了 Docker 后最終使用了它 也就是說 Docker...
摘要:阿里云的容器服務采用的是的模式,集成了阿里云的一些基礎服務日志監控存儲等,在調度等方面做了很多優化,你也可以使用看看。容器服務提供了針對阿里云的的插件,容器之間的數據包不需要封裝操作,性能幾乎和內兩臺通信性能一樣。 Docker 引起了交付方式的變革,從交付代碼和文檔變成交付Docker鏡像乃至交付編排模板。容器服務讓我們可以專注應用本身功能的開發,而無需關注基礎設施、應用部署、管理等...
摘要:阿里云的容器服務采用的是的模式,集成了阿里云的一些基礎服務日志監控存儲等,在調度等方面做了很多優化,你也可以使用看看。容器服務提供了針對阿里云的的插件,容器之間的數據包不需要封裝操作,性能幾乎和內兩臺通信性能一樣。 Docker 引起了交付方式的變革,從交付代碼和文檔變成交付Docker鏡像乃至交付編排模板。容器服務讓我們可以專注應用本身功能的開發,而無需關注基礎設施、應用部署、管理等...
摘要:系統監控容器數量容器監控應用監控每個主機監控數量主機監控項以主機為中心的監控體系容器作為主機,以主機為中心將有兩個問題無法解決容器作為主機,因為容器生命周期非常短暫,所以監控系統會認為一半主機在頻發故障。 導讀:容器對于物理機和虛擬機,單從監控上看就不是一個數量級的,但監控又是至關重要的,沒有監控如同閉眼開車。 本次分享邀請數人云運維總監龐錚,本文將從以下幾個方面聊聊容器監控的相關思考...
閱讀 2974·2021-09-26 10:18
閱讀 5305·2021-09-22 15:02
閱讀 2808·2019-08-30 15:53
閱讀 1855·2019-08-29 18:41
閱讀 2703·2019-08-27 10:58
閱讀 2634·2019-08-26 13:49
閱讀 2760·2019-08-26 12:17
閱讀 910·2019-08-26 11:49