Prometheus Exporter — это компонент, который собирает метрики из операционной системы и базы данных и предоставляет их в формате, который понимает Prometheus. Экспортер помогает отслеживать состояние кластеров баз данных, нагрузку на сервер и другую важную информацию в реальном времени.
Особенности реализации
-
Эндпойнты экспортеров доступны только в приватной сети. Перед использованием убедитесь, что сервер с Prometheus находится в той же приватной сети, что и кластер DBaaS.
-
Сбор метрик доступен только в BGP-сетях.
-
Экспортеры доступны на двух эндпойнтах:
-
:9100— метрики сервера (например, нагрузка, использование CPU и памяти); -
:9308— метрики базы данных.
-
Если база развернута с репликацией (MySQL или PostgreSQL), метрики нужно собирать с каждой реплики отдельно. Приватные IP всех реплик можно посмотреть во вкладке «Дашборд» в панели управления DBaaS.

Используемые экспортеры
|
Кластер DBaaS |
Экспортер |
|
MySQL |
|
|
PostgreSQL |
|
|
MongoDB |
|
|
RabbitMQ |
|
|
Redis |
|
|
Kafka |
|
|
OpenSearch |
|
|
ClickHouse |
Чтобы узнать версию конкретного экспортера используйте команду вида:
curl -s http://private_IP:9308/metrics | grep '_exporter_build_info'
После выполнения команды вы получите подобный вывод:
# HELP postgres_exporter_build_info A metric with a constant '1' value labeled by version, revision, branch, goversion from which postgres_exporter was built, and the goos and goarch for the build.
# TYPE postgres_exporter_build_info gauge
postgres_exporter_build_info{branch="HEAD",goarch="amd64",goos="linux",goversion="go1.23.3",revision="a324fe37bca5193a293118b940b3df7ab3a8505c",tags="unknown",version="0.16.0"} 1
Значение version="0.16.0" в метке указывает на версию экспортера.
Экспортер для OpenSearch собирается нами вручную, поэтому узнать его версию с помощью команды не получится.
Пример настройки Prometheus
Рассмотрим настройку Prometheus на облачном сервере для сбора метрик с PostgreSQL-кластера.
Убедитесь, что кластер базы данных и облачный сервер находятся в одной приватной сети.
Установка Prometheus
Перейдите на страницу релизов Prometheus и скачайте актуальную версию. Например:
wget https://github.com/prometheus/prometheus/releases/download/v3.7.2/prometheus-3.7.2.linux-amd64.tar.gz
Распакуйте архив:
tar -xzf prometheus-*.tar.gz
Перейдите в директорию:
cd prometheus-3.7.2.linux-amd64
Настройка конфигурации
Откройте файл prometheus.yml для редактирования:
nano prometheus.yml
Добавьте в раздел scrape_configs IP-адрес кластера базы данных с нужными портами:
- job_name: 'linux-metrics'
static_configs:
- targets: ['192.168.0.5:9100']
- job_name: 'postgres-metrics'
static_configs:
- targets: ['192.168.0.5:9308']
Где 192.168.0.5 — приватный IP кластера PostgreSQL.
Полный пример конфига:
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
# The label name is added as a label `label_name=<label_value>` to any timeseries scraped from this config.
labels:
app: "prometheus"
- job_name: 'linux-metrics'
static_configs:
- targets: ['192.168.0.5:9100']
- job_name: 'postgres-metrics'
static_configs:
- targets: ['192.168.0.5:9308']
Запуск Prometheus
Запустите Prometheus с указанием конфига:
./prometheus --config.file=prometheus.yml
По умолчанию веб-интерфейс Prometheus будет доступен по адресу:
http://IP_облачного_сервера:9090
Проверка статуса экспортеров
Перейдите во вкладку «Status» → «Targets» в веб-интерфейсе Prometheus и убедитесь, что все job_name отображаются и находятся в статусе «UP».
Для базовой проверки можно выполнить запрос на вкладке «Graph»:
up
В результате отобразятся все подключенные экспортеры. Если они работают корректно, вы увидите список метрик с нужными job_name.
