Что такое monitoring exporters и как расширить метрики Prometheus
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
Чтобы расширить набор метрик:
- выбирается нужный exporter;
- он устанавливается рядом с сервисом;
- 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, настроить дашборды и алерты, мы подробно рассказывали в отдельной статье.
Настроить мониторинг за 30 секунд
Надежные оповещения о даунтаймах. Без ложных срабатываний