3

我是普罗米修斯/警报管理器的新手。

我创建了一个每分钟执行一次 shell 脚本的 cron 作业。--textfile.collector.directory此 shell 脚本在分配给参数(到节点导出器)的同一目录中生成“test.prom”文件(其中包含仪表度量)。我验证了(使用 curl http://localhost:9100/metrics)节点导出器正确地公开了该自定义指标。

当我尝试在普罗米修斯仪表板中针对该自定义指标运行查询时,它没有显示任何结果(它说没有找到数据)。

我无法弄清楚为什么对通过节点导出器文本文件收集器公开的指标的查询失败。任何线索我错过了什么?另外请让我知道如何检查并确保普罗米修斯刮掉了我的自定义指标“test_metric”?

我在普罗米修斯仪表板中的查询是test_metric != 0(在普罗米修斯仪表板中)没有给出任何结果。但我test_metric通过节点导出器文本文件公开。

任何帮助表示赞赏!

顺便说一句,节点导出器在 Kubernetes 环境中作为 docker 容器运行。

4

3 回答 3

1

我有类似的情况,但这不是配置问题。

相反,我的数据包括时间戳:

# HELP network_connectivity_rtt Round Trip Time to each node
# TYPE network_connectivity_rtt gauge
network_connectivity_rtt{host="home"} 53.87 1541426242
network_connectivity_rtt{host="hop_1"} 58.8 1541426242
network_connectivity_rtt{host="hop_2"} 21.93 1541426242
network_connectivity_rtt{host="hop_3"} 71.69 1541426242

一旦我重新加载它, PNE 就会毫无问题地拿起它们。由于 prometheus 在 systemd 下运行,我不得不像这样检查日志:

journalctl --system -u prometheus.service --follow

在那里我读到了这一行:

msg="Error on ingesting samples that are too old or are too far into the future"

一旦我删除了时间戳,值就开始出现了。这使我更详细地阅读了时间戳,我发现它们必须以毫秒为单位。所以现在这种格式没问题:

# HELP network_connectivity_rtt Round Trip Time to each node
# TYPE network_connectivity_rtt gauge
network_connectivity_rtt{host="home"} 50.47 1541429581376
network_connectivity_rtt{host="hop_1"} 3.38 1541429581376
network_connectivity_rtt{host="hop_2"} 11.2 1541429581376
network_connectivity_rtt{host="hop_3"} 20.72 1541429581376

我希望它可以帮助别人。

于 2018-11-05T14:56:50.313 回答
0

这是我的坏事。我没有在 prometheus.yaml 文件中包含 node-exporter 的抓取指令。包括它们后它起作用了。

于 2018-06-13T03:45:07.230 回答
0

这个问题是由于过时的指标而发生的。假设您在 13.00 默认情况下在 5 分钟后将指标写入文件,prometheus 会认为您的指标已过时,并且在您进行查询时它可能会从那里消失。

于 2020-02-26T04:25:04.797 回答