Обработка значений метрик#

Контекст#

В процессе мониторинга ИТ-инфраструктуры и бизнес-процессов системы генерируют огромный объем сырых метрик: загрузка CPU, объем памяти, количество запросов, время отклика, число ошибок и т.д. Эти данные поступают из различных источников — Prometheus, InfluxDB, PostgreSQL, кастомные экспортеры — и зачастую требуют предварительной обработки перед тем, как станут пригодны для анализа и визуализации.

Однако сырые метрики не всегда отражают реальную картину. Например:

  • Абсолютное значение загрузки CPU не показывает тренд.

  • Количество ошибок в логах требует нормализации по общему числу запросов.

  • Данные с разных хостов нужно агрегировать для получения сводной картины.

Без обработки такие метрики затрудняют принятие решений, особенно при необходимости расчета KPI, SLA или выявления аномалий.

Типичные ситуации:

  • Команда DevOps хочет видеть не просто график запросов, а процент успешных ответов.

  • Аналитик пытается определить среднее время отклика сервиса за последний час.

  • Администратору необходимо выявить пики нагрузки, коррелирующие с определенными событиями.

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

Проблема#

Сырые метрики недостаточно информативны для оперативного анализа и принятия решений. Их использование напрямую приводит к:

  • Затрудненному выявлению трендов и аномалий.

  • Ошибкам интерпретации данных.

  • Необходимости ручного расчета ключевых показателей.

  • Отсутствию единой метрической модели для разных команд.

Решение#

Основной модуль визуализации (GRAF) предоставляет мощные встроенные инструменты для обработки и преобразования метрик, позволяя получать из сырых данных информативные и пригодные для анализа показатели.

Ключевые возможности обработки#

  1. Математические выражения
    Поддержка языков запросов (PromQL, SQL, Flux) и встроенных выражений для расчета:

    • Процентных соотношений: (errors / total_requests) * 100

    • Средних значений: avg(cpu_usage)

    • Производных метрик: rate(http_requests_total[5m])

  2. Агрегация данных
    Группировка по меткам, хостам, регионам:

    • sum by (service) (http_requests)

    • max by (instance) (memory_usage)

  3. Фильтрация и выборка
    Использование переменных и условий для динамической фильтрации:

    • $__timeFilter — автоматическая подстановка временного диапазона.

    • WHERE region = '$region' — фильтрация по выбранной переменной.

  4. Объединение данных из нескольких источников
    Корреляция метрик из разных систем:

    • Сравнение данных из Prometheus и PostgreSQL в одном графике.

    • Обогащение метрик бизнес-контекстом из внешних баз данных.

  5. Использование переменных и шаблонов
    Создание универсальных дашбордов:

    • Переменная $host — выбор хоста из списка.

    • Переменная $interval — выбор временного окна для агрегации.

  6. Пороги и цветовая индикация
    Настройка визуальных индикаторов:

    • Красный цвет при превышении 90% загрузки CPU.

    • Желтый при 75%.