Что такое monitoring exporters и как расширить метрики Prometheus

9 минут чтения
Средний рейтинг статьи — 4.8

Prometheus — один из самых популярных инструментов мониторинга в современной инфраструктуре. Его ключевая особенность — модель pull-сбора метрик и простой формат данных. Но сам по себе Prometheus не «знает», как получать метрики от операционных систем, баз данных или сторонних сервисов. Эту задачу решают monitoring exporters.

В этой статье разберёмся, что такое exporters, как они работают, какие бывают и как с их помощью расширять метрики Prometheus в реальных системах.

Что такое monitoring exporters

Exporter — это отдельный сервис или процесс, который:

  • собирает метрики из системы или приложения;
  • преобразует их в формат Prometheus;
  • отдаёт их по HTTP-эндпоинту /metrics.

Prometheus периодически опрашивает этот эндпоинт и сохраняет значения в своей time-series базе.

Упрощённая схема выглядит так:

[Система / сервис] → [Exporter] → [Prometheus]

Exporter не отправляет данные сам — он лишь предоставляет их по запросу. Это соответствует pull-модели Prometheus и упрощает масштабирование и отладку.

Зачем нужны exporters

Без exporters Prometheus мог бы собирать метрики только из приложений, которые напрямую реализуют /metrics. Но в реальной инфраструктуре есть:

  • операционные системы;
  • базы данных;
  • брокеры сообщений;
  • веб-серверы;
  • сетевое оборудование.

Exporters позволяют мониторить всё это без изменения исходного кода сервисов.

Типовые задачи exporters:

  • загрузка CPU, память, диск;
  • количество подключений и запросов;
  • ошибки, задержки, очереди;
  • внутренние метрики СУБД и middleware.

Популярные exporters

Node Exporter

Node Exporter — самый распространённый exporter. Он собирает метрики ОС:

  • CPU, load average;
  • память и swap;
  • файловые системы;
  • сеть и диски.

Используется практически на каждом сервере.

Database exporters

Для баз данных существуют отдельные exporters:

  • postgres_exporter — PostgreSQL;
  • mysqld_exporter — MySQL / MariaDB;
  • redis_exporter — Redis.

Они получают метрики напрямую из внутренних статистик СУБД.

Web и infrastructure exporters

  • nginx_exporter — активные соединения, запросы;
  • blackbox_exporter — HTTP, TCP, ICMP-проверки;
  • cadvisor — метрики контейнеров Docker.

Как Prometheus работает с exporters

Prometheus не знает, что именно стоит за exporter’ом. Для него это просто HTTP-эндпоинт:

scrape_configs:
  - job_name: "node"
    static_configs:
      - targets: ["server1:9100", "server2:9100"]

Каждый target — это exporter, который отдаёт метрики в текстовом формате.

Важно: один exporter ≠ один сервис. Один exporter может отдавать метрики сразу по нескольким подсистемам.

Расширение метрик с помощью exporters

Добавление нового exporter

Чтобы расширить набор метрик:

  1. выбирается нужный exporter;
  2. он устанавливается рядом с сервисом;
  3. Prometheus добавляет новый scrape_config.

Никаких изменений в самом Prometheus или приложении не требуется.

Кастомные exporters

Если готового exporter’а нет, можно написать свой:

  • на Go, Python, Node.js;
  • используя официальные Prometheus client libraries;
  • публикуя метрики в /metrics.

Это часто используется для:

  • внутренних бизнес-метрик;
  • legacy-систем;
  • нестандартных сервисов.

Exporters vs встроенные метрики

Важно различать:

  • application metrics — метрики, встроенные в приложение;
  • exporters — внешние адаптеры.

Лучшей практикой считается:

  • бизнес-метрики — внутри приложения;
  • системные и инфраструктурные — через exporters.

Так архитектура остаётся чистой и поддерживаемой.

Типичные ошибки

При работе с exporters часто допускают ошибки:

  • запуск exporters без ограничений доступа;
  • слишком частый scrape interval;
  • дублирование метрик из разных источников;
  • отсутствие labels для окружений.

Exporters должны быть лёгкими и безопасными, иначе они сами становятся точкой отказа.

Итоги

Monitoring exporters — это фундамент экосистемы Prometheus. Они позволяют расширять мониторинг практически на любую систему без изменения её кода.

Используя готовые exporters или создавая собственные, можно построить гибкую и масштабируемую систему метрик, которая покрывает как инфраструктуру, так и бизнес-логику.

Именно благодаря exporters Prometheus стал универсальным стандартом мониторинга в современных DevOps-процессах.

Exporters и Prometheus отвечают за сбор и хранение метрик, но для анализа и визуализации обычно используется Grafana. О том, как связать Prometheus с Grafana, настроить дашборды и алерты, мы подробно рассказывали в отдельной статье.

9 минут чтения
Средний рейтинг статьи — 4.8

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний