我面临一个问题,我在alert_rules.yml中使用以下规则当我收到警报时,它不会返回容器运行的主机名。如何实现返回主机名而不是节点ID?
我尝试使用container_label_com_docker_swam_node_name而不是container_label_com_docker_Swam_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 }}'
没有使用Docker的经验,但如果您的container_memory_rss
度量同时具有container_label_com_docker_swarm_node_id
和container_label_com_docker_swarm_node_name
标签,那么在警报规则(包括规则和描述/摘要(中用另一个标签替换所有出现的情况应该会很好。如果..._name
标签不存在,那么这可能解释了它不起作用的原因。
您可以尝试$labels.instance。它将返回触发警报的实例名称。