В мире DevOps и быстрой разработки время — критический ресурс. Часто возникает задача быстро развернуть систему мониторинга для нового или существующего приложения, чтобы получить представление о его здоровье и производительности. Многие ошибочно полагают, что такая настройка занимает недели. Этот кейс доказывает обратное: мы настроим полноценный стек мониторинга на основе Prometheus и Grafana всего за один рабочий день.
День начинается с четкого плана. Цель: получить дашборды, отображающие ключевые метрики веб-приложения (использование CPU, памяти, latency HTTP-запросов, количество ошибок) и настроить базовые алерты. Исходные условия: есть виртуальная машина (Ubuntu 20.04) или контейнерная среда, где развернуто наше условное Node.js приложение.
Первые два часа уходят на подготовку инфраструктуры. Устанавливаем Docker и Docker Compose — это значительно ускорит процесс. Создаем простой `docker-compose.yml` файл, который будет оркестрировать наши сервисы: Prometheus для сбора метрик, Grafana для их визуализации и сам Node.js экспортер (или любой другой, соответствующий технологическому стеку приложения, например, для Java — JMX Exporter, для баз данных — соответствующий экспортер).
Ключевой шаг — инструментирование приложения. Если оно уже использует клиентские библиотеки Prometheus (для Node.js — `prom-client`), то метрики уже доступны по эндпоинту `/metrics`. Если нет — мы быстро добавляем минимальный код для экспорта базовых метрик приложения: счетчики запросов, гистограммы для времени ответа. Это занимает не более часа.
Далее настраиваем конфигурацию Prometheus. В файле `prometheus.yml` определяем `scrape_configs`, указывая адреса наших целей: само приложение и экспортер для системных метрик (node_exporter). Перезапускаем стек через Docker Compose. Уже к обеду мы можем зайти на порт Prometheus (9090) и вручную выполнить простые запросы (например, `rate(http_requests_total[5m])`), чтобы убедиться, что данные поступают.
Послеобеденное время посвящаем Grafana. Заходим в интерфейс (порт 3000), добавляем Prometheus в качестве источника данных. Теперь начинается самая творческая часть — создание дашбордов. Мы не пишем панели с нуля, а используем огромное сообщество Grafana. Идем на официальный сайт Grafana Dashboards и ищем подходящий шаблон. Например, для Node.js приложения и системных метрик отлично подходит дашборд с ID 1860. Импортируем его одним кликом, указываем наш источник данных — и вуаля! Перед нами профессиональный дашборд с графиками использования CPU, памяти, диска, сети, метриками сборщика мусора и HTTP-трафика.
Последние часы дня посвящаем настройке алертов. В Grafana создаем простые, но жизненно важные правила оповещения: уведомление, если среднее время ответа приложения превышает 500 мс за 5 минут, или если частота ошибок 5xx становится больше 1% от общего числа запросов. Настраиваем канал уведомлений — например, отправку в Slack или Telegram через встроенные или внешние (webhook) механизмы.
К 18:00 мы имеем полностью рабочую систему: данные собираются, визуализируются на понятных дашбордах, а в случае аномалий команда получит уведомление. Конечно, это базовая настройка. Дальнейшие дни можно потратить на тонкую настройку метрик бизнес-логики, более сложные алерты и интеграцию с инцидент-менеджментом (например, PagerDuty). Но главная цель достигнута: за один день мы перешли от нуля к состоянию наблюдаемости, что является огромным шагом для стабильности любого IT-проекта.
Кейс: Настройка мониторинга приложения за 1 день с помощью Grafana и Prometheus
Практический кейс, демонстрирующий, как развернуть полноценный стек мониторинга на основе Prometheus и Grafana для веб-приложения всего за один рабочий день, от установки до дашбордов и алертов.
162
4
Комментарии (5)