topic - top in container,容器版本的top
推薦一個容器中查看系統信息的工具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查看的load average是2.03,而top查看到的是1.31(實為宿主機的load average)
- - 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到容器中運行(記得加上執行權限),好用可以給個Star ^_^
項目地址 https://github.com/silenceshell/topic