Prometheus Exporter — это компонент, который собирает метрики из операционной системы и базы данных и предоставляет их в формате, который понимает Prometheus. Экспортер помогает отслеживать состояние кластеров баз данных, нагрузку на сервер и другую важную информацию в реальном времени.
Данные для подключения экспортеров доступны в панели управления кластером, в разделе «Дашборд».

Пример запроса к публичному экспортеру:
curl -u admin:'пароль' -s https://dbs-exporter.timeweb.cloud/id_экспортера/service/metrics
Особенности реализации
-
Сбор метрик доступен только в BGP-сетях.
-
Экспортеры доступны на двух эндпоинтах:
-
node_exporter— метрики сервера (например, нагрузка, использование CPU и памяти); -
db_exporter— метрики базы данных.
-
Если база развернута с репликацией (MySQL или PostgreSQL), метрики нужно собирать с каждой реплики отдельно. Данные для подключения к каждой реплике можно найти на странице «Дашборд».

Типы экспортеров
Экспортеры бывают двух типов:
- Публичные — работают по HTTPS и доступны по доменному имени.
- Приватные — доступны только внутри приватной сети BGP.
|
|
Публичные экспортеры |
Приватные экспортеры |
|
Доступ к метрикам |
По домену |
По IP-адресу внутри приватной сети |
|
Требуется публичный IP |
Нет |
Нет |
|
Авторизация |
Basic Auth |
Не требуется |
Используемые экспортеры
|
Кластер DBaaS |
Экспортер |
|
MySQL |
|
|
PostgreSQL |
|
|
MongoDB |
|
|
RabbitMQ |
|
|
Redis |
|
|
Kafka |
|
|
OpenSearch |
|
|
ClickHouse |
Чтобы узнать версию конкретного экспортера, используйте команду вида:
curl -u admin:'пароль' -s https://db_exporter/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.
- job_name: 'postgres-public'
scheme: https
metrics_path: /id_экспортера/service/metrics
static_configs:
- targets: ['dbs-exporter.timeweb.cloud']
basic_auth:
username: 'admin'
password: 'пароль'
Чтобы получать метрики сервера, вместо /id_экспортера/service/metrics укажите /id_экспортера/node-exporter/metrics.
Полный пример конфига:
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']
- job_name: 'postgres-public'
scheme: https
metrics_path: /id_экспортера/service/metrics
static_configs:
- targets: ['dbs-exporter.timeweb.cloud']
basic_auth:
username: 'admin'
password: 'пароль'
Запуск Prometheus
Запустите Prometheus с указанием конфига:
./prometheus --config.file=prometheus.yml
По умолчанию веб-интерфейс Prometheus будет доступен по адресу:
http://IP_облачного_сервера:9090
Проверка статуса экспортеров
Перейдите во вкладку «Status» → «Targets» в веб-интерфейсе Prometheus и убедитесь, что все job_name отображаются и находятся в статусе «UP».
Для базовой проверки можно выполнить запрос на вкладке «Graph»:
up
В результате отобразятся все подключенные экспортеры. Если они работают корректно, вы увидите список метрик с нужными job_name.
