Sampler:通过YAML轻松实现终端监控可视化的开源神器
一、核心功能:当命令行遇见可视化
作为运维工程师,我们经常需要在终端执行各种监控命令。传统方式下,我们需要手动解析top、vmstat等命令的输出,而Sampler通过YAML配置文件将这些枯燥的文本转换为动态可视化图表,包括[1][4]:
- 实时折线图:展示CPU、内存等指标变化趋势
- 仪表盘:直观显示磁盘使用率等阈值类数据
- 进度条:呈现任务完成度或资源占用比例
- 文本面板:显示日志关键信息或脚本输出
特别亮点是支持智能告警功能,当指标超过阈值时可触发声音提醒、颜色高亮或执行自定义脚本(如发送邮件/Slack通知)[1][3]。
示例:监控CPU使用率并设置80%告警阈值
runcharts:
- title: CPU Usage
command: "top -bn1 | grep '%Cpu' | awk '{print 100 - $8}'"
interval: 1s
visualizer: line
triggers:
- condition: "$cur > 80"
actions:
sound: true
script: "echo 'CPU overload!' | mail -s Alert admin@example.com"
二、极简安装:各平台一键部署
Sampler是Go语言开发的单文件二进制工具,支持主流操作系统[1][2][3]:
Linux/macOS
# 下载二进制文件
wget https://github.com/sqshq/sampler/releases/download/v1.1.0/sampler-1.1.0-linux-amd64 -O /usr/local/bin/sampler
chmod +x /usr/local/bin/sampler
# 音频告警依赖(可选)
apt install libasound2-dev # Debian/Ubuntu
Windows
choco install sampler # 通过Chocolatey安装
Docker方式
docker run -v $(pwd)/config.yml:/config.yml sqshq/sampler -c /config.yml
三、配置实战:YAML文件详解
配置文件分为三大模块[2][3]:
1. 数据采集配置
variables:
PG_CONN: "psql -U user dbname" # 定义复用变量
commands:
- name: "CPU Load"
command: "awk '{print $1}' /proc/loadavg" # 采集命令
interval: 5s # 采样频率
2. 可视化组件定义
支持7种组件类型[3]:
sparklines: # 迷你趋势图
- title: Memory Usage
command: "free | grep Mem | awk '{print $3/$2*100}'"
color: 34
gauges: # 仪表盘
- title: Disk Usage
command: "df / | awk 'NR==2{print $5}' | tr -d '%'"
max: 100
min: 0
3. 告警规则
triggers:
- condition: "$cur > 90" # 当值>90时触发
actions:
sound: true # 播放告警音
visual: true # 界面红色高亮
script: "echo 'Disk almost full!' > /var/log/alerts.log"
四、典型应用场景
场景1:数据库监控
textboxes:
- title: MySQL Status
init: mysql -uroot -p$PWD # 建立持久连接
sample: SHOW STATUS LIKE 'Threads_connected'
interval: 10s
场景2:日志关键词统计
sparklines:
- title: Error Logs
command: "grep -c 'ERROR' /var/log/app.log | tail -n 60"
triggers:
- condition: "$cur > 10"
actions:
sound: true
场景3:远程服务器监控
通过SSH实现无需本地安装[3]:
textboxes:
- title: Remote Disk
pty: true # 启用伪终端模式
init: ssh user@host
sample: df -h / | awk 'NR==2{print $5}'
场景4. 高级功能
数据库监控
<YAML>
textboxes: - title: MySQL查询 pty: true # 启用伪终端模式 init: mysql -u root -p密码 sample: SELECT COUNT(*) FROM users;[<sup data-citation='{"url":"http://www.baidu.com/link?url=oqxiEz5x9Jrzl0JDLVClYTVOJeQ671P0ebxhY1ahR-6k_TXjK2I--pLCgu6RF9qogtWF32YCglciQS8dfMJWr_","title":"推荐一款用于执行 shell 命令、可视化和警报的工具","content":"* https:///sqshq/sampler?tab=readme-ov-file\n\n简介\n--\n\nSampler 是一个用于执行 shell 命令、可视化和警报的工具。使用简单的 YAML 文件进行配置。 \n\n安装\n--\n\n"}'>5</sup>](http://www.baidu.com/link?url=oqxiEz5x9Jrzl0JDLVClYTVOJeQ671P0ebxhY1ahR-6k_TXjK2I--pLCgu6RF9qogtWF32YCglciQS8dfMJWr_)
Kafka延迟监控
<YAML>
runcharts: - title: Kafka延迟 items: - label: GroupA sample: kafka-consumer-groups --group groupA | awk '{sum+=$5}END{print sum}'[<sup data-citation='{"url":"http://www.baidu.com/link?url=oqxiEz5x9Jrzl0JDLVClYTVOJeQ671P0ebxhY1ahR-6k_TXjK2I--pLCgu6RF9qogtWF32YCglciQS8dfMJWr_","title":"推荐一款用于执行 shell 命令、可视化和警报的工具","content":"* https:///sqshq/sampler?tab=readme-ov-file\n\n简介\n--\n\nSampler 是一个用于执行 shell 命令、可视化和警报的工具。使用简单的 YAML 文件进行配置。 \n\n安装\n--\n\n"}'>5</sup>](http://www.baidu.com/link?url=oqxiEz5x9Jrzl0JDLVClYTVOJeQ671P0ebxhY1ahR-6k_TXjK2I--pLCgu6RF9qogtWF32YCglciQS8dfMJWr_)
4. 启动命令
<BASH>
sampler -c config.yml # 默认监听8080端口
五、与主流监控工具对比
| 特性 | Sampler | Prometheus | Zabbix |
|---|---|---|---|
| 配置复杂度 | ⭐️ | ⭐️⭐️⭐️ | ⭐️⭐️⭐️⭐️ |
| 实时可视化 | ✅ | 需Grafana | 需配置 |
| 自定义命令支持 | ✅ | ❌ | 有限 |
| 部署成本 | 单文件 | 需要服务端 | 需要服务端 |
💡 最佳实践:Sampler适合快速搭建临时监控看板或作为Prometheus的轻量补充[4]
六、实用技巧
- 变量复用:提取公共配置到
variables段[3] - 交互式命令:用
init建立持久连接提升效率 - 主题切换:通过
theme: light切换亮色模式 - 多步初始化:
multistep-init执行复杂初始化流程