Prometheus 跟踪自动扩展服务器中的请求

Posted

技术标签:

【中文标题】Prometheus 跟踪自动扩展服务器中的请求【英文标题】:Prometheus to track requests in auto-scaled servers 【发布时间】:2016-12-10 20:46:36 【问题描述】:

我正在尝试使用Prometheus 来跟踪一段时间内对我的服务器的请求数。由于我的服务器将使用 Google Compute Engine 水平自动调用,因此我只能将我的指标推送到远程推送网关。我的服务器将在任何给定时间被删除并重新创建。

问题在于,无论何时创建新服务器,甚至使用 python 客户端库 the count value is reset to 0 创建计数器实例。我还可以看到图表在上升和下降,而不是一直在上升。

在自动调用环境中使用 Prometheus 跟踪请求总数的正确方法是什么?

编辑:

还有另一篇关于完全相同问题的帖子,只是在稍微不同的情况下。 Prometheus how to handle counters on server。似乎服务器必须以某种方式自行跟踪计数器状态。 Prometheus 只记录当时发送给它的任何值,推或拉。这意味着如果服务器只是调用counter.inc(),计数器值并不总是上升。也就是说,文档中的以下语句只适用于客户端库端。

计数器是一个累积指标,代表一个只会上升的单一数值。

【问题讨论】:

【参考方案1】:

由于我的服务器将使用 Google Compute Engine 水平自动调用,因此我只能将我的指标推送到远程推送网关。我的服务器将在任何给定时间被删除并重新创建。

这并不完全正确。您可以使用服务发现自动发现您的节点,并以通常的 Prometheus 方式对其进行检测和监控。

pushgateway 仅适用于服务级别的批处理作业,请参阅https://prometheus.io/docs/practices/pushing/

【讨论】:

由于服务器的存在是动态的,Prometheus 可能无法在服务器被移除之前及时检索到数据。但是,现在的问题是我的计数值无法跨实例和注册表累积。如果我改用拉动,这个问题会解决吗?每次都重新创建注册表的原因是因为重用注册表会在某些时候在推送网关中产生 500 Server Error。 监控中有很多竞争,老实说,如果您频繁启动/关闭服务器以致丢失大量样本,那么您需要调整自动缩放的滞后以减少振荡。聚合是取计数器的比率然后相加的问题。 我认为你说得有道理。我可以汇总结果以获得总计。你能把这个放在答案中以便我接受吗?至于振荡,我试图通过使用小实例来最小化机器成本。副作用是它会随着交通状况快速变化。

以上是关于Prometheus 跟踪自动扩展服务器中的请求的主要内容,如果未能解决你的问题,请参考以下文章

使用 Prometheus 如何监控每个实例提供自己的 /metrics 的扩展 Docker 服务?

(4) -- Jaeger, Prometheus, Kiali, GRAFANA使用指引

搭建Prometheus平台,你必须考虑的6个因素

基于Prometheus和Grafana的监控平台 - 环境搭建

增加 Prometheus 存储保留

Prometheus监控运维实战十七: 高可用与扩展性