Grafana + Prometheus: как я настроил мониторинг всего и вся
Почему стандартных логов недостаточно
Когда сервер один, проблемы видны сразу: перестал открываться сайт — зашёл по SSH, глянул логи, поправил. Когда сервисов становится 10+, нужен централизованный мониторинг.
Я перепробовал несколько решений: Zabbix — мощный, но конфигурация через веб-морду — ад. Netdata — красиво, но слишком много метрик, глаза разбегаются. InfluxDB + Telegraf — норм, но Telegraf надо настраивать.
Остановился на Prometheus + Grafana. Prometheus собирает метрики, Grafana их рисует.
Что я мониторю
Для начала — базовые метрики сервера через Node Exporter: CPU, RAM, диск, сеть. Prometheus забирает данные с Node Exporter раз в 15 секунд. В Grafana подключил стандартный дашборд Node Exporter Full — сразу видно состояние сервера.
Потом добавил cAdvisor для мониторинга Docker контейнеров: сколько каждый контейнер жрёт памяти, CPU, сколько сетевого трафика генерирует. Очень помогло, когда один контейнер начал течь по памяти.
Blackbox Exporter — проверка доступности сайтов извне. Каждую минуту Prometheus проверяет, отвечает ли mysurik.ru по HTTP. Если не отвечает — Grafana шлёт алерт.
MySQL Exporter — метрики базы данных: количество запросов, медленные запросы, размер таблиц. Заметил, что в определённое время БД тормозит — оказалось, cron запускал бекап таблиц в это же время.
Настройка алертов
Самое полезное — алерты в Telegram. Если CPU зашкаливает за 90% — сообщение в чат. Если диск заполнен на 85% — напоминание. Если сайт не отвечает — срочное уведомление.
Настроил алерты через Alertmanager, который отправляет сообщения через Telegram Bot API. Теперь я узнаю о проблемах быстрее, чем пользователи.
Грабли
Retention данных. По умолчанию Prometheus хранит данные 15 дней. Для моего сценария мало — хочу видеть графики за месяц. Увеличил retention до 30 дней, но пришлось выделить под Prometheus 10 GB диска вместо 2.
Prometheus не умеет шифроваться — все данные идут в открытую. Пришлось повесить всё за nginx с базовой аутентификацией.
Совет
Не пытайтесь мониторить всё сразу. Начните с CPU, RAM, диска и доступности сайта. Добавляйте метрики по мере необходимости. И обязательно настройте алерты в Telegram — иначе смысла в мониторинге нет.