我遇到一个问题,我在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 }}'
答案 0 :(得分:1)
您可以尝试 $ labels.instance 。它将返回触发警报的实例名称。
答案 1 :(得分:0)
没有使用Docker的经验,但是如果您的container_memory_rss
指标同时具有container_label_com_docker_swarm_node_id
和container_label_com_docker_swarm_node_name
标签,则在警报规则中将所有出现的事件都替换为另一个事件(包括规则和说明/摘要)就可以了。如果..._name
标签不存在,则可以解释为什么它不起作用。