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 过去的指标未在目标节点重启时显示的主要内容,如果未能解决你的问题,请参考以下文章
pod重启时发出警报:Windows容器上的Prometheus
如何使用 JSON 格式获取 Prometheus 节点导出器指标
docker容器部署Prometheus服务——云平台监控利器