【问题标题】:Prometheus Alertmanager Expression Problem/Question(s) concerning ListsPrometheus Alertmanager Expression Problem/Questions(s) 关于列表
【发布时间】:2021-11-16 16:21:40
【问题描述】:

我正在尝试创建一个 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"}) 

.. 但这显然行不通。

有人知道如何实现吗?

问候

沃尔克

【问题讨论】:

    标签: expression prometheus-alertmanager alertmanager


    【解决方案1】:

    当我们传递诸如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"})

    【讨论】:

    • 好的,你会记住这一点..谢谢这至少有助于减少规则..因此我使用了一些规则,例如:`缺席(node_filesystem_avail_bytes{instance="foo.bar. de:9100",mountpoint="/homex"}) 或缺席(node_filesystem_avail_bytes{instance="foo.bar.de:9100",mountpoint="/homey"}) 或缺席(node_filesystem_avail_bytes{instance="foo.bar. de:9100",mountpoint="/homez"}) 或.....`你有什么替代的想法,如何检查挂载点是否存在?
    • 肯定还有其他的创意方式,但我认为这是最直接的一种。
    猜你喜欢
    • 2011-11-05
    • 2021-07-13
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    相关资源
    最近更新 更多