24.1. Интеграция с Prometheus и VictoriaMetrics #
Интеграция с внешними источниками данных Prometheus и VictoriaMetrics используется для чтения метрик, записываемых туда утилитой pgpro-otel-collector.
Примечание
В этом разделе описано, как настроить Prometheus. VictoriaMetrics использует аналогичные интерфейсы для работы с метриками, поэтому будет упоминаться отдельно только в тех случаях, когда этапы настройки отличаются от настроек для Prometheus.
Интеграция включает в себя компоненты, перечисленные ниже.
- pgpro-otel-collector #
Агент мониторинга, предоставляющий следующую функциональность:
собирает статистику с экземпляров СУБД Postgres Pro и преобразовывает их в метрики
публикует метрики для дальнейшего сбора системой мониторинга Prometheus или VictoriaMetrics
- Prometheus или VictoriaMetrics #
Система мониторинга, предоставляющая следующую функциональность:
собирает метрики агентов мониторинга pgpro-otel-collector (для этой цели VictoriaMetrics использует отдельный компонент — vmagent)
хранит метрики с агентов мониторинга согласно внутренним параметрам хранения
предоставляет HTTP-интерфейс для получения метрик
- PPEM #
Система Postgres Pro Enterprise Manager, предоставляющая следующую функциональность:
обращается к системе мониторинга Prometheus для получения метрик экземпляров СУБД
предоставляет пользователю интерфейс мониторинга в виде графиков
Процесс интеграции состоит из следующих этапов:
Дополнительная настройка агента не требуется.
24.1.1. Настройка pgpro-otel-collector для Prometheus и VictoriaMetrics #
Включите и настройте ресиверы
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
24.1.2. Настройка Prometheus и VictoriaMetrics #
Сбор метрик с помощью 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 не требуется.
24.1.3. Проверка наличия метрик в Prometheus и VictoriaMetrics #
После настройки сбора метрик с помощью 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для Prometheushttps://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"} 1024.1.4. Настройка источника метрик #
В навигационной панели перейдите в Инфраструктура → Источники данных → Хранилища метрик.
В правом верхнем углу страницы нажмите Создать хранилище.
Укажите параметры хранилища метрик (помеченные звёздочкой параметры являются обязательными):
Название: уникальное имя хранилища метрик. Например,
PrometheusилиVictoriaMetrics.URL: сетевой адрес для подключения к хранилищу метрик. Например,
https://prometheus.example.org/select/0/prometheusилиhttps://vm.example.org/select/0/prometheus.Пользователь: уникальное имя пользователя, если используется аутентификация.
Пароль: пароль пользователя, если используется аутентификация.
Описание: описание хранилища метрик.
Сделать источником данных по умолчанию: указывает, следует ли использовать хранилище метрик по умолчанию для всех запросов к метрикам.
Нажмите Сохранить.
24.1.5. Проверка работы хранилища метрик #
В навигационной панели перейдите в Мониторинг → Метрики.
В правом верхнем углу страницы выберите экземпляр, для которого в хранилище есть метрики.
Измените источник данных по умолчанию на внутренний и убедитесь, что графики отображаются без ошибок.