1

我正在尝试创建一个 prometheus-alert-expression 来检查挂载点是否已挂载,并在挂载点丢失时发送警报。想法是这样的:

groups:
  - name: mountpoints 
    rules:
      - alert: /ghome missing 
        expr: absent(node_filesystem_avail_bytes{mountpoint="/ghome", instance="my.machine.org:9100"}) 
        for: 60s
        labels:
          severity: critical
        annotations:
          summary: "/ghome missing on ({{ $labels.instance }})."
          description: "VALUE = {{ $value }}\n  LABELS = {{ $labels }}"

这有点工作。但是有没有办法将列表/向量传递给挂载点和/或实例。

使用这个表达式,我必须为每个实例和每个挂载点编写一个警报规则。

我有尝试像这样的正则表达式的想法

    expr: absent(node_filesystem_avail_bytes{mountpoint=~"/ghome|/something|/other", instance=~"my.machine.org:9100|another.machine.org:9100"}) 

..但这显然行不通。

有人知道如何实现吗?

问候

沃尔克

4

1 回答 1

0

当我们传递一个诸如 的表达式时absent(my_metric{label=~"1|2"}),它的计算结果如下: my_metric{label=~"1|2"}可能返回 4 个可能的结果:

  1. 没有结果
  2. my_metric{label="1"}
  3. my_metric{label="2"}
  4. my_metric{label="1"} 和 my_metric{label="2"}

然后根据这些结果调用该absent函数,如果没有返回“1”,它只会在没有结果时这样做。当其中 1 人缺席时,缺席案件。

不幸的是,没有唯一的方法,我们必须明确缺席,我们可以有多个警报规则或使用or运算符,例如:

absent(my_metric{label="1"}) or absnet(my_metrci{label="2"})

于 2021-11-25T07:05:55.267 回答