# Правила алертов Prometheus по потреблению ресурсов — ОТКЛЮЧЕНЫ ПО УМОЛЧАНИЮ. # # Заготовка: включить, добавив эту строку в `rule_files` файла prometheus.yml: # rule_files: # - prometheus-rules.yml # - prometheus-resource-rules.yml # # Пороги выносятся в env (DEAL_ALERT_*); Prometheus не раскрывает значения env в конфиге, поэтому при # включении файл рендерится из шаблона (подстановка порогов) или пороги проставляются вручную: # DEAL_ALERT_HOST_CPU_PERCENT — загрузка CPU хоста, % (дефолт 90) # DEAL_ALERT_HOST_MEMORY_PERCENT — занятая память хоста, % (дефолт 90) # DEAL_ALERT_HOST_DISK_PERCENT — минимум свободного места, % (дефолт 15) # DEAL_ALERT_CONTAINER_CPU — CPU контейнера (ядра) (дефолт 1.5) # DEAL_ALERT_CONTAINER_MEMORY_PERCENT — память контейнера к лимиту, %(дефолт 90) # # Источники: node-exporter (хост) и cAdvisor (контейнеры), scrape — jobs node-exporter/cadvisor. groups: - name: deal-resources rules: # Хост: загрузка CPU. Дефолт порога — 90%. - alert: DealHostHighCpu expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90 for: 10m labels: severity: warning annotations: summary: "Высокая загрузка CPU хоста" description: "Средняя загрузка CPU хоста выше 90% за 5 минут более 10 минут." # Хост: занятая память. Дефолт порога — 90%. - alert: DealHostHighMemory expr: (1 - node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) > 0.9 for: 10m labels: severity: warning annotations: summary: "Высокое потребление памяти хостом" description: "Свободной памяти меньше 10% более 10 минут." # Хост: свободное место на разделе. Дефолт порога — 15%. - alert: DealHostDiskLow expr: | min by (mountpoint) (node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"} / node_filesystem_size_bytes{fstype!~"tmpfs|overlay"}) < 0.15 for: 15m labels: severity: warning annotations: summary: "Мало места на диске ({{ $labels.mountpoint }})" description: "Свободно менее 15% на разделе {{ $labels.mountpoint }} более 15 минут." # Контейнеры Deal: CPU (ядра). Дефолт порога — 1.5. - alert: DealContainerHighCpu expr: | sum by (name) (rate(container_cpu_usage_seconds_total{name=~".*deal.*|.*core.*|.*service.*"}[5m])) > 1.5 for: 10m labels: severity: warning annotations: summary: "Высокий CPU контейнера {{ $labels.name }}" description: "Контейнер {{ $labels.name }} держит > 1.5 CPU за 5 минут более 10 минут." # Контейнеры Deal: память к лимиту. Дефолт порога — 90%. - alert: DealContainerHighMemory expr: | (container_memory_working_set_bytes{name=~".*deal.*|.*core.*|.*service.*"} / clamp_min(container_spec_memory_limit_bytes{name=~".*deal.*|.*core.*|.*service.*"}, 1)) > 0.9 for: 10m labels: severity: warning annotations: summary: "Контейнер {{ $labels.name }} близок к лимиту памяти" description: "Контейнер {{ $labels.name }} использует более 90% лимита памяти более 10 минут."