使用 prometheus 和 grafana 跟踪事件

Tracking events with prometheus and grafana

有一篇文章 "Tracking Every Release" 讲述了在每个代码部署的图形上显示一条垂直线。他们正在使用石墨。我想对 Prometheus 2.2 和 Grafana 5.1 做类似的事情。更具体地说,我想在图表上显示一个 "application start" 事件。

Grafana 注释似乎是适合此目的的机制,但我不知道要使用哪种类型的 prometheus 指标以及如何查询它。

执行此操作的最简单方法是通过与本文中相同的基本方法,让您的部署工具在执行部署时告诉 Grafana。

Grafan 有一个用于存储注释的内置系统,这些注释在图形上显示为垂直线,并且可以有与之关联的文本。这就像在您的 Grafana 实例中创建一个 API 密钥并向您的部署脚本添加一个 curl 调用一样简单:

curl -H "Authorization: Bearer <apikey>" http://grafana:3000/api/annotations -H "Content-Type: application/json" -d '{"text":"version 1.2.3 deployed","tags":["deploy","production"]}'

有关可用选项的更多信息,请查看文档:

http://docs.grafana.org/http_api/annotations/

将部署添加为注释后,您可以通过转到仪表板设置中的注释选项卡并添加新的注释源来在仪表板上显示这些部署:

然后注释将显示在仪表板的面板上:

您可以完全从 Prometheus 指标获得相同的结果,无需将任何内容推送到 Grafana:

如果您想跟踪所有重启,您的搜索表达式可能类似于:

changes(start_time_seconds{job="foo",env="prod"} > 0

如果您只想跟踪版本更改(并且您有某种 info 提供版本的指标),或者类似这样的东西:

alertmanager_build_info unless max_over_time(alertmanager_build_info[1d] offset 5m)

只要出现新的 alertmanager_build_info 指标(即具有不同标签的指标,例如 version),后一个表达式应该只产生 5 分钟的输出。您可以进一步调整它以仅在 version 更改时产生输出,例如通过汇总所有其他标签。

随着技术的发展,请注意这里。我们直接从 Hashicorp 的 Nomad 的社区版中获取 Prometheus 指标格式的部署作业状态信息,并在 Grafana 中查看此信息。

在您的情况下,您只需向现有面板添加一个额外的查询以覆盖作业启动事件,这相当于我们的新部署。有很多“开箱即用”的相关指标,例如也可以考虑作业版本的变化。重点是除了在 Grafana 中添加查询外,不需要额外的工作。