监控 Linux 容器性能的命令行神器

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

监控 Linux 容器性能的命令行神器

ctop是一个新的基于命令行的工具,它可用于在容器层级监控进程。容器通过利用控制器组(cgroup)的资源管理功能,提供了操作系统层级的虚拟化环境。该工具从cgroup收集与内存、CPU、块输入输出的相关数据,以及拥有者、开机时间等元数据,并以人性化的格式呈现给用户,这样就可以快速对系统健康状况进行评估。基于所获得的数据,它可以尝试推测下层的容器技术。ctop也有助于在低内存环境中检测出谁在消耗大量的内存。

功能

ctop的一些功能如下:

  • 收集CPU、内存和块输入输出的度量值
  • 收集与拥有者、容器技术和任务统计相关的信息
  • 通过任意栏对信息排序
  • 以树状视图显示信息
  • 折叠/展开cgroup树
  • 选择并跟踪cgroup/容器
  • 选择显示数据刷新的时间窗口
  • 暂停刷新数据
  • 检测基于systemd、Docker和LXC的容器
  • 基于Docker和LXC的容器的高级特性
    • 打开/连接shell以进行深度诊断
    • 停止/杀死容器类型

安装

ctop是由Python写成的,因此,除了需要Python 2.6或其更高版本外(带有内建的光标支持),别无其它外部依赖。推荐使用Python的pip进行安装,如果还没有安装pip,请先安装,然后使用pip安装ctop。

注意:本文样例来自Ubuntu(14.10)系统

 
 
  1. $ sudo apt-get install python-pip

使用pip安装ctop:

 
 
  1. poornima@poornima-Lenovo:~$ sudo pip install ctop
  2. [sudo] password for poornima:
  3. Downloading/unpacking ctop
  4. Downloading ctop-0.4.0.tar.gz
  5. Running setup.py (path:/tmp/pip_build_root/ctop/setup.py) egg_info for package ctop
  6. Installing collected packages: ctop
  7. Running setup.py install for ctop
  8. changing mode of build/scripts-2.7/ctop from 644 to 755
  9. changing mode of /usr/local/bin/ctop to 755
  10. Successfully installed ctop
  11. Cleaning up...

如果不选择使用pip安装,你也可以使用wget直接从github安装:

 
 
  1. poornima@poornima-Lenovo:~$ wget https://raw.githubusercontent.com/yadutaf/ctop/master/cgroup_top.py -O ctop
  2. --2015-04-29 19:32:53-- https://raw.githubusercontent.com/yadutaf/ctop/master/cgroup_top.py
  3. Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 199.27.78.133
  4. Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|199.27.78.133|:443... connected.
  5. HTTP request sent, awaiting response... 200 OK Length: 27314 (27K) [text/plain]
  6. Saving to: ctop
  7. 100%[======================================>] 27,314 --.-K/s in 0s
  8. 2015-04-29 19:32:59 (61.0 MB/s) - ctop saved [27314/27314]

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

如果cgroup-bin包没有安装,你可能会碰到一个错误消息,你可以通过安装需要的包来解决。

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

下面是ctop的输出样例:

ctop屏幕

ctop屏幕

用法选项

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

当你进入ctop屏幕,可使用上(↑)和下(↓)箭头键在容器间导航。点击某个容器就选定了该容器,按q或Ctrl+C退出该容器。

现在,让我们来看看上面列出的那一堆选项究竟是怎么用的吧。

-h / --help - 显示帮助信息

 
 
  1. poornima@poornima-Lenovo:~$ ctop -h
  2. Usage: ctop [options]
  3. Options:
  4. -h, --help show this help message and exit
  5. --tree show tree view by default
  6. --refresh=REFRESH Refresh display every <seconds>
  7. --follow=FOLLOW Follow cgroup path
  8. --columns=COLUMNS List of optional columns to display. Always includes
  9. 'name'
  10. --sort-col=SORT_COL Select column to sort by initially. Can be changed
  11. dynamically.

--tree - 显示容器的树形视图

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

当你进入ctop窗口,你可以使用F5按钮在树状/列表视图间切换。

--fold= - 在树形视图中折叠名为 <name> 的 cgroup 路径

该选项需要与 --tree 选项组合使用。

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

'ctop --fold'的输出

'ctop --fold'的输出

在ctop窗口中,使用+/-键来展开或折叠子cgroup。

