Настройка экспортеров и создание дашбордов

Мы уже подготовили фундамент: установили Prometheus и Grafana. Сейчас наш «склад данных» пуст. Чтобы система приносила пользу, нужно научить её собирать показатели с серверов и превращать цифры в наглядные графики.

Экспортеры: как Prometheus получает данные

Prometheus работает по Pull-модели: он сам опрашивает сервисы и забирает данные. Однако операционные системы или базы данных не умеют отдавать метрики по HTTP в нужном формате. Для этого используют экспортеры — небольшие агенты, которые переводят внутренние показатели системы на язык Prometheus.

Основной инструмент DevOps-инженера — Node Exporter. Он собирает данные о состоянии Linux: загрузку процессора, использование памяти, свободное место на дисках и активность сети.

Как показано в Схеме 1, данные проходят путь от системных файлов ядра до интерфейса Grafana.

Настройка сбора данных

Node Exporter обычно работает на порту 9100 и отдает текстовый список. Каждая строка в нем — это метрика (числовой показатель в конкретный момент времени). Чтобы Prometheus начал их сохранять, нужно отредактировать файл prometheus.yml.

Важный параметр — scrape interval (интервал опроса). Он определяет, как часто Prometheus забирает данные. Стандарт для нагруженных систем — 15 секунд. Этого достаточно для точности без лишней нагрузки на сеть.

Пример настройки в prometheus.yml для двух серверов:

scrape_configs:
  - job_name: 'node_nodes'
    scrape_interval: 15s
    static_configs:
      - targets: ['192.168.1.10:9100', '192.168.1.11:9100']

Язык запросов PromQL

Чтобы извлечь данные и построить график, используют язык PromQL. Он позволяет проводить вычисления «на лету». Например, чтобы узнать процент занятой оперативной памяти, нужно сопоставить общий объем и доступный остаток.

Запрос в Prometheus для вычисления процента занятой памяти:

(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100

Визуализация в Grafana

Grafana подключается к Prometheus как к источнику данных (Data Source). Главный элемент здесь — панель (panel). Каждая панель визуализирует результат PromQL-запроса.

Типы визуализации:

  • Graph (Time series) — классический график в Grafana, показывает изменения во времени (например, нагрузку на CPU).
  • Gauge — шкала для отображения текущего состояния (например, температура процессора).
  • Stat — крупное число для ключевых показателей (например, время работы сервера).

Не создавайте «стену из графиков» с десятками мелких панелей на одном экране. В случае аварии вы не сможете быстро найти причину сбоя.

Алертинг: автоматические уведомления

Мониторинг бесполезен, если вы не узнаете о проблеме вовремя. Для этого нужен alerting (система оповещений). Вы задаете правило: «если свободное место на диске меньше 10% дольше 5 минут — отправить уведомление».

Обычно настраивают интеграцию с Telegram или корпоративным мессенджером. Это позволяет реагировать на инциденты, не глядя в монитор постоянно.

  1. В интерфейсе Grafana создайте новую панель.
  2. Введите запрос node_load1, чтобы увидеть среднюю нагрузку на систему за 1 минуту.
  3. Выберите тип Graph и назовите панель "System Load".
  4. Нагрузите процессор в терминале Linux командой yes > /dev/null & и посмотрите, как изменится график через несколько секунд. Не забудьте потом остановить процесс (Ctrl+C).

Мы научились отслеживать состояние серверов в реальном времени. Метрики показывают, когда и где произошел сбой. Чтобы понять, почему он случился, нужны логи.

В следующем уроке разберем централизованное логирование и научимся собирать сообщения от приложений и системы в одном месте.

Понравился урок?

Сохраните прогресс и получите персональный курс по любой теме — без форм и паролей

Продолжить в Telegram