Правила вынесены в prometheus-resource-rules.yml (не в rule_files); пороги — через env DEAL_ALERT_* при включении.
74 lines
4.1 KiB
YAML
74 lines
4.1 KiB
YAML
# Правила алертов 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 минут."
|