Мониторинг серверов: Полное руководство по настройке Prometheus и Grafana

Мониторинг серверов: Полное руководство по настройке Prometheus и Grafana

В мире IT-инфраструктуры слепота — это роскошь, которую никто не может себе позволить. Мониторинг серверов перестал быть опцией и стал необходимостью. Prometheus и Grafana — это мощный дуэт, который превращает сырые метрики в понятные истории о здоровье ваших систем. Давайте разберемся, как настроить этот тандем для полного контроля над вашей инфраструктурой.

Что такое Prometheus и Grafana?

Prometheus — это система мониторинга и оповещения с открытым исходным кодом, созданная для надежности и простоты развертывания. Она собирает и хранит метрики в виде временных рядов. Grafana — это платформа для аналитики и визуализации, которая превращает данные из Prometheus (и других источников) в наглядные дашборды.

Ключевое отличие: Prometheus отвечает за сбор и хранение данных, а Grafana — за их красивое и информативное отображение. Это разделение обязанностей делает стек гибким и мощным.

Архитектура и основные компоненты

Понимание архитектуры — ключ к грамотной настройке.

Сервер Prometheus

Это ядро системы. Он:

  • Собирает метрики путем опроса (pull-модель) заданных конечных точек (targets) по HTTP.
  • Хранит данные локально на диске в эффективном формате.
  • Выполняет запросы с помощью мощного языка PromQL.
  • Генерирует оповещения на основе заданных правил (Alertmanager работает отдельно).

Экспортеры (Exporters)

Это небольшие агенты, которые переводят метрики из различных систем (ОС, базы данных, веб-серверы) в формат, понятный Prometheus. Самые популярные:

  1. Node Exporter — для мониторинга аппаратного обеспечения и ОС Linux.
  2. cAdvisor — для контейнеров Docker.
  3. 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). Первое действие:

  1. Перейдите в Configuration → Data Sources → Add data source.
  2. Выберите Prometheus.
  3. В поле URL укажите адрес вашего Prometheus сервера (например, http://localhost:9090).
  4. Сохраните и протестируйте подключение.

Шаг 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 и др.

  1. Определите правила алертинга в файлах .rules.yml (например, уведомление, если загрузка CPU > 80% более 5 минут).
  2. Настройте Alertmanager на группировку, подавление дублей и маршрутизацию уведомлений.
  3. Для высокой доступности запустите несколько экземпляров Prometheus и Grafana.
  4. Настройте долгосрочное хранение метрик (например, в 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).