Обработка значений метрик#
Контекст#
В процессе мониторинга ИТ-инфраструктуры и бизнес-процессов системы генерируют огромный объем сырых метрик: загрузка CPU, объем памяти, количество запросов, время отклика, число ошибок и т.д. Эти данные поступают из различных источников — Prometheus, InfluxDB, PostgreSQL, кастомные экспортеры — и зачастую требуют предварительной обработки перед тем, как станут пригодны для анализа и визуализации.
Однако сырые метрики не всегда отражают реальную картину. Например:
Абсолютное значение загрузки CPU не показывает тренд.
Количество ошибок в логах требует нормализации по общему числу запросов.
Данные с разных хостов нужно агрегировать для получения сводной картины.
Без обработки такие метрики затрудняют принятие решений, особенно при необходимости расчета KPI, SLA или выявления аномалий.
Типичные ситуации:
Команда DevOps хочет видеть не просто график запросов, а процент успешных ответов.
Аналитик пытается определить среднее время отклика сервиса за последний час.
Администратору необходимо выявить пики нагрузки, коррелирующие с определенными событиями.
Для эффективного анализа требуется инструмент, способный преобразовывать, фильтровать и агрегировать данные в реальном времени.
Проблема#
Сырые метрики недостаточно информативны для оперативного анализа и принятия решений. Их использование напрямую приводит к:
Затрудненному выявлению трендов и аномалий.
Ошибкам интерпретации данных.
Необходимости ручного расчета ключевых показателей.
Отсутствию единой метрической модели для разных команд.
Решение#
Основной модуль визуализации (GRAF) предоставляет мощные встроенные инструменты для обработки и преобразования метрик, позволяя получать из сырых данных информативные и пригодные для анализа показатели.
Ключевые возможности обработки#
Математические выражения
Поддержка языков запросов (PromQL, SQL, Flux) и встроенных выражений для расчета:Процентных соотношений:
(errors / total_requests) * 100Средних значений:
avg(cpu_usage)Производных метрик:
rate(http_requests_total[5m])
Агрегация данных
Группировка по меткам, хостам, регионам:sum by (service) (http_requests)max by (instance) (memory_usage)
Фильтрация и выборка
Использование переменных и условий для динамической фильтрации:$__timeFilter— автоматическая подстановка временного диапазона.WHERE region = '$region'— фильтрация по выбранной переменной.
Объединение данных из нескольких источников
Корреляция метрик из разных систем:Сравнение данных из Prometheus и PostgreSQL в одном графике.
Обогащение метрик бизнес-контекстом из внешних баз данных.
Использование переменных и шаблонов
Создание универсальных дашбордов:Переменная
$host— выбор хоста из списка.Переменная
$interval— выбор временного окна для агрегации.
Пороги и цветовая индикация
Настройка визуальных индикаторов:Красный цвет при превышении 90% загрузки CPU.
Желтый при 75%.