Уведомление AlertManager из контейнера cAdvisor

#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