golang容器指标监控的类htop界面插件ctop的使用

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

ctop是一个类似htop的容器监控工具,提供实时容器指标的简洁概览。

ctop logo

安装方法

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主机变量。运行时界面如下:

ctop运行界面

配置文件

运行时使用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

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


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

1 回复

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


使用ctop监控Golang容器指标

ctop是一个类似htop的容器监控工具,专门用于实时监控Docker和容器化应用的性能指标。对于Golang开发者来说,ctop是一个非常有用的工具,可以帮助你快速了解容器运行状态。

安装ctop

ctop有多种安装方式:

1. 使用预编译二进制文件

# 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 (使用Homebrew)
brew install ctop

2. 使用Go安装

go install github.com/bcicen/ctop@latest

基本使用

启动ctop非常简单:

ctop

这会显示所有正在运行的容器及其指标。

主要功能

  1. 实时监控:显示CPU、内存、网络I/O、磁盘I/O等指标
  2. 容器排序:可按CPU、内存等指标排序
  3. 容器操作:可以直接在界面中停止、重启、暂停容器
  4. 日志查看:可以查看容器日志
  5. 多容器选择:可以同时监控多个容器

常用快捷键

  • a - 显示所有容器(包括停止的)
  • f - 过滤容器
  • h - 显示帮助
  • s - 选择容器排序方式
  • r - 重启容器
  • S - 停止容器
  • l - 查看容器日志
  • e - 打开/关闭容器指标
  • m - 显示内存指标

高级用法

1. 只监控特定容器

ctop -filter "name=my_container"

2. 自定义刷新间隔

ctop -interval 2  # 2秒刷新一次

3. 使用自定义Docker连接

ctop -host tcp://192.168.99.100:2376

Golang集成示例

如果你想在自己的Golang应用中集成类似ctop的功能,可以使用Docker的Go SDK:

package main

import (
	"context"
	"fmt"
	"time"

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

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

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

		fmt.Printf("\033[2J") // 清屏
		fmt.Printf("\033[H")  // 光标移动到左上角

		for _, container := range containers {
			stats, err := cli.ContainerStats(context.Background(), container.ID, false)
			if err != nil {
				continue
			}

			fmt.Printf("Container: %s\n", container.Names[0])
			fmt.Printf("Status: %s\n", container.Status)
			fmt.Printf("Image: %s\n", container.Image)
			fmt.Println("---------------------")
		}

		time.Sleep(2 * time.Second)
	}
}

自定义ctop配置

ctop支持配置文件来自定义显示选项。配置文件通常位于~/.config/ctop/config,内容类似:

[theme]
name = "default"
graph = true

[display]
sort = "cpu"

总结

ctop是一个简单但功能强大的容器监控工具,特别适合Golang开发者快速了解容器运行状态。相比直接使用Docker CLI命令,ctop提供了更直观、更集中的视图,能帮助你快速发现性能问题。

对于更复杂的监控需求,可以考虑结合Prometheus和Grafana等工具,但对于日常开发和调试,ctop是一个非常实用的选择。

回到顶部