2

我面临一个问题,当我收到警报时,我在 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 }}'
4

2 回答 2

0

没有使用 Docker 的经验,但是如果您的container_memory_rss指标同时具有 acontainer_label_com_docker_swarm_node_idcontainer_label_com_docker_swarm_node_name标签,那么在警报规则(包括规则和描述/摘要)中将所有出现的一个替换为另一个应该可以正常工作。如果..._name标签不存在,那么这可以解释为什么它不起作用。

于 2018-07-27T08:08:56.133 回答
0

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

于 2018-07-30T15:53:37.227 回答