В мире IT-инфраструктуры слепота — это роскошь, которую никто не может себе позволить. Мониторинг серверов перестал быть опцией и стал необходимостью. Prometheus и Grafana — это мощный дуэт, который превращает сырые метрики в понятные истории о здоровье ваших систем. Давайте разберемся, как настроить этот тандем для полного контроля над вашей инфраструктурой.
Что такое Prometheus и Grafana?
Prometheus — это система мониторинга и оповещения с открытым исходным кодом, созданная для надежности и простоты развертывания. Она собирает и хранит метрики в виде временных рядов. Grafana — это платформа для аналитики и визуализации, которая превращает данные из Prometheus (и других источников) в наглядные дашборды.
Ключевое отличие: Prometheus отвечает за сбор и хранение данных, а Grafana — за их красивое и информативное отображение. Это разделение обязанностей делает стек гибким и мощным.
Архитектура и основные компоненты
Понимание архитектуры — ключ к грамотной настройке.
Сервер Prometheus
Это ядро системы. Он:
- Собирает метрики путем опроса (pull-модель) заданных конечных точек (targets) по HTTP.
- Хранит данные локально на диске в эффективном формате.
- Выполняет запросы с помощью мощного языка PromQL.
- Генерирует оповещения на основе заданных правил (Alertmanager работает отдельно).
Экспортеры (Exporters)
Это небольшие агенты, которые переводят метрики из различных систем (ОС, базы данных, веб-серверы) в формат, понятный Prometheus. Самые популярные:
- Node Exporter — для мониторинга аппаратного обеспечения и ОС Linux.
- cAdvisor — для контейнеров Docker.
- Blackbox Exporter — для проверки доступности HTTP, TCP, ICMP.
Grafana
Подключается к Prometheus как к источнику данных (Data Source) и позволяет:
- Создавать интерактивные дашборды с графиками, таблицами, тепловыми картами.
- Настраивать панели с использованием PromQL.
- Устанавливать пороги и уведомления прямо в интерфейсе.
Пошаговая настройка мониторинга
Шаг 1: Установка и базовая конфигурация Prometheus
Скачайте последнюю версию с официального сайта. Основной файл конфигурации — prometheus.yml. В нем вы определяете:
- global: частоту сбора метрик (scrape_interval).
- scrape_configs: какие цели (targets) опрашивать (например, localhost:9090 — сам Prometheus, localhost:9100 — Node Exporter).
- rule_files: путь к файлам правил для алертинга.
Всегда начните с мониторинга самого Prometheus (метрики по адресу /metrics). Это даст понимание нагрузки на систему мониторинга.
Шаг 2: Установка экспортеров
Установите Node Exporter на каждый сервер, который нужно мониторить. После запуска он будет отдавать метрики по порту 9100. Добавьте этот endpoint в prometheus.yml.
Шаг 3: Установка и подключение Grafana
Установите Grafana, зайдите в веб-интерфейс (по умолчанию порт 3000). Первое действие:
- Перейдите в Configuration → Data Sources → Add data source.
- Выберите Prometheus.
- В поле URL укажите адрес вашего Prometheus сервера (например,
http://localhost:9090). - Сохраните и протестируйте подключение.
Шаг 4: Создание первого дашборда
В Grafana создайте новый дашборд и добавьте панель. В запросе используйте PromQL. Например:
node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes— используемая оперативная память.rate(node_cpu_seconds_total{mode=\"system\"}[5m])— загрузка CPU системными процессами.
Импортируйте готовые дашборды из официальной библиотеки Grafana (например, дашборд «Node Exporter Full» для быстрого старта).
Продвинутые практики: алертинг и надежность
Prometheus Alertmanager обрабатывает алерты, отправляя уведомления в Slack, Email, Telegram и др.
- Определите правила алертинга в файлах
.rules.yml(например, уведомление, если загрузка CPU > 80% более 5 минут). - Настройте Alertmanager на группировку, подавление дублей и маршрутизацию уведомлений.
- Для высокой доступности запустите несколько экземпляров Prometheus и Grafana.
- Настройте долгосрочное хранение метрик (например, в Thanos или Cortex) для анализа трендов.
FAQ: Часто задаваемые вопросы
Prometheus или Zabbix?
Prometheus лучше подходит для динамических облачных сред и микросервисов благодаря pull-модели и мощному языку запросов PromQL. Zabbix — классическое решение с богатыми возможностями для мониторинга сетевого оборудования.
Как мониторить Windows-сервера?
Используйте экспортер WMI Exporter, который предоставляет метрики Windows в формате Prometheus. Принцип настройки аналогичен Node Exporter.
Можно ли использовать Grafana без Prometheus?
Да, Grafana поддерживает десятки источников данных: базы данных (PostgreSQL, MySQL), облачные сервисы (AWS CloudWatch), другие системы мониторинга. Prometheus — лишь один из самых популярных вариантов.
Как защитить доступ к интерфейсам?
Обязательно настройте обратный прокси (например, Nginx) с аутентификацией и HTTPS. Используйте встроенные настройки аутентификации Grafana и рассмотрите возможность настройки базовой аутентификации в Prometheus.
Какие метрики мониторить в первую очередь?
Золотая четверка: 1) Загрузка CPU, 2) Использование памяти, 3) Дисковое I/O и свободное место, 4) Доступность сети и сервисов (uptime).