如果有多个导出器,如何区分 Prometheus 中的警报规则

问题描述

我想监控在多台服务器上运行的 docker 容器可以说我有 a、b 服务器和容器在其中运行,现在我添加一台服务器 (d) 我想监控所有服务器中的所有 docker 容器 (A,B)仅来自服务器 c。我已将 docker 配置为在所有服务器上公开日志,遵循此 docker docs 不使用 cAdvisor 。目标状态在所有服务器上都显示为“ok”,但问题在于 docker Prometheus 的所有容器的表达式都相同,无法区分服务器是否有人可以使用表达式共享示例 Prometheus 规则文件,即停止容器的数量应该不小于 x 。这是我当前的规则文件

groups:

- name: Server_A
  rules:
  - alert: Central_service_down
    expr: engine_daemon_container_states_containers{state="running"} < 10
    for: 50s
    labels:
      severity: critical
      instance: <IP_of_A>:9323
    annotations:
      summary: "Monitor service non-operational"
      description: "Demo Service {{ $labels.instance }} is down."
- name: Server_B
  rules:
  - alert: Central_service_down
    expr: engine_daemon_container_states_containers{state="running"} < 10
    for: 50s
    labels:
      severity: critical
      instance: <IP_of_B>:9323
    annotations:
      summary: "Monitor service non-operational"
      description: "Demo Service {{ $labels.instance }} is down."

如您所见,服务器 a 和 b 的 expr: engine_daemon_container_states_containers{state="running"} < 10 都是相同的,我如何区分两者的 expr。请分享示例警报文件。提前致谢

解决方法

我添加了 instance='ip' 来区分,即 expr: engine_daemon_container_states_containers{instance="serverA",state="running"} < 10