Зачем собирать метрики в приложении?

«Зачем собирать метрики в приложении?» — вопрос из категории Логирование и мониторинг, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Метрики — это количественные данные о работе приложения, необходимые для объективной оценки его состояния, производительности и пользовательского опыта (UX). Они переводят субъективные ощущения («приложение тормозит») в объективные цифры.

Ключевые цели сбора метрик:

  1. Мониторинг производительности: Выявление узких мест (bottlenecks).
    • Пример: Время ответа API (latency), потребление CPU/памяти.
  2. Обеспечение надежности: Контроль доступности и ошибок.
    • Пример: Rate ошибок (error rate), время наработки на отказ.
  3. Анализ бизнес-логики: Понимание поведения пользователей.
    • Пример: Конверсия, активность пользователей (DAU/MAU).
  4. Планирование ресурсов: Прогнозирование нагрузки на инфраструктуру.
    • Пример: Количество запросов в секунду (RPS), трафик.

Пример кода для сбора метрики времени загрузки страницы:

import time

def measure_page_load():
    start_time = time.perf_counter()
    # ... код загрузки страницы ...
    end_time = time.perf_counter()
    load_time = end_time - start_time
    # Отправка метрики в систему мониторинга (например, Prometheus)
    # metrics.gauge('page_load_seconds', load_time)
    print(f"Метрика: page_load_seconds = {load_time:.3f}s")
    return load_time

Без метрик работа над приложением ведется «вслепую», что приводит к незамеченным деградациям производительности и неудовлетворенности пользователей.