Когда приложение уже работает в продакшене, хочется быть уверенным: всё идёт по плану. Сервер не задыхается, база не тормозит, пользователи довольны. Чтобы всё это контролировать, нужны не гадания на логах, а нормальный мониторинг и алерты. Здесь в игру вступают Prometheus и Grafana — мощный и при этом удобный в работе тандем.
Зачем вообще нужен мониторинг
Системы становятся сложнее: микросервисы, очереди, контейнеры, облака. Всё живёт своей жизнью, и без наблюдения за этой жизнью легко что-то упустить. Мониторинг помогает видеть состояние сервиса в реальном времени и понимать, что пошло не так — ещё до того, как проблемы почувствуют пользователи.
Prometheus — кто, что, сколько и когда
Prometheus — это система сбора метрик с приложений и серверов. Он регулярно опрашивает сервисы (через /metrics) и сохраняет данные во временные ряды. Например, можно отслеживать количество запросов, задержки, загрузку CPU, количество ошибок — всё, что можно измерить.
Что особенно удобно — Prometheus использует язык запросов PromQL, с помощью которого можно гибко настраивать выборку данных. Хотите понять, сколько 5xx-ошибок приходит в минуту за последние полчаса? Несколько строк — и готово.
Сбор метрик происходит через экспортеры — готовые модули, которые можно подключить к разным компонентам: от операционной системы до баз данных. Например:
• node_exporter — для системных метрик;
• blackbox_exporter — для проверки доступности сервисов;
• postgres_exporter, nginx_exporter и другие.
Что особенно удобно — Prometheus использует язык запросов PromQL, с помощью которого можно гибко настраивать выборку данных. Хотите понять, сколько 5xx-ошибок приходит в минуту за последние полчаса? Несколько строк — и готово.
Сбор метрик происходит через экспортеры — готовые модули, которые можно подключить к разным компонентам: от операционной системы до баз данных. Например:
• node_exporter — для системных метрик;
• blackbox_exporter — для проверки доступности сервисов;
• postgres_exporter, nginx_exporter и другие.
Grafana — наглядно и понятно
Данные — это хорошо, но смотреть на голые цифры не очень удобно. Здесь помогает Grafana. Это инструмент визуализации, в котором можно собирать дашборды: красивые, удобные и информативные. Один взгляд — и уже понятно, всё ли в порядке.
Преимущества Grafana:
• Подключается к множеству источников, включая Prometheus;
• Позволяет использовать переменные и фильтры для удобной навигации по графикам;
• Умеет строить алерты прямо из графиков;
• Легко делится с коллегами — можно настроить роли и доступ.
Преимущества Grafana:
• Подключается к множеству источников, включая Prometheus;
• Позволяет использовать переменные и фильтры для удобной навигации по графикам;
• Умеет строить алерты прямо из графиков;
• Легко делится с коллегами — можно настроить роли и доступ.
Алерты — чтобы не пропустить важное
Хороший мониторинг — это не только графики, но и своевременные оповещения. Prometheus позволяет задавать правила, при которых срабатывает алерт. Например:
rate(http_requests_total{status="500"}[5m]) > 0.1
Если условие выполняется — сигнал уходит в Alertmanager, который уже решает, куда и как отправить уведомление: в Telegram, Slack, на email и т.д.
Алерты можно группировать, ставить таймауты, подавлять повторяющиеся — всё, чтобы не было лишнего шума и неважных уведомлений.
Также алерты можно настраивать и через саму Grafana — удобно, если вы в основном работаете с дашбордами.
rate(http_requests_total{status="500"}[5m]) > 0.1
Если условие выполняется — сигнал уходит в Alertmanager, который уже решает, куда и как отправить уведомление: в Telegram, Slack, на email и т.д.
Алерты можно группировать, ставить таймауты, подавлять повторяющиеся — всё, чтобы не было лишнего шума и неважных уведомлений.
Также алерты можно настраивать и через саму Grafana — удобно, если вы в основном работаете с дашбордами.
Что в итоге
Grafana и Prometheus — это надёжный способ держать сервис под контролем. Мониторинг помогает:
• Видеть, как работает система;
• Быстро находить и устранять сбои;
• Понимать, где узкие места;
• И, что важно, реагировать до того, как проблему заметит клиент.
И всё это можно настроить бесплатно — оба инструмента с открытым исходным кодом, с большим сообществом и кучей плагинов.
• Видеть, как работает система;
• Быстро находить и устранять сбои;
• Понимать, где узкие места;
• И, что важно, реагировать до того, как проблему заметит клиент.
И всё это можно настроить бесплатно — оба инструмента с открытым исходным кодом, с большим сообществом и кучей плагинов.
Если хочется больше
Со временем можно дополнить стек:
• Loki — для сбора и просмотра логов;
• Tempo — для трассировки запросов (полезно при микросервисах);
• Thanos или Cortex — для масштабирования Prometheus;
• OpenTelemetry — для объединения метрик, логов и трейсов в единую систему.
• Loki — для сбора и просмотра логов;
• Tempo — для трассировки запросов (полезно при микросервисах);
• Thanos или Cortex — для масштабирования Prometheus;
• OpenTelemetry — для объединения метрик, логов и трейсов в единую систему.
Prometheus и Grafana — это уже не «хорошо бы иметь», а стандартная часть инфраструктуры. С их помощью можно не просто мониторить — а реально понимать, что происходит с приложением. Без догадок. Без паники. Без «а почему никто не заметил, что всё упало».