Перейти к основному содержимому
Версия: 4.10

Системные метрики

Системные метрики показывают, как сервисы используют ресурсы сервера — CPU, память, горутины, а также сколько времени различные процессы (демоны) тратят на выполнение задач. Эти метрики помогают увидеть, где возникают задержки, какие компоненты нагружают систему сильнее всего, и есть ли признаки утечек памяти или зависаний. Они нужны для стабильной работы сервисов, быстрой диагностики проблем и планирования масштабирования или оптимизации.

Демон — это отдельный процесс или компонент сервиса, который выполняет фоновые или повторяющиеся задачи, например, обработку очередей или сканирование файлов. Демоны обычно работают непрерывно или запускаются периодически.

Горутины — это лёгкие параллельные потоки в языке Go, позволяющие выполнять множество операций одновременно с низкими затратами ресурсов. Они делают сервисы более производительными, но при ошибках в коде могут приводить к утечкам памяти или блокировкам, если остаются в «подвисшем» состоянии.

Переменные

  • $daemon_type — список всех типов демонов (daemon_type). Используется во всех панелях. Позволяет фильтровать метрики по одному или нескольким типам.

  • $__interval — автоматический интервал, адаптируется под текущий временной диапазон в Grafana. Используется для оптимизации rate().


Как пользоваться дашбордом

1. Сравнение производительности демонов

  • Используйте панели Top 5 Daemons (по времени и количеству) для быстрого понимания, какие демоны наиболее загружены.
  • Отфильтруйте $daemon_type, чтобы сравнить поведение конкретных типов.

2. Поиск аномалий и уязвимых мест

  • Смотрите на P95 / P50 latency — высокий P95 говорит о наличии редких, но медленных вызовов.
  • Сравните Average Processing Time с P95. Большой разрыв = выбросы/нагрузка.
  • Панель Daemon CPU Correlation позволяет выявить, какой демон грузит CPU.

3. Анализ памяти и асинхронных сервисов

  • Memory Allocation Rate + Memory Usage: анализируют утечки или всплески.
  • Goroutines: следите за их числом, чтобы вовремя ловить рост.

Описание панелей

Название панелиОписаниеПрименение
Использование CPUОбщая загрузка CPU.Если CPU растёт, это может говорить о лишней активности, утечках памяти или сторонних процессах. В таких случаях нужно проверить фоновые задачи и исключить утечки памяти.
Время обработки горутинПоказывает, насколько быстро обрабатываются горутины.Рост говорит о возможных блокировках, утечках или о большом количестве горутин.
ГорутиныКоличество активных горутин.Резкий рост горутин без роста нагрузки — признак утечек или блокировок. При всплесках — анализировать точки создания goroutines, выявлять и устранять блокировки.
Скорость выделения памятиСкорость выделения памяти.Низкая скорость может сигнализировать о том, что оборудование не справляется и его нужно заменить, либе же оптимизировать выделение памяти. Либо возрасла нагрузка на систему.
Скорость обработки горутин (операций в секунду)Количество завершённых горутин в секунду.Она помогает оценить текущую нагрузку. Если показатель резко падает, это может сигнализировать о блокировках или сбоях. В таком случае надо проверить возможные дедлоки, ошибки кода, состояние очередей.
Использование памятиОбщее использование памяти.Рост использования памяти может указывать на утечки или чрезмерное кэширование. Используется для выявления процессов с избыточными аллокациями.
Среднее время выполнения горутин (секунды)Среднее время выполнения.При росте...
Задержки обработки горутин (секунды)Задержки по обработке каждой горутины.Если растёт, значит есть задержки или блокировки. При всплесках надо перейти к анализу системных и баз данных, искать медленные запросы или дедлоки.
Топ 5 демонов по общему времени обработкиПоказывает, какой демон «самый тяжёлый».Помогает быстро сфокусировать внимание на демонах, которые наиболее интенсивно используют ресурсы. При росте нагрузки эти демоны — кандидаты на оптимизацию.
Общее время обработки в зависимости по типу демона (секунды)Сумма времени, потраченного каждым демоном.Позволяет определить, какой демон потребляет основное время процессора. Используется для планирования оптимизации или масштабирования.
Топ 5 демонов по потраченному времени-Определяет демоны с наибольшим числом вызовов или временем выполнения. При росте нагрузки — оптимизировать наиболее частые задачи, снижать избыточную нагрузку.
Горутины по демонам-Определяет демоны с наибольшим числом вызовов или временем выполнения. При росте нагрузки — оптимизировать наиболее частые задачи, снижать избыточную нагрузку.

Корреляция CPU, Горутин и памяти

ПанельОписаниеПрименение и решения
Нагрузка горутин vs Нагрузка CPUДва графика: слева — скорость роста времени работы горутин за минуту, справа — загрузка CPU в %.Помогает понять, нагружены ли процессор и горутины одинаково. Если нагрузка горутин растёт, а CPU остаётся низким — процессор не успевает обрабатывать задачи. Решение: проверить блокировки в коде, упростить логику или перераспределить задачи.
Горутины vs CPU ядраПоказывает, сколько горутин работает одновременно и сколько физических ядер у CPU. Есть линия Optimal Load (80%) для ориентира.Помогает понять, хватает ли ядер для работы горутин. Если горутин больше, чем ядер — система может работать медленно. Если меньше — CPU простаивает. Решение: уменьшить количество горутин или добавить ядра, если система перегружена. Если недогруз — увеличить параллелизм.
Время обработки vs Нагрузка дискаДва графика: среднее время обработки горутин и загрузка диска в %.Помогает увидеть, влияет ли диск на скорость работы. Если при росте загрузки диска растёт время обработки — диск может работать медленно. Решение: вынести часть данных в кэш, ускорить диск (SSD/NVMe), уменьшить запись или чтение на диск.
Нагрузка горутин vs Использование памятиГрафик показывает связь между нагрузкой горутин и использованием оперативной памяти (в GB).Помогает выявить проблемы с памятью. Если память растёт при стабильной нагрузке — возможны утечки. Если график колеблется — может работать сборщик мусора. Решение: провести профилирование памяти, устранить утечки или настроить работу сборщика мусора.
Соответсвие трендов CPU и горутинПоказывает, насколько одинаково меняются графики нагрузки горутин и загрузки CPU (от 0 до 1).Помогает понять, используют ли горутины процессор эффективно. Если значение близко к 1 — всё согласовано. Если меньше 0.4 — горутины и CPU работают несогласованно, могут быть блокировки. Решение: проверить код на блокировки, упростить логику или перераспределить задачи.
Processing Time vs Network ActivityГрафик показывает связь между временем обработки (90-й перцентиль) и сетевым трафиком (MB/c).Помогает понять, влияет ли сеть на работу сервиса. Если при росте трафика растёт время обработки — сеть может быть перегружена. Если время обработки скачет при стабильном трафике — возможны сетевые проблемы. Решение: проверить сеть, балансировку нагрузки, увеличить пропускную способность или использовать кэширование.

Визуализация метрик

image-2023-11-27_10-47-59.png image-2023-11-27_10-47-59.png image-2023-11-27_10-47-59.png image-2023-11-27_10-47-59.png image-2023-11-27_10-47-59.png

Как находить проблемы

  1. CPU нагружен + рост goroutines? → смотрите Daemon CPU Correlation и Goroutines.
  2. P95 вырос резко? → сравните с Processing Count, чтобы понять, где тормозит.
  3. Один демон ест всю память? → смотрите Memory Allocation Rate + Usage.
  4. Демон работает часто, но быстро → нормально. Работает редко, но медленно → сигнал к анализу.