IMLC.ME

有时候想把某段时间的指标保存起来方便日后查看,还挺麻烦的。 特别是压测的时候,半天测试可能就产生了几 GB 的原始数据,保存原始数据的成本实在太高。

在不追求精确的情况下,把 Prometheus 的图片保存下来,就能满足要求。 当然,在一个成熟而且复杂的系统中,关键的指标可能上百上千项,手动右键保存实在有点蠢。 于是特别找了两个自动化工具。

Grafana Dashboard 和 GoFullPage

Prometheus 一般都会配合第三方的数据可视化平台食用,例如 Grafana。 所以只要把主要的指标放到 Grafana Dashboard, 然后截图,就完事了。

不过 Grafana Dashboard 的图不好截,普通的滚动截图插件和 Chrome 控制台自带的截图都只能截取窗口范围的图像。 试了几款之后,只有 GoFullPage 能截完整。

GoFullPage - Full Page Screen Capture

这里放个 Grafana 演示网站的截图
https://play.grafana.org/d/000000012/grafana-play-home?orgId=1

Preview

优点 颜值高、图标样式丰富友善
缺点 如果一个截图上有几十上百的图标,查看某个具体的指标会变得挺麻烦

metricdump

在 GitHub 找到的一款把 Prometheus 各个指标保存成单独图片的工具。

GitHub- metricdump

贴一个官方的示例图:

Preview

metricdump 通过 yaml 文件配置需要下载的 metric。

- query: sum(rate(caddy_http_requests_total[10m])) by (handler)
  title: Caddy HTTP Requests
- query: sum(rate(prometheus_notifications_latency_seconds_sum[5m])) by (instance)/sum(rate(prometheus_notifications_latency_seconds_count[5m])) by (instance)
  title: Prometheus Notification Latency
  unit: second

并且支持 png、svg 和 html 格式输出。

优点 格式丰富、每个 metric 单独成图,方便查看、支持 CLI 和 Docker 容器使用,方便 CI/CD 集成
缺点 个人作品,尚不成熟,容易有 bug、只支持折线图、只有几个坐标单位可以配置、以 Chromium 作为渲染引擎,Docker 镜像将近 1G