如果Prometheus中某些标签中的数据丢失,则发出警报

时间:2019-02-21 10:38:59

标签: prometheus promql prometheus-node-exporter

我正在将与两个磁盘相关的数据发送到Prometheus。我想提醒一个磁盘的指标是否停止发送指标。假设我有diskA和diskB,并且正在收集disk_up指标。现在diskB失败了。普罗米修斯

disk_up{disk="diskA"}将包含数据和 disk_up{disk="diskB"}将丢失

absent(disk_up)将为0,因为disk_up具有diskA的数据。 absent(disk_up{disk="diskB"})将达到目的。但是我不想对磁盘名称进行硬编码。

我能知道哪种方法是针对这种情况设置警报的更好方法。

1 个答案:

答案 0 :(得分:1)

您可以使用类似这样的内容:

JOIN

即该指标在过去1小时内的任何时间都存在,但现在不存在。

但是,如果弹出max_over_time(disk_up[1h]) unless disk_up 指标disk_up,您将得到误报。或者,如果度量标准由于出口商或您的Prometheus配置而失去一个标签。

您可以通过显式过滤磁盘/实例/感兴趣的任何内容来避免使用前者,但这会破坏您不对它们进行硬编码的目标。但这可能是更明智的选择:

diskC

或至少

max_over_time(disk_up{disk~="disk(A|B)"}[1h])
  unless
disk_up{disk~="disk(A|B)"}