В мире DevOps и системного администрирования слепота — это роскошь, которую никто не может себе позволить. Мониторинг серверов превратился из удобной опции в критическую необходимость, а связка Prometheus и Grafana стала золотым стандартом для сбора, хранения и визуализации метрик. Эта статья проведёт вас от базовых концепций до рабочей системы мониторинга, которая предупредит о проблемах раньше, чем они ударят по пользователям.
Что такое Prometheus и почему он стал стандартом?
Prometheus — это система мониторинга с открытым исходным кодом, изначально разработанная в SoundCloud. В отличие от традиционных систем, основанных на проверках, Prometheus использует модель pull — он сам «вытягивает» метрики с ваших серверов и приложений по HTTP. Это кажется незначительным отличием, но оно меняет всё: вы можете легко добавлять новые цели мониторинга без изменения конфигурации на самих серверах.
Prometheus хранит все данные в виде временных рядов — последовательностей значений с меткой времени. Это позволяет не только видеть текущее состояние, но и анализировать тренды и выявлять аномалии.
Ключевые компоненты экосистемы Prometheus
- Prometheus Server — ядро системы, отвечает за сбор и хранение данных
- Exporters — агенты, которые преобразуют метрики из формата приложения в формат Prometheus
- Pushgateway — шлюз для кратковременных задач, которые не могут ждать pull-запроса
- Alertmanager — обработчик алертов, управляет уведомлениями
Пошаговая настройка Prometheus
1. Установка и базовая конфигурация
Скачайте последнюю версию Prometheus с официального сайта. После распаковки архива основное внимание уделите файлу prometheus.yml — это сердце вашей конфигурации.
- Определите глобальные настройки (интервал сбора, хранение)
- Настройте scrape_configs — цели, с которых будут собираться метрики
- Добавьте правила для алертов (alerting.rules)
2. Настройка экспортеров
Для мониторинга Linux-серверов установите Node Exporter. Он предоставит сотни метрик: загрузку CPU, использование памяти, дисковое пространство, сетевой трафик. Добавьте новый job в prometheus.yml:
Не ограничивайтесь стандартными экспортерами. Для мониторинга баз данных, веб-серверов, очередей сообщений существуют десятки специализированных экспортеров.
Grafana: Превращаем данные в понимаемые дашборды
Prometheus собирает данные, но Grafana делает их видимыми. После установки Grafana первым делом добавьте Prometheus как источник данных. Интерфейс интуитивно понятен: укажите URL вашего Prometheus-сервера и сохраните настройки.
Создание эффективных дашбордов
- Начинайте с общего обзора — сводная панель с ключевыми метриками всех серверов
- Группируйте связанные метрики — все показатели сети на одном графике, все дисковые операции на другом
- Используйте цвета осмысленно — красный для критических значений, зелёный для нормальных
- Добавьте аннотации — отмечайте на графиках моменты деплоя, инцидентов
Настройка алертинга: от сбора данных к действиям
Мониторинг без алертов — просто красивые графики. Prometheus позволяет определять правила алертинга на языке PromQL. Например, алерт на высокую загрузку CPU:
Настройте разные каналы уведомлений в Alertmanager: email для дневных алертов, Slack или Telegram для срочных ночных инцидентов.
Лучшие практики алертинга
- Алерты должны требовать действий — если на алерт нельзя реагировать, его не должно быть
- Используйте разные уровни серьёзности (warning, critical)
- Настройте подавление алертов во время плановых работ
- Регулярно пересматривайте и настраивайте пороги срабатывания
Продвинутые сценарии и оптимизация
Когда ваша система мониторинга растёт, появляются новые вызовы. Для горизонтального масштабирования рассмотрите:
- Federation — иерархическая структура нескольких Prometheus-серверов
- Thanos или Cortex — решения для долгосрочного хранения и глобальной агрегации
- Recording Rules — предварительные вычисления часто используемых запросов
FAQ: Ответы на частые вопросы
Какой минимальный набор метрик нужно мониторить?
Обязательный минимум: загрузка CPU, использование памяти, дисковое пространство, сетевой трафик, доступность сервисов. Добавляйте специфичные метрики в зависимости от вашего стека технологий.
Prometheus или Zabbix: что выбрать?
Prometheus лучше подходит для динамических облачных сред и микросервисных архитектур. Zabbix традиционно сильнее в мониторинге сетевого оборудования и имеет более развитые возможности обнаружения.
Как организовать мониторинг в Kubernetes?
Используйте Prometheus Operator — он автоматизирует развёртывание и управление Prometheus в Kubernetes. Для сбора метрик с подов установите sidecar-контейнеры с экспортерами.
Сколько данных может хранить Prometheus?
По умолчанию Prometheus хранит данные 15 дней. Это настраивается параметром --storage.tsdb.retention.time. Для долгосрочного хранения используйте удалённое хранилище.
Как защитить доступ к Grafana?
Настройте аутентификацию через OAuth (Google, GitHub), LDAP или Active Directory. Ограничьте доступ по IP, используйте reverse proxy с HTTPS.