CTOP - 命令行工具,用于监控Linux容器的性能

时间:2020-03-05 15:28:59  来源:igfitidea点击:

CTOP是一种基于新的命令行的工具,可用于监视容器级别的进程。
通过利用CGroups资源管理功能,容器提供操作系统级虚拟化环境。
该工具收集与存储器,CPU,块IO和元数据相关的数据,如所有者,正常运行等从CGroups,以用户可读格式呈现它,以便可以快速判断系统的整体健康状况。
根据收集的数据,它试图猜测底层的Docker技术。
CTOP可用于检测谁在低存储器情况下使用大量内存。

如何安装ctop

CTOP是使用Python编写的,除了使用Python版本2.6或者更大(带内置光标支持)之外没有其他外部依赖项。
使用Python的PIP安装是推荐的方法。
如果尚未完成并安装CTOP,请使用PIP安装PIP。

注意:本文中显示的示例来自Ubuntu(14.10)系统

$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直接从GINUB安装:

poornima@poornima-Lenovo:~$wget https://raw.githubusercontent.com/yadutaf/ctop/master/cgroup_top.py -O ctop
--2014-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
2014-04-29 19:32:59 (61.0 MB/s) - ctop saved [27314/27314]
poornima@poornima-Lenovo:~$chmod +x ctop

如果未安装CGOUP-BIN包,则会在启动CTOP时收到错误消息。
它可以通过安装所需的包来解决。

poornima@poornima-Lenovo:~$./ctop
[ERROR] Failed to locate cgroup mountpoints.
poornima@poornima-Lenovo:~$sudo apt-get install cgroup-bin

使用选项

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

一旦我们在CTOP屏幕内,请使用UP(↑)和向下(↓)箭头键导航在容器之间。
单击任何容器将选择该特定容器。
按Q或者Ctrl + C退出容器。

让我们现在看一下如何使用上面列出的每个选项。

-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.
  • Stree显示容器的树视图

默认情况下,将显示列表视图

在CTOP窗口中,可以使用F5按钮切换树/列表视图。

--fold = <name> fold <name> cgroup路径在树视图中。

此选项需要与--tree结合使用。

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

'CTOP - 折叠'的输出

在CTOP窗口中,使用+ /键切换子CGROUP折叠。

注意:在撰写本文时,PIP存储库没有通过命令行支持"--fold"选项的最新版本的CTOP。

  • infollow =关注/突出显示cgroup路径。

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

正如我们在下面的屏幕中看到,带有给定路径"/user.slice/user-1000.slice"的cgroup突出显示,并且即使在显示位置更改时,用户也可以更轻松地遵循它。

'CTOP - 义环'输出

我们还可以使用"F"按钮允许突出显示的行遵循所选容器。
默认情况下,请按照关闭。

--refresh =以给定速率刷新显示。
默认为1秒

根据用户要求,这对于更改显示的刷新率是有用的。
使用"p"按钮暂停刷新并选择文本。

--Columns = <列>可以将显示屏限制为所选<列>。
'name'应该是第一个输入后跟其他列的条目。
默认情况下,列包含所有者,进程,内存,CPU-SYS,CPU用户,BLKIO,CPU时间。

例如:CTOP --COLUMNS =名称,所有者,类型,内存

'ctop --column'的输出

-sort-col = <sort-col>列应该对所显示的数据进行排序。
默认情况下,使用CPU用户对其进行排序

例如:CTOP - SOSOR-COL = BLKIO

如果有像Docker和LXC等另外的容器,则还将提供以下选项:

按"A"添加到控制台输出

按'E'在容器上下文中打开shell

按's' - 停止容器(sigterm)

按'K'杀死容器(Sigkill)

CTOP的Python版本目前是Jean-Tiadre Le Bigot的主动开发。

希望我们会在这个工具中看到更多的功能,如我们的本地名称:-)。

** 2016-03-12更新文章**

在golang写的ctop工具

我们发现另一个名为CTOP本身的另一个有趣的工具在Go Lang中写入并监控容器在终端中的实时度量。
它还提供了来自多个容器的实时指标的简明和浓缩概述。
我们在基于Linux的Docker主机中介绍了它的用途。

安装

CTOP目前借助Docker的内置支持;计划用于其他容器和集群系统的连接器以供将来发布。
获取最新版本的CTOP并将其移动到路径环境变量指向的任何位置。

# wget https://github.com/bcicen/ctop/releases/download/v0.4/ctop-0.4-linux-amd64 -O ctop
# sudo mv ctop /usr/local/bin/
# sudo chmod +x /usr/local/bin/ctop

多数民众赞成,我们现在准备在终端中查看容器指标。

CTOP监控工具的用途

CTOP不需要运行任何参数,并且将使用docker_host环境变量配置自己。
要运行它只是在shell中键入ctop。

# ctop

执行上述命令后,将列出所有容器,其中包含其名称,容器ID,CPU使用情况,内存用法和网络流量。

使用以下键绑定,我们可以管理CTOP屏幕。

|钥匙|行动|
| --- - | --- |
| a |切换显示所有(运行和非运行)容器|
| F |过滤器显示容器|
| H |切换CTOP标题|
| H |打开帮助对话框|
| s |选择容器排序字段|
| r |反向容器排序订单|
| Q |退出CTOP |

从shell运行CTOP,我们可以查看所有容器(运行/停止)与其ID,CPU使用,内存用量和接收/传输数据。

# ctop

按'f'以过滤视图并键入字母/单词。
对于此示例,我们将键入'g'以过滤名称以'g'开头的所有容器

过滤了视图后,使用Backspace,清除过滤框并按Enter键,我们将被带到CTOP主视图。
有关帮助,请按"H"。

'Esc'回到主观。

按"H"切换CTOP标题

要选择CTOP主视图的排序字段,请按"S",然后选择字段,然后按Enter键。

有关展开的视图,请在CTOP主视图中使用上/向下箭头键选择容器,然后按Enter键。
我们将能够在详细信息中查看所选容器度量。