如何在prometheus + grafana中显示零而不是最后一个值

Posted

技术标签:

【中文标题】如何在prometheus + grafana中显示零而不是最后一个值【英文标题】:How to display zero instead of last value in prometheus + grafana 【发布时间】:2020-05-19 05:06:22 【问题描述】:

我正在使用 prometheus + grafana 来收集和显示指标。如果我的一个设备停止报告,grafana 将继续绘制最后一个值。例如,如果我的一台设备在 2 天前报告了它的温度并且温度为 50 度,那么 Grafana 将在过去 2 天显示一条 50 度的平线。如果设备没有报告任何指标,我预计这个时间序列图会下降到零。

这只是 prometheus 和 grafana 的行为方式,还是我在配置中遗漏了什么?如果设备未报告而不是显示其最后一个值的平线,我希望此时间序列图绘制零。

附加信息:

使用 prometheus.net 将指标推送到 prometheus 的推送网关。

我尝试在 grafana 中图形的 Stacking 和 Null Value 部分下使用 Null value: null as zero 选项。

【问题讨论】:

顺便说一句,可以将 Prometheus 文本展示格式的测量结果直接推送到 VictoriaMetrics 等时间序列数据库,因此时间序列在最后一次摄取样本后立即停止。见these docs 【参考方案1】:

这是推送网关的expected behavior。一旦一个值被推送,它将永远存在。这是由开发团队假设的,TTL or expiration 的指标已被拒绝

此问题的通常解决方案是推送测量的 Unix 时间戳,并在它变得太旧或使用 UNLESS time() - timestamp_metric 条件时发出规则警报。

【讨论】:

以上是关于如何在prometheus + grafana中显示零而不是最后一个值的主要内容,如果未能解决你的问题,请参考以下文章

Grafana + Prometheus 如何在查询指标中使用正则表达式?

如何使用 grafana 可视化 prometheus 端点指标

如何在使用 grafana 和 prometheus-operator 时配置电子邮件警报

Grafana中如何使用Prometheus数据源监控elasticsearch

如何在 Grafana 表中显示多个 Prometheus 服务器名称?

如何使用 Grafana 警报显示 Prometheus 标签