監(jiān)控 Linux 容器性能的命令行神器

ctop是一個(gè)新的基于命令行的工具,它可用于在容器層級(jí)監(jiān)控進(jìn)程。容器通過利用控制器組(cgroup)的資源管理功能,提供了操作系統(tǒng)層級(jí)的虛擬化環(huán)境。該工具從cgroup收集與內(nèi)存、CPU、塊輸入輸出的相關(guān)數(shù)據(jù),以及擁有者、開機(jī)時(shí)間等元數(shù)據(jù),并以人性化的格式呈現(xiàn)給用戶,這樣就可以快速對(duì)系統(tǒng)健康狀況進(jìn)行評(píng)估?;谒@得的數(shù)據(jù),它可以嘗試推測(cè)下層的容器技術(shù)。ctop也有助于在低內(nèi)存環(huán)境中檢測(cè)出誰在消耗大量的內(nèi)存。

功能

ctop的一些功能如下:

  • 收集CPU、內(nèi)存和塊輸入輸出的度量值
  • 收集與擁有者、容器技術(shù)和任務(wù)統(tǒng)計(jì)相關(guān)的信息
  • 通過任意欄對(duì)信息排序
  • 以樹狀視圖顯示信息
  • 折疊/展開cgroup樹
  • 選擇并跟蹤cgroup/容器
  • 選擇顯示數(shù)據(jù)刷新的時(shí)間窗口
  • 暫停刷新數(shù)據(jù)
  • 檢測(cè)基于systemd、Docker和LXC的容器
  • 基于Docker和LXC的容器的高級(jí)特性
    • 打開/連接shell以進(jìn)行深度診斷
    • 停止/殺死容器類型

安裝

ctop是由Python寫成的,因此,除了需要Python 2.6或其更高版本外(帶有內(nèi)建的光標(biāo)支持),別無其它外部依賴。推薦使用Python的pip進(jìn)行安裝,如果還沒有安裝pip,請(qǐng)先安裝,然后使用pip安裝ctop。

注意:本文樣例來自Ubuntu(14.10)系統(tǒng)

$ sudo apt-get install python-pip

使用pip安裝ctop:

poornima@poornima-Lenovo:~$ sudo pip install ctop

[sudo] password for poornima:

Downloading/unpacking ctop

Downloading ctop-0.4.0.tar.gz

Running setup.py (path:/tmp/pip_build_root/ctop/setup.py) egg_info for package ctop

Installing collected packages: ctop

Running setup.py install for ctop

changing mode of build/scripts-2.7/ctop from 644 to 755

changing mode of /usr/local/bin/ctop to 755

Successfully installed ctop

Cleaning up...

如果不選擇使用pip安裝,你也可以使用wget直接從github安裝:

poornima@poornima-Lenovo:~$ wget https://raw.githubusercontent.com/yadutaf/ctop/master/cgroup_top.py -O ctop

--2015-04-29 19:32:53-- https://raw.githubusercontent.com/yadutaf/ctop/master/cgroup_top.py

Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 199.27.78.133

Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|199.27.78.133|:443... connected.

HTTP request sent, awaiting response... 200 OK Length: 27314 (27K) [text/plain]

Saving to: ctop

100%[======================================>] 27,314 --.-K/s in 0s

2015-04-29 19:32:59 (61.0 MB/s) - ctop saved [27314/27314]

poornima@poornima-Lenovo:~$ chmod +x ctop

如果cgroup-bin包沒有安裝,你可能會(huì)碰到一個(gè)錯(cuò)誤消息,你可以通過安裝需要的包來解決。

poornima@poornima-Lenovo:~$ ./ctop

[ERROR] Failed to locate cgroup mountpoints.

poornima@poornima-Lenovo:~$ sudo apt-get install cgroup-bin

下面是ctop的輸出樣例:

ctop screen
ctop screen

ctop屏幕

用法選項(xiàng)

ctop [--tree] [--refresh=] [--columns=] [--sort-col=] [--follow=] [--fold=, ...] ctop (-h | --help)

當(dāng)你進(jìn)入ctop屏幕,可使用上(↑)和下(↓)箭頭鍵在容器間導(dǎo)航。點(diǎn)擊某個(gè)容器就選定了該容器,按q或Ctrl+C退出該容器。

現(xiàn)在,讓我們來看看上面列出的那一堆選項(xiàng)究竟是怎么用的吧。

