Какие инструменты для сбора и управления метриками вы знаете?

Ответ

Системы управления метриками используются для сбора, хранения, запроса и визуализации данных о работе приложений и инфраструктуры.

Стек мониторинга (Open Source):

  1. Prometheus — система сбора и хранения метрик типа "временные ряды". Ключевые особенности: pull-модель, многомерная модель данных, мощный язык запросов PromQL.
  2. Grafana — платформа для визуализации и построения дашбордов. Подключается к Prometheus, InfluxDB, Elasticsearch и другим источникам данных.
  3. Telegraf — агент для сбора метрик (с систем, БД, приложений) и отправки их в хранилища (InfluxDB, Prometheus).
  4. InfluxDB — специализированная база данных для временных рядов, часто используется в паре с Telegraf и Grafana.

Коммерческие/облачные решения:

  • Datadog, New Relic, AWS CloudWatch — предоставляют комплексный мониторинг (метрики, логи, трейсы) как сервис (SaaS).

Пример экспорта метрики в Prometheus (Python):

from prometheus_client import start_http_server, Counter

# Создаём счётчик
REQUEST_COUNT = Counter('http_requests_total', 'Total number of HTTP requests')

def handle_request():
    # Инкрементируем счётчик при каждом запросе
    REQUEST_COUNT.inc()
    # ... обработка запроса

# Запускаем HTTP-сервер для предоставления метрик Prometheus на порту 8000
start_http_server(8000)

Ответ 18+ 🔞

Ну вот, сидишь ты такой, пишешь свой сервис, а он, сука, как сдохнет — ты нихуя не понимаешь, что случилось. Вот для этого и нужны системы мониторинга, чтобы не гадать на кофейной гуще, а видеть, что там внутри твоё детище творит. Собирают они все эти циферки — нагрузку на процессор, память, количество запросов, ошибок — короче, всю подноготную. Потом это всё можно хранить, запрашивать и размазывать по красивым графикам, чтобы даже менеджер, блядь, понял.

Стек мониторинга (Бесплатный, от народа):

  1. Prometheus — это, блядь, такой жадный сборщик. Сам лезет ко всем сервисам и вытягивает из них метрики (pull-модель, называется). У него свой язык запросов, PromQL, на котором можно такие запросы строить, что сам от себя офигеешь.
  2. Grafana — это уже для красоты. Берёт эти сухие цифры из Prometheus и делает из них такие дашборды, с графиками и цветными полосочками, что глаз не оторвать. Подключается куда угодно, жадная мартышлюшка.
  3. Telegraf — как шпион-засланец. Ставишь его на сервер, и он начинает стягивать метрики отовсюду: с самой системы, из баз данных, из приложений — и шлёт их куда скажешь.
  4. InfluxDB — ещё одна база, но заточена специально под временные ряды (это когда у каждой цифры есть timestamp). Часто в связке с Telegraf'ом и Grafana'ой работает.

Платные/облачные штуки (чтобы не париться):

  • Datadog, New Relic, AWS CloudWatch — это когда тебе, блядь, лень самому всё это разворачивать и настраивать. Платишь бабки, а они дают тебе готовый сервис, где уже всё собрано в кучу: и метрики, и логи, и трассировка.

Вот, смотри, как свою метрику в Prometheus выставить (на Python):

from prometheus_client import start_http_server, Counter

# Создаём счётчик, который будет считать запросы
REQUEST_COUNT = Counter('http_requests_total', 'Total number of HTTP requests')

def handle_request():
    # Как только запрос пришёл — чик, счётчик увеличили на один
    REQUEST_COUNT.inc()
    # ... а тут уже сама обработка запроса идёт

# Запускаем маленький HTTP-сервачок на 8000 порту, чтобы Prometheus пришёл и стянул эти метрики
start_http_server(8000)

Вот и всё, теперь твой сервис не просто молча работает (или не работает), а отчитывается, как последний суслик. И если что-то пойдёт не так, ты это увидишь раньше, чем пользователи начнут тебе в личку материться.