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 #

  1. Включите и настройте ресиверы 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
  2. Настройте публикацию метрик через 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
  3. Запустите коллектор и проверьте публикацию метрик на стороне коллектора:

    # 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 для 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

24.1.4. Настройка источника метрик #

  1. В навигационной панели перейдите в ИнфраструктураИсточники данныхХранилища метрик.

  2. В правом верхнем углу страницы нажмите Создать хранилище.

  3. Укажите параметры хранилища метрик (помеченные звёздочкой параметры являются обязательными):

    • Название: уникальное имя хранилища метрик. Например, Prometheus или VictoriaMetrics.

    • URL: сетевой адрес для подключения к хранилищу метрик. Например, https://prometheus.example.org/select/0/prometheus или https://vm.example.org/select/0/prometheus.

    • Пользователь: уникальное имя пользователя, если используется аутентификация.

    • Пароль: пароль пользователя, если используется аутентификация.

    • Описание: описание хранилища метрик.

    • Сделать источником данных по умолчанию: указывает, следует ли использовать хранилище метрик по умолчанию для всех запросов к метрикам.

  4. Нажмите Сохранить.

24.1.5. Проверка работы хранилища метрик #

  1. В навигационной панели перейдите в МониторингМетрики.

  2. В правом верхнем углу страницы выберите экземпляр, для которого в хранилище есть метрики.

  3. Измените источник данных по умолчанию на внутренний и убедитесь, что графики отображаются без ошибок.