AlertManager-容器警报在运行时未返回主机名

时间:2018-07-26 12:13:05

标签: docker prometheus cadvisor prometheus-alertmanager

我遇到一个问题,我在alert_rules.yml中使用以下规则 当我收到警报时,它不会返回容器正在运行的主机名。如何实现返回主机名而不是节点ID?

我尝试使用container_label_com_docker_swarm_node_name而不是container_label_com_docker_swarm_node_id,但无效。

有什么建议吗?

- alert: task_high_memory_usage_1g
expr: sum(container_memory_rss{container_label_com_docker_swarm_task_name=~".+"})
  BY (container_label_com_docker_swarm_task_name, container_label_com_docker_swarm_node_id) > 1e+09
for: 1m
labels:
  severity: warning
annotations:
  description: '{{ $labels.container_label_com_docker_swarm_task_name }} on ''{{
    $labels.container_label_com_docker_swarm_node_id }}'' memory usage is {{ humanize
    $value}}.'
  summary: Memory alert for Swarm task '{{ $labels.container_label_com_docker_swarm_task_name
    }}' on '{{ $labels.container_label_com_docker_swarm_node_id }}'

2 个答案:

答案 0 :(得分:1)

您可以尝试 $ labels.instance 。它将返回触发警报的实例名称。

答案 1 :(得分:0)

没有使用Docker的经验,但是如果您的container_memory_rss指标同时具有container_label_com_docker_swarm_node_idcontainer_label_com_docker_swarm_node_name标签,则在警报规则中将所有出现的事件都替换为另一个事件(包括规则和说明/摘要)就可以了。如果..._name标签不存在,则可以解释为什么它不起作用。