Интеграция с внешними источниками данных Prometheus и VictoriaMetrics используется для чтения метрик, записываемых туда утилитой pgpro-otel-collector.
В этом разделе описано, как настроить Prometheus. VictoriaMetrics использует аналогичные интерфейсы для работы с метриками, поэтому будет упоминаться отдельно только в тех случаях, когда этапы настройки отличаются от настроек для Prometheus.
Интеграция включает в себя компоненты, перечисленные ниже.
Агент мониторинга, предоставляющий следующую функциональность:
собирает статистику с экземпляров СУБД Postgres Pro и преобразовывает их в метрики
публикует метрики для дальнейшего сбора системой мониторинга Prometheus или VictoriaMetrics
Система мониторинга, предоставляющая следующую функциональность:
собирает метрики агентов мониторинга pgpro-otel-collector (для этой цели VictoriaMetrics использует отдельный компонент — vmagent)
хранит метрики с агентов мониторинга согласно внутренним параметрам хранения
предоставляет HTTP-интерфейс для получения метрик
Система Postgres Pro Enterprise Manager, предоставляющая следующую функциональность:
обращается к системе мониторинга Prometheus для получения метрик экземпляров СУБД
предоставляет пользователю интерфейс мониторинга в виде графиков
Процесс интеграции состоит из следующих этапов:
Дополнительная настройка агента не требуется.
Включите и настройте ресиверы postgrespro и hostmetrics:
receivers:
hostmetrics:
initial_delay: 1s
collection_interval: 60s
scrapers:
cpu:
metrics:
system.cpu.utilization:
enabled: true
disk: null
filesystem: null
load: null
memory: null
network: null
paging: null
processes: null
postgrespro:
max_threads: 3
initial_delay: 1s
collection_interval: 60s
transport: tcp
endpoint: localhost:5432
database: postgres
username: postgres
password: ${env:POSTGRESQL_PASSWORD}
plugins:
activity:
enabled: true
archiver:
enabled: true
bgwriter:
enabled: true
cache:
enabled: true
databases:
enabled: true
io:
enabled: true
locks:
enabled: true
version:
enabled: true
wal:
enabled: trueНастройте публикацию метрик через prometheusexporter, а также настройте конвейер.
PPEM ожидает, что у метрик, передаваемых от pgpro-otel-collector, будет метка (label) instance с полным именем (FQDN) узла и номером порта экземпляра СУБД, разделёнными двоеточием, например postgresql_activity_connections{instance="postgresql-01.example.org:5432"}.
Пример настройки:
exporters:
prometheus:
const_labels:
instance: postgresql-01.example.org:5432
endpoint: :8889
send_timestamps: true
service:
extensions: []
pipelines:
metrics:
exporters:
- prometheus
receivers:
- postgrespro
- hostmetricsЗапустите коллектор и проверьте публикацию метрик на стороне коллектора:
# systemctl start pgpro-otel-collector
# systemctl status pgpro-otel-collector
● pgpro-otel-collector.service - PostgresPro OpenTelemetry Collector
Loaded: loaded (/lib/systemd/system/pgpro-otel-collector.service; enabled; preset: enabled)
Active: active (running) since Thu 2025-03-20 01:18:08 MSK; 4h 13min ago
Main PID: 6991 (pgpro-otel-coll)
Tasks: 8 (limit: 3512)
Memory: 119.3M
CPU: 2min 49.311s
CGroup: /system.slice/pgpro-otel-collector.service
└─6991 /usr/bin/pgpro-otel-collector --config /etc/pgpro-otel-collector/basic.yml
Mar 20 01:18:08 postgresql-01.example.org pgpro-otel-collector[6991]: {"level":"info","ts":1742422688.366656,"msg":"Setting up own telemetry..."}
Mar 20 01:18:08 postgresql-01.example.org pgpro-otel-collector[6991]: {"level":"info","ts":1742422688.367178,"msg":"Skipped telemetry setup."}
Mar 20 01:18:08 postgresql-01.example.org pgpro-otel-collector[6991]: {"level":"info","ts":1742422688.3679142,"msg":"Development component. May change in the future.","kind":"receiver","name":"postgrespro","data_type":"metrics"}
Mar 20 01:18:08 postgresql-01.example.org pgpro-otel-collector[6991]: {"level":"warn","ts":1742422688.3494158,"caller":"envprovider@v1.16.0/provider.go:59","msg":"Configuration references unset environment variable","name":"POSTGRESQL_P>
Mar 20 01:18:08 postgresql-01.example.org pgpro-otel-collector[6991]: {"level":"info","ts":1742422688.4481084,"msg":"Starting pgpro-otel-collector...","Version":"v0.5.0","NumCPU":1}
Mar 20 01:18:08 postgresql-01.example.org pgpro-otel-collector[6991]: {"level":"info","ts":1742422688.4481149,"msg":"Starting extensions..."}
Mar 20 01:18:08 postgresql-01.example.org pgpro-otel-collector[6991]: {"level":"warn","ts":1742422688.4483361,"msg":"Using the 0.0.0.0 address exposes this server to every network interface, which may facilitate Denial of Service attack>
Mar 20 01:18:08 postgresql-01.example.org pgpro-otel-collector[6991]: {"level":"info","ts":1742422688.4515307,"msg":"Starting stanza receiver","kind":"receiver","name":"filelog","data_type":"logs"}
Mar 20 01:18:08 postgresql-01.example.org pgpro-otel-collector[6991]: {"level":"info","ts":1742422688.451749,"msg":"Everything is ready. Begin running and processing data."}
curl -s 127.0.0.1:8889/metrics |grep -c postgres
4254Сбор метрик с помощью pgpro-otel-collector на стороне Prometheus или VictoriaMetrics (vmagent) можно настроить разными способами. Один из вариантов — это сбор через статическую настройку:
- job_name: pgpro-otel-collector
honor_labels: true
scrape_interval: 1m
static_configs:
- targets:
- postgresql-01.example.org:8889Значение scrape_interval, задающее интервал сбора метрик, должно быть равно 1m (1 минута). Атрибут honor_labels необходим для корректного получения атрибута метрики instance.
За подробной информацией о других методах сбора обратитесь к официальной документации Prometheus или vmagent для VictoriaMetrics.
Дополнительная настройка Prometheus или VictoriaMetrics для PPEM не требуется.
После настройки сбора метрик с помощью pgpro-otel-collector убедитесь, что система мониторинга получает метрики.
Для этой проверки можно использовать встроенный графический инструмент expression browser для Prometheus или vmui для VictoriaMetrics. Утилиту promtool из поставки Prometheus можно использовать для обеих систем мониторинга.
Пример проверки с помощью утилиты promtool:
promtool query instant <URL> 'postgresql_activity_connections{instance="postgresql-01.example.org:5432"}'Где:
<URL>: URL службы мониторинга. Например:
https://prometheus.example.org для Prometheus
https://vm.example.org для VictoriaMetrics при работе с отдельным экземпляром
https://vm.example.org/select/0/prometheus для VictoriaMetrics при работе с кластером
postgresql_activity_connections{instance="postgresql-01.example.org:5432"}: имя и метки (labels) метрики.
Пример ответа:
postgresql_activity_connections{database="postgres", instance="postgresql-01.example.org:5432", job="pgpro-otel-collector", state="active", user="postgres"} 5
postgresql_activity_connections{database="postgres", instance="postgresql-01.example.org:5432", job="pgpro-otel-collector", state="idle", user="postgres"} 10В навигационной панели перейдите в Инфраструктура → Источники данных → Хранилища метрик.
В правом верхнем углу страницы нажмите Создать хранилище.
Укажите параметры хранилища метрик (помеченные звёздочкой параметры являются обязательными):
Название: уникальное имя хранилища метрик. Например, Prometheus или VictoriaMetrics.
URL: сетевой адрес для подключения к хранилищу метрик. Например, https://prometheus.example.org/select/0/prometheus или https://vm.example.org/select/0/prometheus.
Пользователь: уникальное имя пользователя, если используется аутентификация.
Пароль: пароль пользователя, если используется аутентификация.
Описание: описание хранилища метрик.
Сделать источником данных по умолчанию: указывает, следует ли использовать хранилище метрик по умолчанию для всех запросов к метрикам.
Нажмите Сохранить.
В навигационной панели перейдите в Мониторинг → Метрики.
В правом верхнем углу страницы выберите экземпляр, для которого в хранилище есть метрики.
Измените источник данных по умолчанию на внутренний и убедитесь, что графики отображаются без ошибок.