首页 > 解决方案 > Prometheus servicemonitor 间隔被忽略

问题描述

我的指标每 30 秒抓取一次,即使我在定义我的 servicemonitor 时指定了 10 秒的间隔。

我为我的出口商创建了一个似乎运行良好的服务监视器。我可以将我的导出器视为目标,并在 /graph 端点上查看指标。但是,当在“目标”页面上时,“最后一次抓取”显示间隔为 30 秒(我刷新页面以查看秒数会上升到多高,为 30)。果然,放大图表显示指标每 30 秒出现一次。

我已将 servicemonitor 的时间间隔设置为 10 秒,这应该会覆盖任何其他时间间隔。为什么会被忽略?

 endpoints:
- port: http-metrics
  scheme: http
  interval: 10s

标签: kubernetesprometheus

解决方案


首先:仔细检查您是否更改了需要更改的 ServiceMonitor,以及是否正在查看 ServiceMonitor 中的刮痕。

转到 prometheus 的 Web UI,然后选择 Status -> Configuration。现在尝试找到 prometheus 操作员创建的部分配置(基于 ServiceMonitor 配置)。可能通过 servicemonitor 名称查找会起作用 - 应该有一个job_name包含您的 servicemonitor 名称的部分。

现在查看scrape_interval本节中的值。如果它是“30s”(或任何其他不是预期的“10s”)并且您确定您正在查看正确的部分,那么这意味着其中一件事情发生了:

  • 您的 ServiceMonitor 并不真正包含“10s” - 也许它没有正确应用?验证集群中的活动对象
  • prometheus-operator 没有更新 Prometheus 配置 - 也许它不起作用?还是崩溃了?或者只是默默地停止工作?重启一下prometheus-operator pod还是挺安全的,或许值得一试。
  • prometheus 没有正确加载新配置?prometheus 操作员更新一个秘密,当它被更改时,prometheus pod 中的 sidecar 会触发 prometheus 中的重新加载。也许它没有工作?再次在 Web UI 中的 Status -> Runtime & Build information 中查看“配置重新加载”。成功了吗?“上次成功的配置重新加载”时间是否与您在 servicemonitor 中的更改大致匹配?如果它不是“成功”,那么可能是其他一些更改导致最终的普罗米修斯配置不正确并且无法加载它?

推荐阅读