注意:在写本文时,pip仓库中还没有最新版的ctop,还不支持命令行的‘--fold’选项

--follow= - 跟踪/高亮 cgroup 路径

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

正如你在下面屏幕中所见到的那样,带有“/user.slice/user-1000.slice”路径的cgroup被高亮显示,这让用户易于跟踪,就算显示位置变了也一样。

'ctop --follow'的输出

'ctop --follow'的输出

你也可以使用‘f’按钮来让高亮的行跟踪选定的容器。默认情况下,跟踪是关闭的。

--refresh= - 按指定频率刷新显示,默认1秒

这对于按每用户需求来显示改变刷新率时很有用。使用‘p’按钮可以暂停刷新并选择文本。

--columns= - 限定只显示选定的列。'name' 需要是第一个字段,其后跟着其它字段。默认情况下,字段包括:owner, processes,memory, cpu-sys, cpu-user, blkio, cpu-time

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

'ctop --column'的输出

'ctop --column'的输出

-sort-col= - 按指定的列排序。默认使用 cpu-user 排序

例子: ctop --sort-col=blkio

如果有Docker和LXC支持的额外容器,跟踪选项也是可用的:

 
 
  1. press 'a' - 接驳到终端输出
  2. press 'e' - 打开容器中的一个 shell
  3. press 's' - 停止容器 (SIGTERM)
  4. press 'k' - 杀死容器 (SIGKILL)

目前 Jean-Tiare Le Bigot 还在积极开发 ctop 中,希望我们能在该工具中见到像本地 top 命令一样的特性

原文发布时间:2015-05-11

本文来自云栖合作伙伴“linux中国”

目录
相关文章
|
1月前
|
监控 网络协议 Shell
【Shell 命令集合 网络通讯 】Linux 监控和记录网络中ARP(Address Resolution Protocol)活动 arpwatch命令 使用指南
【Shell 命令集合 网络通讯 】Linux 监控和记录网络中ARP(Address Resolution Protocol)活动 arpwatch命令 使用指南
35 0
|
6天前
|
存储 运维 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第18天】 在现代微服务架构中,Docker容器已成为部署和运行应用的标准环境。随之而来的挑战是如何有效监控这些容器的性能与健康状况,确保系统的稳定性和可靠性。本文将探讨构建一个高效稳定的Docker容器监控体系的关键技术和方法,包括日志管理、性能指标收集以及异常检测机制,旨在为运维人员提供实用的指导和建议。
11 0
|
9天前
|
监控 Linux
linux监控指定进程
请注意,以上步骤提供了一种基本的方式来监控指定进程。根据你的需求,你可以选择使用不同的工具和参数来获取更详细的进程信息。
14 0
|
9天前
|
监控 Linux 网络安全
linux中启动rpc.rstat监控
请注意,rpc.rstatd服务通常用于收集远程系统的性能统计信息,例如CPU利用率、内存使用等。在使用rpc.rstatd服务之前,你应该确保了解其功能、用法和安全性,并根据需要进行适当的配置和调整。
8 0
|
14天前
|
Linux
Linux命令行快捷键
Linux命令行快捷键
|
15天前
|
Linux Shell 虚拟化
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
linux 部署docker容器虚拟化平台(二)--------docker 镜像制作方法
26 0
|
16天前
|
监控 Java Linux
linux下监控java进程 实现自动重启服务
linux下监控java进程 实现自动重启服务
|
28天前
|
运维 监控 云计算
构建高效稳定的Docker容器监控体系
随着微服务架构的普及,Docker容器作为其核心承载单元,在系统运维中扮演着日益重要的角色。本文旨在探讨如何构建一个高效且稳定的Docker容器监控体系,以确保容器运行的可靠性和系统的高可用性。文章首先分析了容器监控的必要性,接着详细介绍了监控体系的设计理念和组件选择,最后提供了实施过程中的关键步骤与最佳实践。通过本文,读者将掌握构建和维护Docker容器监控体系的有效方法。
|
1月前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 实时监控系统性能 top命令 使用指南
【Shell 命令集合 系统管理 】⭐⭐⭐Linux 实时监控系统性能 top命令 使用指南
40 2
|
1月前
|
存储 Shell Linux
【Shell 命令集合 系统设置 】Linux 将参数作为命令行输入 eval命令 使用指南
【Shell 命令集合 系统设置 】Linux 将参数作为命令行输入 eval命令 使用指南
25 0