Системные метрики
Системные метрики показывают, как сервисы используют ресурсы сервера — 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). | Помогает понять, влияет ли сеть на работу сервиса. Если при росте трафика растёт время обработки — сеть может быть перегружена. Если время обработки скачет при стабильном трафике — возможны сетевые проблемы. Решение: проверить сеть, балансировку нагрузки, увеличить пропускную способность или использовать кэширование. |
Визуализация метрик

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