-h / --help - 顯示幫助信息

poornima@poornima-Lenovo:~$ ctop -h
Usage: ctop [options]

Options:
-h, --help show this help message and exit
--tree show tree view by default
--refresh=REFRESH Refresh display every <seconds>
--follow=FOLLOW Follow cgroup path
--columns=COLUMNS List of optional columns to display. Always includes
'name'
--sort-col=SORT_COL Select column to sort by initially. Can be changed
dynamically.

--tree - 顯示容器的樹形視圖

默認(rèn)情況下,會(huì)顯示列表視圖

當(dāng)你進(jìn)入ctop窗口,你可以使用F5按鈕在樹狀/列表視圖間切換。

--fold=<name> - 在樹形視圖中折疊名為 <name> 的 cgroup 路徑

該選項(xiàng)需要與 --tree 選項(xiàng)組合使用。

例子: ctop --tree --fold=/user.slice

Output of 'ctop --fold'
Output of 'ctop --fold'

'ctop --fold'的輸出

在ctop窗口中,使用+/-鍵來展開或折疊子cgroup。

注意:在寫本文時(shí),pip倉庫中還沒有最新版的ctop,還不支持命令行的‘--fold’選項(xiàng)

--follow= - 跟蹤/高亮 cgroup 路徑

例子: ctop --follow=/user.slice/user-1000.slice

正如你在下面屏幕中所見到的那樣,帶有“/user.slice/user-1000.slice”路徑的cgroup被高亮顯示,這讓用戶易于跟蹤,就算顯示位置變了也一樣。

Output of 'ctop --follow'
Output of 'ctop --follow'

'ctop --follow'的輸出

你也可以使用‘f’按鈕來讓高亮的行跟蹤選定的容器。默認(rèn)情況下,跟蹤是關(guān)閉的。

--refresh= - 按指定頻率刷新顯示,默認(rèn)1秒

這對(duì)于按每用戶需求來顯示改變刷新率時(shí)很有用。使用‘p’按鈕可以暫停刷新并選擇文本。

--columns=<columns> - 限定只顯示選定的列。'name' 需要是第一個(gè)字段,其后跟著其它字段。默認(rèn)情況下,字段包括:owner, processes,memory, cpu-sys, cpu-user, blkio, cpu-time

例子: ctop --columns=name,owner,type,memory

Output of 'ctop --column'
Output of 'ctop --column'

'ctop --column'的輸出

-sort-col=<sort-col> - 按指定的列排序。默認(rèn)使用 cpu-user 排序

例子: ctop --sort-col=blkio

如果有Docker和LXC支持的額外容器,跟蹤選項(xiàng)也是可用的:

press 'a' - 接駁到終端輸出

press 'e' - 打開容器中的一個(gè) shell

press 's' - 停止容器 (SIGTERM)

press 'k' - 殺死容器 (SIGKILL)

目前 Jean-Tiare Le Bigot 還在積極開發(fā) ctop 中,希望我們能在該工具中見到像本地 top 命令一樣的特性 :-)


via: http://linoxide.com/how-tos/monitor-linux-containers-performance/

作者:B N Poornima
譯者:GOLinux
校對(duì):wxy

本文由 LCTT 原創(chuàng)翻譯,Linux中國 榮譽(yù)推出

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • muahao閱讀 2,173評(píng)論 0 3
  • systemd攻略 轉(zhuǎn)自http://m.itdecent.cn/p/d5305104d03a或者這個(gè)http...
    x1596357閱讀 3,150評(píng)論 0 3
  • 如果你想知道你的服務(wù)器正在做干什么,你就需要了解一些基本的命令,一旦你精通了這些命令,那你就是一個(gè)專業(yè)的 Linu...
    七寸知架構(gòu)閱讀 11,400評(píng)論 1 71
  • 沒有愛情 可以渡過 時(shí)間的河流 在彼岸 尋一處 盛放的嫣紅 穹頂之上 俯瞰 云影幻滅 沉默 將過往 埋葬 結(jié)束 在...
    Keya的意識(shí)空間閱讀 363評(píng)論 5 6
  • 毋庸置疑,好的事情總會(huì)到來。而當(dāng)它來晚時(shí),也不失為一種驚喜。 徐雯一直沒有想過,這輩子還能見到秦子豪。 位居半山腰...
    愛晚睡閱讀 303評(píng)論 1 3

友情鏈接更多精彩內(nèi)容