#prometheus #monitoring #prometheus-alertmanager #cadvisor
Вопрос:
Я использую общие инструменты контроля («Прометей», cAdvisor, AlertManager), и я столкнулся с этой проблемой, что один из серверов стрельбы каждый 30 минут, containerCpuUsage
но, к сожалению, я не знаю, в какой коробке находится эта (я предполагаю, что это cAdvisor себя, но загрузка процессора очень низкая, на нее!!) Итак, мой первый вопрос, есть ли способ, чтобы сказать AlertManager — базы по правилам «Прометей» — направить также имя контейнера?
(Сам cAdvisor использует больше процессора, чем другие контейнеры)
кадвизор-правило.yaml
- alert: ContainerCpuUsage
expr: (sum(rate(container_cpu_usage_seconds_total[3m])) BY (instance, name) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: "Container CPU usage (instance {{ $labels.instance }})"
description: "Container CPU usage is above 80%n VALUE = {{ $value }}n LABELS: {{ $labels }}"
Я пытался {{ $labels.name }}
, {{ $labels.job }}
но ничего не вышло.
итак, давайте назовем имя экземпляра A, а затем внутри него будет контейнер nginx amp; cadvisor. Инструменты мониторинга запущены в другом экземпляре, как я могу поместить имена контейнеров в метки правил или если есть другой способ сделать это!
Ответ №1:
В cAdvisor указано, что сам контейнер иногда может занимать немного больше процессора.
# cAdvisor can sometimes consume a lot of CPU, so this alert will fire constantly.
# If you want to exclude it from this alert, exclude the serie having an empty name: container_cpu_usage_seconds_total{name!=""}
В моем случае я запустил контейнер --name=cadvisor
cAdvisor и добавил, как правило, следующее выражение:
expr: (sum(rate(container_cpu_usage_seconds_total{name!="cadvisor"}[3m])) BY (instance, name) * 100) > 80