采样器。仪表盘、监控和警报——直接在你的终端上
它是如何工作的?
示例
还有更多!
作为一名后端开发者,我总是需要监控一些东西。数据库的状态机、记录数量、消息队列延迟、自定义应用程序指标、系统性能、部署脚本的进度等等,太多了!
长期以来,我一直在寻找一款能够节省时间的工具——能够将所有信息集中管理,并在需要时通知我。繁重的生产监控系统无法胜任开发任务,我需要一把瑞士军刀——能够在一分钟内完成配置,并立即提供结果。
没有这样的东西,所以我自己写了个。来认识一下Sampler - 一个纯 Go 编写的、适用于任何 shell 命令的命令行 UI。
要安装,请按照macOS、Linux 或 Windows 的说明进行操作
它是如何工作的?
这个想法非常简单——几乎所有您想要监控和可视化的指标都可以通过 CLI 获得:
- 基础知识:CPU、内存、磁盘空间、网络
- 通过 SSH 从远程机器进行遥测
- 任何数据库指标和自定义查询的结果
- 卡夫卡,RabbitMQ,ActiveMQ
- K8s RAM/CPU/事件
- 所有内容均可通过 http 获取,例如 Spring Boot Actuator 指标
- Docker
- JMX
- 日志
这意味着我们无需复杂的集成、驱动程序和依赖项即可创建仪表板。我们可以直接从终端完成。
使用 Sampler 基本上分为 3 个步骤:
- 在 YAML 文件中定义您的配置
- 跑步
sampler -c your-config-file.yml
- 调整 UI 上的组件大小和位置
示例
可视化及其 YAML 配置
运行图
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
迷你图
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}'
条形图
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}'
仪表
gauges:
- title: Minute progress
rate-ms: 500 # sampling rate, default = 1000
scale: 2 # number of digits after sample decimal point, default = 1
percent-only: false # toggle display of the current value, default = false
color: 178 # 8-bit color number, default one is chosen from a pre-defined palette
cur:
sample: date +%S # sample script for current value
max:
sample: echo 60 # sample script for max value
min:
sample: echo 0 # sample script for min value
- title: Year progress
cur:
sample: date +%j
max:
sample: echo 365
min:
sample: echo 0
文本框
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}}"
ASCII 框
asciiboxes:
- title: UTC time
rate-ms: 500 # sampling rate, default = 1000
font: 3d # font type, default = 2d
border: false # border around the item, default = true
color: 43 # 8-bit color number, default is white
sample: env TZ=UTC date +%r
还有更多!
支持交互式 shell、PTY 模式、触发器、警报和变量。提供与 MySQL、PostgreSQL、MongoDB、Neo4J、Kafka、SSH 和 JMX 配合使用的实际方案。您可以在文档中了解高级功能。
不要犹豫,在 Github 上提出问题、做出贡献并 ⭐ star ⭐ 该项目!
文章来源:https://dev.to/sqshq/sampler-dashboards-monitoring-and-alerting-right-from-your-terminal-5h5e