docker stats監控容器資源消耗

2022-06-05 04:30:10 字數 2214 閱讀 7838

在容器的使用過程中,如果能及時的掌握容器使用的系統資源,無論對開發還是運維工作都是非常有益的。幸運的是 docker 自己就提供了這樣的命令:docker stats。

預設輸出

docker stats 命令用來顯示容器使用的系統資源。不帶任何選項執行 docker stats 命令:

$ docker stats
預設情況下,stats 命令會每隔 1 秒鐘重新整理一次輸出的內容直到你按下 ctrl + c。下面是輸出的主要內容:

[container]:以短格式顯示容器的 id。

[cpu %]:cpu 的使用情況。

[mem usage / limit]:當前使用的記憶體和最大可以使用的記憶體。

[mem %]:以百分比的形式顯示記憶體使用情況。

[net i/o]:網路 i/o 資料。

[block i/o]:磁碟 i/o 資料。 

[pids]:pid 號。

只返回當前的狀態

如果不想持續的監控容器使用資源的情況,可以通過 --no-stream 選項只輸出當前的狀態:

這樣輸出的結果就不會變化了,看起來省勁不少。

只輸出指定的容器

如果我們只想檢視個別容器的資源使用情況,可以為 docker stats 命令顯式的指定目標容器的名稱或者是 id:

$ docker stats --no-stream registry 1493
當有很多的容器在執行時,這樣的結果看起來會清爽一些。這裡的 registry 和 1493 分別是容器的名稱和容器的 id。注意,多個容器的名稱或者是 id 之間需要用空格進行分割。

細心的同學可能已經發現了,第一列不再顯示預設的容器 id,而是顯示了我們傳入的容器名稱和 id。基於此,我們可以通過簡單的方式使用容器的名稱替代預設輸出中的容器 id:

用容器的名稱替代 id 後輸出的結果是不是友好一些?

格式化輸出的結果

我們在前面搞了點小手段把輸出中的容器 id 替換成了名稱。其實 docker stats 命令支援我們通過 --format 選項自定義輸出的內容和格式:

上面的命令中我們只輸出了 name, cpuperc 和 memusage 三列。下面是自定義的格式中可以使用的所有佔位符:

.container    根據使用者指定的名稱顯示容器的名稱或 id。

.name           容器名稱。

.id                 容器 id。

.cpuperc       cpu 使用率。

.memusage  記憶體使用量。

.netio           網路 i/o。       

.blockio        磁碟 i/o。

.memperc     記憶體使用率。

.pids             pid 號。

有了這些資訊我們就可以完全按照自己的需求或者是偏好來控制 docker stats 命令輸出的內容了。

除了以 table 格式輸出結果,還可以通過 format 選項輸出 json 格式的結果:

總結通過 docker stats 命令我們可以看到容器使用系統資源的情況。這為我們進一步的約束容器可用資源或者是調查與資源相關的問題提供了依據。除了 docker 自帶的命令,像 glances 等工具也已經支援檢視容器使用的資源情況了,有興趣的朋友可以去了解一下。

docker容器監控

容器具有以下特性 容器是短期存活的,並且可以動態排程 容器的本質是程序,而不是乙個完整作業系統 由於容器非常輕量,容器的建立和銷毀也會比傳統虛擬機器更加頻繁。docker 容器的監控方案有很多,除了 docker 自帶的docker stats命令,還有很多開源的解決方案,例如 sysdig cad...

TIG監控平台監控docker容器

influxdb是乙個時序資料庫,用來記錄監控資訊。開放8083和8086兩個埠 8083是influxdb的web管理端,8086是資料傳輸埠 初始建立資料庫telegraf供telegraf儲存資料 telegraf是負責收集docker資訊並 到influxdb的工具,通過簡單的配置即可監控d...

容器監控實踐 Heapster

該專案將被廢棄 retired heapster是kubernetes旗下的乙個專案,heapster是乙個收集者,並不是採集 流程 1.heapster首先從apiserver獲取集群中所有node的資訊。2.通過這些node上的kubelet獲取有用資料,而kubelet本身的資料則是從cadv...