Мониторинг: метрики и дашборды Grafana#
Шкала оценки#
Приемлемо - метрика в пределах нормы, запас до порога есть, устойчивого тренда роста нет.
Проблема - метрика достигла порога или превысила его, сервис деградирует (рост задержек, ошибки, насыщение ресурса).
Пороги CPU/Memory рассчитываются относительно лимитов pod/VM (requests/limits). При отсутствии лимитов - ориентир: тренды и корреляция.
Дашборд: System overview#
Обзорный дашборд. Позволяет быстро увидеть деградацию latency, насыщение ресурсов или OOM и перейти к профильному дашборду для детализации.
Среднее время отклика - порог: < 500 мс. Проблема: > 500 мс устойчиво или монотонный рост в ходе теста.
OOM events - норма: 0. Проблема: ≥ 1 за прогон; серия рестартов - признак некорректных лимитов или утечки памяти.
Server status - норма: все UP. Проблема: провалы healthcheck или устойчивый DOWN.
Active sessions - нагрузочный индикатор. Коррелирует с CPU, Memory, DB pool, latency. Аномалия: резкие скачки или падения при неизменной нагрузке.
Container memory usage - порог: < 70% от лимита. Предупреждение: 70–85%. Проблема: > 90% или рост без стабилизации. Рост совместно с OOM/рестартами - критично.
VM Used memory (heap / non-heap) - использование памяти JVM. Проблема: устойчивый рост heap без отката после GC или приближение к лимитам heap при росте GC duration.
CPU Usage Cores - порог: < 70% от CPU limit. Проблема: > 85% устойчиво (5–10 мин) или корреляция с ростом latency. Высокий CPU при стабильной latency - не критично.
Disk Read / Disk Write - throughput чтения/записи по подам. Проблема: пики, совпадающие с деградацией latency, или устойчиво высокий I/O при росте задержек.
Pod Network Receive / Transmit - сетевой throughput по подам. Проблема: пики при росте latency или признаки насыщения канала.
Дашборд: Checklist#
Эксплуатационный чеклист.
Restarts count - норма: 0. Каждый рестарт - признак OOM, сбоя приложения или принудительной перезагрузки.
Component availability - норма: все UP. Проблема: единичные провалы или устойчивая недоступность компонента.
Node availability - норма: все Ready. Недоступность узла влечёт миграцию подов, деградацию сети и дискового I/O.
Node memory available - норма: > 20% свободно. Проблема: < 20% - повышенный риск OOM/eviction.
Node free HDD space - норма: > 20%. Предупреждение: < 20%. Критично: < 10%. При заполнении возможна остановка логирования или контейнеров.
Container memory usage (80% threshold) - порог предупреждения: > 80%. Проблема: > 90% или рост + рестарты.
HAProxy cert days till expire - предупреждение: < 30 дней. Критично: < 7 дней.
NFS Volume space used - предупреждение: > 80%. Критично: > 90%. При переполнении запись прекращается, зависимые сервисы деградируют.
CoreDNS healthcheck failures - норма: 0.
Pod ephemeral volume used - предупреждение: > 80%. Критично: > 90%. При переполнении - eviction.
Дашборд: Database client connections#
Пулы подключений к БД. Применяется при росте latency приложения для диагностики насыщения пула.
Pending requests - норма: 0. Проблема: > 0 устойчиво (≥ 1–2 мин) - насыщение пула, рост таймаутов.
Connection count (used / idle) - норма: used < 70% от max. Проблема: used > 90%, особенно при росте pending и wait time.
Pool wait time - норма: < 50 мс. Проблема: > 200 мс. Напрямую влияет на latency приложения.
Connection max - заданный максимум пула. База для интерпретации used/idle; самостоятельным индикатором не является.
Дашборд: VM memory#
Детализация памяти JVM. Применяется при подозрении на утечку памяти или GC-деградацию.
JVM memory limit / committed / used - разрез по pool/type (Heap/Non-heap, OldGen/Eden и др.). Норма: used < 70–75% от limit. Проблема: > 85–90% или рост без стабилизации.
JVM memory after last GC - использование памяти после последней GC. Норма: < 60%. Предупреждение: 60–75%. Проблема: > 80% устойчиво. Монотонный рост - признак утечки или разрастания кэшей.
JVM GC duration - длительность GC-пауз. Норма: p95 < 100–300 мс. Проблема: p95 > 300 мс или p99 > 1 с.
JVM threads count - норма: стабильное значение. Проблема: устойчивый рост без возврата при деградации latency или росте DB wait.
JVM classes current loaded - монотонный рост при росте non-heap/Metaspace - признак classloader-утечек.
JVM CPU utilization ratio / system CPU - высокий JVM CPU при умеренном system CPU - вероятен throttling контейнера. Высокий system CPU - перегрузка узла.
Дашборд: Pod HDD read write rate#
Дисковый I/O по подам. Без iowait/latency диска служит индикатором профиля нагрузки.
HDD read rate / write rate - скорость чтения/записи (байт/с). Проблема: пики, совпадающие с деградацией latency или DB wait; устойчиво высокий I/O при росте задержек.
Дашборд: Pod network read write rate#
Сетевой throughput по подам. Позволяет локализовать под с всплеском трафика и исключить насыщение сети как причину деградации.
Receive rate / Transmit rate - скорость приёма/передачи (байт/с). Актуально при высоком трафике к БД, NFS, RabbitMQ. Проблема: устойчивый рост/пики при росте latency или признаки насыщения канала.
Дашборд: HAProxy#
Балансировщик нагрузки. Позволяет оценить корректность приёма нагрузки и наличие ошибочных ответов или падения бэкендов.
HTTP response / request rate - скорость запросов и ответов на фронтендах и бэкендах. Падение rate при неизменной входящей нагрузке - признак проблемы бэкенда или насыщения.
Data transfer (Front / Back) - трафик через фронтенды и бэкенды (бит/с): IN - входящий, OUT - исходящий. Проблема: признаки насыщения канала при росте latency.
Sessions - скорость установления сессий (ops). Падение при неизменной нагрузке - признак проблемы.
Connections - скорость установления соединений: фронтенды (connections_total), попытки к бэкендам ( connection_attempts_total). Рост попыток при падении успешных - признак недоступности бэкенда.
Status UP - норма: все фронтенды и бэкенды UP. Любой компонент DOWN - проблема.
Uptime - аптайм процесса HAProxy (сек). Внезапный сброс - незапланированный рестарт.