prometheus 过去的指标未在目标节点重启时显示

Posted

技术标签:

【中文标题】prometheus 过去的指标未在目标节点重启时显示【英文标题】:prometheus past metrics not shown on target node restart 【发布时间】:2021-11-12 08:11:47 【问题描述】:

我是 Prometheus 的新手,需要帮助了解为什么在目标节点重新启动时不显示过去的指标数据。

我已经设置了一个 Golang 网络服务器(目标)。此服务器使用Go Prometheus Docs Golang Prometheus 客户端准备指标并在端口 3000 上公开指标。Prometheus 从该目标中抓取数据。

Prometheus 配置文件:

global:   scrape_interval: 10s   scrape_timeout: 10s
    scrape_configs:
  - job_name: 'webServer1'
    static_configs:
    - targets: ['webServer1:8080']

我还在 docker-compose 中设置了保留标志

prometheus:
image: prom/prometheus
volumes:
  - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
ports:
  - "127.0.0.1:9090:9090"
command:
  - '--config.file=/etc/prometheus/prometheus.yml'
  - '--storage.tsdb.path=/prometheus'
  - '--web.console.libraries=/etc/prometheus/console_libraries'
  - '--web.console.templates=/etc/prometheus/consoles'
  - '--storage.tsdb.retention.time=200h'
  - '--web.enable-lifecycle'

我已经检测了一个 Web 服务器(目标)来计算向 /bar 端点发出的 HTTP 请求的数量。我可以在 Prometheus 上看到正确的请求计数(点击图片 1 链接)。

image 1

但是在网络服务器重启时,之前记录的指标不会显示在 Prometheus 上(点击图片 2 链接)。

image 2

我不清楚为什么之前从网络服务器(目标)抓取的指标在目标节点重新启动时没有显示在上面。我可以在图表视图中看到以前抓取的指标(参见图 3 链接)。但不在表格视图中。

image 3

【问题讨论】:

【参考方案1】:

看起来您将主机名作为指标名称的一部分。这会为每个容器生成新的指标。表格视图仅显示每个目标的最近一次抓取中包含的指标。

要解决此问题,请从指标名称中删除主机名部分,以便名称在重新启动之间不会更改。如果这确实是有用的信息,请将它们添加为标签,尽管that is almost certainly a bad idea。

【讨论】:

以上是关于prometheus 过去的指标未在目标节点重启时显示的主要内容,如果未能解决你的问题,请参考以下文章

节点导出器目标未在普罗米修斯 UI 中显示

pod重启时发出警报:Windows容器上的Prometheus

如何使用 JSON 格式获取 Prometheus 节点导出器指标

docker容器部署Prometheus服务——云平台监控利器

Prometheus (Docker):确定每个节点的可用内存(哪个指标是正确的?)

如何在 grafana 上显示指标时用标签替换目标