Я настроил оповещение об использовании памяти узла в prometheus. Мой шаблон предупреждений выглядит следующим образом:
- alert: NodeMemory Usage(development)
annotations:
description: '{{$labels.instance}} Memory usage is critical (current value is: {{ $value }})'
summary: High Memory usage detected
expr: |
1 - sum by(node) ((node_memory_MemFree{job = "node-exporter"} + node_memory_Cached{job = "node-exporter"} + node_memory_Buffers{job = "node-exporter"}) * on(namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:) / sum by(node) (node_memory_MemTotal{job = "node-exporter"}* on(namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:) > 0.70
for: 1s
labels:
severity: warning
Я получаю имя узла с в предупреждении, когда порог превышает для одного узла (имя узла здесь узлов-3z4c), как показано ниже:
[FIRING:1] (NodeMemory Usage(development) nodes-3z4c monitoring/k8s warning)
Memory usage is critical (current value is: 0.7148033249432908)
Но проблема в том, что когда несколько узлов превышают пороговое значение, имена нескольких узлов не указываются в уведомлении о предупреждении и получают уведомление следующим образом:
[FIRING:4] NodeMemory Usage (monitoring/k8s)
Memory usage is critical (current value is: 0.7319404231240473)
Memory usage is critical (current value is: 0.7856648253333621)
Может ли кто-нибудь помочь мне разобраться в проблеме?
Это не имеет ничего общего с тем, как вы определили предупреждение. Если вы посмотрите на это в пользовательском интерфейсе Alertmanager, вы увидите, что там есть все ярлыки.
Это либо шаблон, который вы используете (если Alertmanager отправляет сообщение напрямую), либо любой другой обработчик веб-перехватчиков, который вы используете, который сохраняет только общие метки и отбрасывает все остальное.
Хорошо, спасибо за ответ. Я понял.