golang容器监控Top界面可视化工具插件ctop的使用

Golang容器监控Top界面可视化工具插件ctop的使用

ctop是一个类似top的界面,用于实时监控多个容器的指标数据。

ctop logo

功能特点

ctop提供了简洁的容器指标实时概览,支持多个容器同时监控:

ctop界面

它还支持单容器视图来检查特定容器。

ctop内置支持Docker和runC,未来版本计划支持其他容器和集群系统。

安装方法

Debian/Ubuntu

sudo apt-get install ca-certificates curl gnupg lsb-release
curl -fsSL https://azlux.fr/repo.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/azlux-archive-keyring.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/azlux-archive-keyring.gpg] http://packages.azlux.fr/debian \
  $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/azlux.list >/dev/null
sudo apt-get update
sudo apt-get install docker-ctop

Arch Linux

sudo pacman -S ctop

Linux通用安装

sudo wget https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-linux-amd64 -O /usr/local/bin/ctop
sudo chmod +x /usr/local/bin/ctop

macOS

brew install ctop

sudo port install ctop

sudo curl -Lo /usr/local/bin/ctop https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-darwin-amd64
sudo chmod +x /usr/local/bin/ctop

Windows

scoop install ctop

Docker方式运行

docker run --rm -ti \
  --name=ctop \
  --volume /var/run/docker.sock:/var/run/docker.sock:ro \
  quay.io/vektorlab/ctop:latest

使用方法

ctop不需要任何参数,默认使用Docker主机变量。

配置文件

运行时使用S键可以将当前的过滤器、排序字段和其他选项保存到默认配置文件路径(XDG系统上是~/.config/ctop/config,其他系统是~/.ctop)。

下次启动ctop时会加载和应用配置文件中的值。

选项

选项 描述
-a 仅显示活动容器
-f <string> 设置初始过滤字符串
-h 显示帮助对话框
-i 反转默认颜色
-r 反转容器排序顺序
-s 选择初始容器排序字段
-v 输出版本信息并退出

快捷键

按键 操作
<ENTER> 打开容器菜单
a 切换显示所有(运行和非运行)容器
f 过滤显示的容器(按esc清除)
H 切换ctop头部
h 打开帮助对话框
s 选择容器排序字段
r 反转容器排序顺序
o 打开单视图
l 查看容器日志(按t切换时间戳)
e 执行Shell
c 配置列
S 保存当前配置到文件
q 退出ctop

替代方案

可以参考Awesome Docker列表中类似Docker工具。


更多关于golang容器监控Top界面可视化工具插件ctop的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang容器监控Top界面可视化工具插件ctop的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Golang容器监控工具ctop使用指南

ctop是一个类似Linux top命令的容器监控工具,专为容器环境设计,提供实时可视化的容器监控界面。下面详细介绍ctop的安装和使用方法。

1. ctop简介

ctop具有以下特点:

  • 实时显示容器CPU、内存、网络IO等指标
  • 支持Docker、containerd、LXC等多种容器运行时
  • 轻量级,无需额外依赖
  • 交互式界面,支持排序、筛选等操作

2. 安装ctop

2.1 使用预编译二进制安装

# 下载最新版本
wget https://github.com/bcicen/ctop/releases/download/v0.7.7/ctop-0.7.7-linux-amd64 -O ctop

# 添加执行权限
chmod +x ctop

# 移动到PATH目录
sudo mv ctop /usr/local/bin/

2.2 使用Go安装

go install github.com/bcicen/ctop@latest

2.3 使用包管理器安装

# For macOS
brew install ctop

# For Ubuntu/Debian
sudo snap install ctop

# For Arch Linux
yay -S ctop

3. 基本使用

启动ctop非常简单:

ctop

这将显示所有正在运行的容器的实时监控信息。

4. 常用快捷键

快捷键 功能描述
a 显示所有容器(包括停止的)
f 过滤显示容器
h 显示帮助
s 选择排序字段
r 反向排序
o 打开/关闭只显示运行中容器
l 查看容器日志
e 进入容器shell
S 保存当前配置
q 退出ctop

5. 高级用法

5.1 自定义显示列

ctop -i -s name,status,cpu,mem,net,io

5.2 连接到远程Docker守护进程

ctop -H tcp://remote-docker-host:2376

5.3 使用配置文件

ctop支持配置文件~/.ctop,可以自定义默认行为:

# 示例配置
interval=5
sortField=cpu
invertSort=false
hideHeaders=false

6. 结合Golang代码使用

如果你想在自己的Go程序中集成类似ctop的功能,可以使用以下代码片段:

package main

import (
	"context"
	"fmt"
	"os"
	"text/tabwriter"

	"github.com/docker/docker/api/types"
	"github.com/docker/docker/client"
)

func main() {
	cli, err := client.NewClientWithOpts(client.FromEnv)
	if err != nil {
		panic(err)
	}

	containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{})
	if err != nil {
		panic(err)
	}

	w := tabwriter.NewWriter(os.Stdout, 0, 0, 3, ' ', 0)
	fmt.Fprintln(w, "CONTAINER ID\tIMAGE\tCOMMAND\tSTATUS\tPORTS\tNAMES")

	for _, container := range containers {
		fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s\t%s\n",
			container.ID[:12],
			container.Image,
			container.Command,
			container.Status,
			formatPorts(container.Ports),
			container.Names[0][1:],
		)
	}
	w.Flush()
}

func formatPorts(ports []types.Port) string {
	var result string
	for _, port := range ports {
		if port.PublicPort != 0 {
			result += fmt.Sprintf("%d->%d/%s, ", port.PublicPort, port.PrivatePort, port.Type)
		}
	}
	if len(result) > 0 {
		return result[:len(result)-2]
	}
	return ""
}

7. 总结

ctop是一个简单高效的容器监控工具,特别适合开发者和运维人员快速了解容器运行状态。相比完整的监控系统,ctop更加轻量级,适合临时诊断和日常监控使用。

对于生产环境,建议将ctop与Prometheus、Grafana等完整监控方案结合使用,ctop作为辅助的实时监控工具。

回到顶部