零代码玩转系统监控:手把手教你用 Sampler 把命令行数据变成动态图表

Posted by Mike on 2025-03-20

为什么你需要 Sampler?

作为 IT 从业者或科技爱好者,你是否经历过这些场景?

  • 服务器突发 CPU 飙高,但传统的 top 命令输出密密麻麻,难以快速定位问题;
  • 想实时展示系统性能数据给团队,却苦于没有直观的可视化工具;
  • 需要监控自定义脚本的输出,但开发一套监控系统耗时耗力。

Sampler 这款由 GitHub 开发者 sqshq(Alexander Lukyanchikov)打造的开源工具,完美解决了这些问题。

Sampler 通过将终端命令的输出转化为动态图表,让枯燥的数据变得生动直观,甚至支持自定义告警和交互式操作。无论是个人开发调试,还是团队运维协作,它都能大幅提升效率。

Sampler 官方网站和仓库

  1. https://sampler.dev

  2. https://github.com/sqshq/sampler

核心功能:从命令行到可视化,只需一步

1. 实时监控与数据可视化

Sampler 的核心能力是将常见的命令行工具(如: vmstatiostat)或自定义脚本的输出,实时渲染为折线图、柱状图、仪表盘等可视化组件。例如:

  • CPU使用率:用折线图展示各核心负载波动;
  • 内存占用:用进度条显示已用/剩余比例;
  • 网络流量:用动态仪表盘展示实时吞吐量。

2. 高度可定制化:YAML 配置即用

通过简单的 YAML 配置文件,用户可以定义:

  • 监控命令:支持 Shell 脚本、Python 脚本等任意可执行命令;
  • 图表类型:从 7 种可视化组件(如 Sparklines、Gauge)中选择;
  • 刷新频率:按秒级调整数据更新速度;
  • 颜色主题:自定义界面配色,适配不同终端环境。

示例配置片段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
runcharts:
- title: Search engine response time
rate-ms: 500 # sampling rate, default = 1000
scale: 2 # number of digits after sample decimal point, default = 1
legend:
enabled: true # enables item labels, default = true
details: false # enables item statistics: cur/min/max/dlt values, default = true
items:
- label: GOOGLE
sample: curl -o /dev/null -s -w '%{time_total}' https://www.google.com
color: 178 # 8-bit color number, default one is chosen from a pre-defined palette
- label: YAHOO
sample: curl -o /dev/null -s -w '%{time_total}' https://search.yahoo.com
- label: BING
sample: curl -o /dev/null -s -w '%{time_total}' https://www.bing.com

3. 多数据源支持:不止于系统指标

除了系统资源,Sampler 还能监控:

  • 系统级监控:内存占用、磁盘IO、网络流量等基础指标
  • ​日志级监控:实时解析应用访问日志,生成访问热力图
  • 应用级监控:MySQL QPS、Kafka 消息堆积量等中间件状态

4. 智能告警:异常及时提醒

当数据超过阈值时,Sampler支持:

  • 声音提醒:内置蜂鸣声或自定义音频;
  • 颜色高亮:图表自动切换为红色警示;
  • 触发脚本:执行指定命令(如发送邮件或 Slack 通知)。

5. 跨平台与轻量化:开箱即用

Sampler 基于 Go 语言开发,支持 Linux、macOS、Windows 系统,且无需复杂依赖。

安装仅需 一条命令,二进制文件仅 5 MB左右,资源占用极低。

快速上手:5 分钟部署你的监控面板

1. 安装 Sampler

1.1. Linux/macOS

1
2
3
# 一键下载并安装
$ sudo wget https://github.com/sqshq/sampler/releases/download/v1.1.0/sampler-1.1.0-linux-amd64 -O /usr/local/bin/sampler
$ sudo chmod +x /usr/local/bin/sampler

1.2. Windows

1
2
3
4
# 通过 Chocolatey安装
$ choco install sampler
# 或者直接下载 exe 文件
https://github.com/sqshq/sampler/releases/download/v1.1.0/sampler-1.1.0-windows-amd64.exe

1.3. Docker

1
2
3
4
5
6
7
8
# Create a configuration file
$ vim config.yml

# Build the container image
$ docker build --tag sampler .

# Run a container
$ docker run --interactive --tty --volume $(pwd)/config.yml:/root/config.yml sampler --config /root/config.yml

2.编写配置文件

新建 config.yml 文件,定义监控项。以下示例监控 CPU、内存和网络:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
runcharts:
- title: CPU Utilization
command: "top -bn1 | grep '%Cpu' | awk '{print 100 - $8}'"
interval: 1s
visualizer: line
scale: 0-100

- title: Memory Usage
command: "free | grep Mem | awk '{print $3/$2 * 100}'"
interval: 2s
visualizer: gauge
scale: 0-100

- title: Network Traffic (KB/s)
command: "ifstat -i eth0 -b -n 1 1 | tail -1 | awk '{print $1}'"
interval: 1s
visualizer: bar

3.启动监控

1
$ sampler -c config.yml

进阶技巧:释放 Sampler 的隐藏潜力

1.场景1:开发调试中的性能分析

监控 Java 应用的 GC 频率:

1
2
3
4
5
runcharts:
- title: Java GC Count
command: "jstat -gc <PID> | awk '{print $13}'"
interval: 5s
visualizer: line

2.场景2:日志关键词监控

统计 Nginx 日志中 500 错误的次数:

1
2
3
4
5
texts:
- title: 500 Errors
command: "tail -n 100 /var/log/nginx/access.log | grep ' 500 ' | wc -l"
interval: 10s
color: red

3.场景3:交互式 Shell 集成

仅与数据库建立一次连接,然后在交互式 shell 会话中执行轮询。

1
2
3
4
5
6
textboxes:
- title: MongoDB polling
rate-ms: 500
init: mongo --quiet --host=localhost test # executes only once to start the interactive session
sample: Date.now(); # executes with a required rate, in scope of the interactive session
transform: echo result = $sample # executes in scope of local session, $sample variable is available for transformation

为什么 Sampler 值得你选择?

  • 对比传统工具:相比 Zabbix、Prometheus 等重量级方案,Sampler 无需搭建服务端,适合轻量化场景;
  • 对比同类工具:如 Netdata 更侧重系统指标,而 Sampler支持任意自定义命令,灵活性更高;
  • 学习成本低:YAML 配置语法简单,30 分钟即可掌握核心功能。

结语

Sampler 用极简的设计理念,将命令行与可视化完美结合。无论是个人开发者快速排查问题,还是运维团队展示实时数据,它都能成为你的「瑞士军刀」。

立即访问 GitHub仓库下载体验,或参考官方文档探索更多高级功能!