Prometheus 普罗米修斯中某些标签中的数据丢失时发出警报

Prometheus 普罗米修斯中某些标签中的数据丢失时发出警报,prometheus,promql,prometheus-node-exporter,Prometheus,Promql,Prometheus Node Exporter,我正在向普罗米修斯发送两个磁盘的相关数据。我想提醒一个磁盘的度量是否停止发送度量。假设我有diskA和diskB,我正在收集磁盘。现在diskB失败了。在普罗米修斯 disk\u up{disk=“diskA”}将包含数据和 disk\u up{disk=“diskB”}将丢失 缺席(disk\u up)将为0,因为disk\u up有diskA的数据。 缺席(disk\u up{disk=“diskB”})将用于此目的。但我不想硬编码磁盘名 我可以知道针对这种情况设置警报的更好方法吗。您可以使

我正在向普罗米修斯发送两个磁盘的相关数据。我想提醒一个磁盘的度量是否停止发送度量。假设我有diskA和diskB,我正在收集磁盘。现在diskB失败了。在普罗米修斯

disk\u up{disk=“diskA”}
将包含数据和
disk\u up{disk=“diskB”}
将丢失

缺席(disk\u up)
将为0,因为disk\u up有diskA的数据。
缺席(disk\u up{disk=“diskB”})
将用于此目的。但我不想硬编码磁盘名


我可以知道针对这种情况设置警报的更好方法吗。

您可以使用以下方法:

max_over_time(disk_up[1h])
  unless
disk_up
也就是说,该度量在过去1小时内的任何时间都存在,但现在不存在

但是,如果对某些
diskC
弹出一个
disk\u-up
度量,您将得到一个假阳性。或者,如果由于出口商或您的普罗米修斯配置,度量值获得或丢失一个标签

您可以通过显式筛选磁盘/实例/您感兴趣的任何内容来避免前者,但这会挫败您不硬编码它们的目标。但这可能是更明智的做法:

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

max_over_time(disk_up{job="my_disk_job"}[1h])
  unless
disk_up{job="my_disk_job"}

谢谢为了快速反应