推薦一款超實用的查看容器系統資源真實使用情況的工具 topic
容器通過 cgroups 和 namespace 實現了資源的輕量級隔離和限制,但容器中的 /proc 文件實際上是宿主機的,因此在執行 top 命令查看容器運行信息時,部分指標顯示不正確,例如啓動時間、用戶數、平均負載、cpu 使用率、內存使用率。
目前比較通用的解決方案是通過 lxcfs,將容器中相應的文件通過 fuse 劫持 read 調用,在打開時顯示爲容器信息,從而統一解決各種系統狀態診斷工具的問題。
考慮到部署 lxcfs 有一定的成本,topic(top in container) 的思路則是改造 top 命令,去適配容器,讀取容器中反映真實運行情況的系統文件,從而展示正確的容器運行信息,對於用戶而言成本更低。
如下,在一個 1C 和 1Gi 的容器中運行 stress --cpu 2
,通過 topic 和 top 查看容器的運行狀態:
topic
top
可以看到,topic 比較好的解決了容器運行信息的問題:
-
topic 查看到的 CPU 使用率,其 us 爲 99.8%,而 top 查看到的是 13.2%(實爲宿主機的 us 信息)
-
topic 查看到的 Mem 是 1Gi,而 top 查看到的是 16Gi(實爲宿主機的內存信息)
-
topic 查看到的 user 數是 11,而 top 查看到的 user 數是 1(實爲宿主機的當前登錄用戶數)
-
topic 查看到的容器運行時間爲 2days 10:35,而 top 查看到的是 20days 1:57(實爲宿主機的運行時間)
-
topic 和 top 的進程相關信息顯示基本一致。
如果你需要使用,可以通過下面地址下載 topic 到容器中運行(記得加上執行權限)。
-
下載地址:https://silenceshell-1255345740.cos.ap-shanghai.myqcloud.com/topic/topic
-
項目地址:https://github.com/silenceshell/topic
本文轉載自:「 Zlatan Eevee 」,原文:https://tinyurl.com/rxdb5n72 ,版權歸原作者所有。歡迎投稿,投稿郵箱: editor@hi-linux.com。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/B5yD5XXyWHfVEdeXgnbL8Q