Linux可视化监控
# 开源:通过 Shell 打造强大的 Linux 可视化监控工具
# 什么是 Sampler?
Sampler 是一个简单而强大的开源工具,允许用户通过执行 Shell 命令采集动态数据,并将其可视化,同时支持触发警报。只需配置一个 YAML 文件,即可在终端中监控实时数据并进行调整。Sampler 的目标是为开发者和运维人员提供一种轻量级的监控解决方案,无需额外安装繁杂的服务器或数据库。
# 为什么需要使用 Sampler?
Sampler 提供了一种极简、便捷的方式来实现实时数据可视化,没有服务器、没有数据库、没有部署 - 你指定 shell 命令,它就可以正常工作。
- 零配置服务器:无需安装复杂的服务器、数据库或依赖环境。
- 跨平台支持:可在本地运行,也支持通过 SSH 收集远程服务器数据。
- 多功能监控:适用于多种场景,包括监控系统资源、网络流量、服务状态和消息队列等。
- 即时反馈:通过简单的 Shell 命令即可完成采样,支持通知和警报功能。
- 完全可定制:通过 YAML 文件定义采样逻辑和可视化布局,灵活且高效。
# 我需要每台都安装吗?
不,您可以在本地运行 Sampler,但仍可以从多台远程计算机收集遥测数据。任何可视化都可能具有 init
命令,您可以在其中通过 ssh 连接到远程服务器。
# Sampler 的核心功能
- 动态监控:采集 Shell 命令输出的动态数据。
- 多类型图表:支持运行图、条形图、折线图和文本框等多种展示形式。
- 远程支持:通过 SSH 从远程服务器采集数据。
- 实时可视化:即时调整图表大小、位置和样式。
- 警报机制:可配置监控条件并触发警报。
# 如何安装 Sampler
# Linux
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
2
# MacOS
通过 Homebrew 安装:
brew install sampler
1
或使用 curl
手动下载并安装:
sudo curl -Lo /usr/local/bin/sampler https://github.com/sqshq/sampler/releases/download/v1.1.0/sampler-1.1.0-darwin-amd64
sudo chmod +x /usr/local/bin/sampler
1
2
2
安装完成后,可通过以下命令验证安装:
sampler --version
1
# 如何配置和使用 Sampler
Sampler 的使用非常简单,只需以下 3 步:
- 定义配置文件:创建 YAML 文件以定义要执行的 Shell 命令和可视化设置。
- 运行 Sampler:使用
sampler -c config.yml
启动监控。 - 调整界面布局:动态调整 UI 中组件的大小和位置。
# 运行效果
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# CPU、内存
sparklines:
- title: CPU usage
rate-ms: 200
scale: 0
sample: ps -A -o %cpu | awk '{s+=$1} END {print s}'
- title: Free memory pages
rate-ms: 200
scale: 0
sample: memory_pressure | grep 'Pages free' | awk '{print $3}'
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 条形图
barcharts:
- title: Local network activity
rate-ms: 500 # sampling rate, default = 1000
scale: 0 # number of digits after sample decimal point, default = 1
items:
- label: UDP bytes in
sample: nettop -J bytes_in -l 1 -m udp | awk '{sum += $4} END {print sum}'
- label: UDP bytes out
sample: nettop -J bytes_out -l 1 -m udp | awk '{sum += $4} END {print sum}'
- label: TCP bytes in
sample: nettop -J bytes_in -l 1 -m tcp | awk '{sum += $4} END {print sum}'
- label: TCP bytes out
sample: nettop -J bytes_out -l 1 -m tcp | awk '{sum += $4} END {print sum}'
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
textboxes:
- title: Local weather
rate-ms: 10000 # sampling rate, default = 1000
sample: curl wttr.in?0ATQF
border: false # border around the item, default = true
color: 178 # 8-bit color number, default is white
- title: Docker containers stats
rate-ms: 500
sample: docker stats --no-stream --format "table { {.Name}}\t{ {.CPUPerc}}\t{ {.MemUsage}}\t{ {.PIDs}}"
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
同时颜色也支持调整
Github:https://github.com/sqshq/sampler
上次更新: 2025/02/26, 13:50:50