25.3. Интеграция с VictoriaLogs #

Интеграция с внешними источниками данных VictoriaLogs используется для чтения журналов, записываемых туда утилитой pgpro-otel-collector.

Интеграция включает в себя компоненты, перечисленные ниже.

pgpro-otel-collector #

Агент мониторинга, предоставляющий следующую функциональность:

  • собирает журналы активности с экземпляров СУБД Postgres Pro

  • отправляет журналы активности в VictoriaLogs

VictoriaLogs #

Система управления журналами активности, предоставляющая следующую функциональность:

  • принимает журналы активности от агентов мониторинга

  • хранит журналы активности согласно внутренним параметрам хранения

  • предоставляет интерфейс для получения журналов активности

PPEM #

Система Postgres Pro Enterprise Manager, предоставляющая следующую функциональность:

  • обращается к системе VictoriaLogs для получения журналов активности экземпляров СУБД

  • предоставляет пользователю интерфейс мониторинга в виде текстовых данных на основе журналов активности

Процесс интеграции состоит из следующих этапов:

Дополнительная настройка агента не требуется.

25.3.1. Настройка pgpro-otel-collector для VictoriaLogs #

  1. Включите и настройте ресивер filelog.

    Пример настройки ресивера для сценария, когда журналы PostgreSQL генерируются в формате JSON:

    receivers:
      filelog:
        include:
        - /var/log/postgresql/*.json
        operators:
        - parse_ints: true
          timestamp:
            layout: '%Y-%m-%d %H:%M:%S.%L %Z'
            layout_type: strptime
            parse_from: attributes.timestamp
          type: json_parser
        - field: attributes.timestamp
          type: remove
        retry_on_failure:
          enabled: true
          initial_interval: 1s
          max_elapsed_time: 5m
          max_interval: 30s
        start_at: end
  2. Настройте процессоры:

    processors:
      resource:
        attributes:
        - action: upsert
          key: service.name
          value: postgresql
        - action: upsert
          key: service.instance.id
          value: postgresql-01.example.org:5432

    Где:

    • service.name — ключ для идентификации журналов Postgres Pro.

    • service.instance.id — ключ для идентификации экземпляра.

  3. Настройте отправку журналов через otlphttpexporter и настройте конвейер:

    exporters:
      otlphttp/victorialogs:
        compression: gzip
        encoding: proto
        endpoint: https://victorialogs.example.org/insert/opentelemetry/v1/logs
        headers:
          VL-Stream-Fields: service.name,service.instance.id
        tls:
          insecure_skip_verify: false
    
    service:
      extensions: []
      pipelines:
        logs:
          receivers:
          - filelog
          processors:
          - resource
          exporters:
          - otlphttp/victorialogs
  4. Запустите коллектор и проверьте публикацию журналов на его стороне:

    # 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."}
    Mar 20 01:18:08 postgresql-01.example.org pgpro-otel-collector[6991]: {"level":"info","ts":1742422688.6523068,"msg":"Started watching file","kind":"receiver","name":"filelog","data_type":"logs","component":"fileconsumer","path":"/var/log/postgresql/postgresql-2025-03-20.json"}

25.3.2. Проверка наличия журналов в VictoriaLogs #

После настройки отправки журналов из pgpro-otel-collector убедитесь, что VictoriaLogs получает журналы.

Для проверки можно выполнить запрос к хранилищу с помощью утилиты curl.

Пример запроса:

curl https://victorialogs.example.org/select/logsql/query \
  -d query=service.name:postgresql \
  -d start=30m \
  -d end=now \
  -d limit=10

Где:

  • https://victorialogs.example.org — URL системы хранения журналов.

  • query=service.name:postgresql — поисковый запрос для выбора всех журналов PostgreSQL.

  • start=30m и end=now выполняют поиск журналов за последние 30 минут.

  • limit=10 ограничивает количество возвращаемых журналов.

Пример ответа:

{
    "_time":"2026-03-20T17:14:12.153Z",
    "log.file.name":"postgresql-2026-03-20.json",
    "service.instance.id":"postgresql-01.example.org:5432",
    "service.name":"postgresql",
    "backend_type":"pg_wait_sampling collector",
    "error_severity":"LOG",
    "message":"pg_wait_sampling collector started"
}

25.3.3. Настройка источника данных журналов #

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

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

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

    • Система хранения сообщений: тип системы хранения журналов.

      Выберите VictoriaLogs.

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

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

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

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

    • Описание: описание хранилища журналов.

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

25.3.4. Проверка работы хранилища журналов #

  • В навигационной панели перейдите в МониторингЖурнал сообщений.

    Отобразится таблица журналов.

  • Чтобы сбросить фильтры, нажмите Сбросить всё над таблицей.

  • Проверьте, что новые журналы активности отображаются в таблице.