6.2. Работа с метриками #

В этом разделе описаны шаги, необходимые для работы с метриками.

6.2.1. Добавление и настройка ресивера postgrespro #

Для сбора метрик с экземпляра СУБД добавьте ресивер postgrespro в секцию receivers и настройте его.

Обязательная настройка:

  • Укажите параметры подключения к экземпляру базы данных.

  • Укажите список плагинов для сбора данных.

Дополнительная настройка:

  • Параметры сбора: параллелизм, задержка, интервал.

receivers:
  postgrespro:
    max_threads: 3
    collection_interval: 60s
    initial_delay: 1s
    transport: tcp
    endpoint: localhost:5432
    database: postgres
    username: postgres
    password: ${env:POSTGRESQL_PASSWORD}
    metrics: null
    plugins:
      activity:
        enabled: true
      bgwriter:
        enabled: true
      locks:
        enabled: true
      version:
        enabled: true
      wal:
        enabled: true
      cache:
        enabled: true

Некоторые плагины имеют дополнительные параметры конфигурации. Например, плагины сбора метрик по объектам СУБД (табличные пространства, базы данных, таблицы, индексы) могут настраиваться так, чтобы сбор осуществлялся по ограниченному числу объектов, позволяя таким образом управлять сбором и регулировать нагрузку на экземпляр СУБД и объём данных, отправляемых по конвейеру в экспортёр. За подробным описанием параметров конфигурации по каждому плагину обратитесь к примерам конфигурации в каталоге /usr/share/doc/pgpro-otel-collector/examples.

Ресивер также поддерживает работу через Unix-сокеты, если конечная точка определена, как показано ниже.

receivers:
  postgrespro:
    ...
    transport: unix
    endpoint: /tmp:5432 # Или 'tmp:5432'
    ...

6.2.2. Добавление и настройка ресивера hostmetrics #

Ресивер hostmetrics является компонентом OpenTelemetry Collector с открытым исходным кодом и используется для сбора метрик операционной системы. За подробной информацией обратитесь к документации OpenTelemetry.

Для настройки ресивера hostmetrics достаточно перечислить список плагинов (scrapers) для сбора данных. Также доступны параметры сбора: задержка и интервал.

Некоторые плагины также имеют дополнительные параметры конфигурации.

receivers:
  hostmetrics:
    collection_interval: 60s
    initial_delay: 1s
    scrapers:
      cpu:
        metrics:
          system.cpu.utilization:
            enabled: true
      disk: null
      load: null
      memory: null
      network: null

6.2.3. Добавление и настройка экспортёра prometheus #

Экспортёр prometheus является компонентом OpenTelemetry Collector с открытым исходным кодом. За подробной информацией обратитесь к документации OpenTelemetry.

prometheus наиболее прост в использовании — он не требует обязательной настройки внешних компонентов и может быть включён по умолчанию. Для настройки достаточно указать адрес для прослушивания входящих запросов:

exporters:
  prometheus:
    endpoint: "1.2.3.4:8889"
    send_timestamps: true

6.2.4. Добавление и настройка экспортёра otlphttp #

Экспортёр otlphttp является компонентом OpenTelemetry Collector с открытым исходным кодом и используется для отправки собранных журналов в OTLP-совместимую систему хранения или мониторинга, которая предварительно должна быть развёрнута и доступна. За подробной информацией обратитесь к документации OpenTelemetry.

Для настройки экспортёра otlphttp достаточно указать адрес целевой системы, куда следует отправить данные:

exporters:
  otlphttp:
    endpoint: https://otlp.example.org

6.2.5. Добавление и настройка экспортёра kafka #

Экспортёр kafka является компонентом OpenTelemetry Collector с открытым исходным кодом для отправки метрик и журналов в Apache Kafka. За подробной информацией обратитесь к документации OpenTelemetry.

В примере ниже показано, как настроить отправку метрик.

receivers:
  postgrespro:
    max_threads: 3
    collection_interval: 60s
    initial_delay: 1s
    transport: tcp
    endpoint: localhost:5432
    database: postgres
    username: postgres
    password: ${env:POSTGRESQL_PASSWORD}
    metrics: null
    plugins:
      activity:
        enabled: true
      bgwriter:
        enabled: true
      locks:
        enabled: true
      version:
        enabled: true
      wal:
        enabled: true
      cache:
        enabled: true
exporters:
  kafka:
    brokers:
      - localhost:9092
    protocol_version: 2.1.0
    client_id: pgpro-otel-collector
    metrics:
      topic: otlp_metrics
      encoding: otlp_json # proto supported
    include_metadata_keys:
      - service.name
      - service.instance.id
    tls:
      insecure: true
    timeout: 30s
    producer:
      max_message_bytes: 1000000
      required_acks: 1
      compression: none # gzip, snappy, lz4, and zstd;
processors:
  batch/kafka:
    send_batch_size: 1024
    timeout: 1s
  resource:
    attributes:
      - key: service.name
        action: upsert
        value: postgresql
      - key: service.instance.id
        action: upsert
        value: address-of-postgres-instance:5432
service:
  pipelines:
    metrics/kafka:
      receivers: [ postgrespro ]
      processors: [ batch/kafka,resource ]
      exporters: [ kafka ]

6.2.6. Настройка конвейера #

После того как ресиверы, процессоры и экспортёры добавлены и настроены, нужно объединить их в конвейер. Конвейер настраивается в секции service. Состав конвейера напрямую зависит от предварительно добавленных компонентов (не существует конфигурации по умолчанию).

В примере ниже показано, как настроить конвейер для работы с метриками. Данные собираются ресиверами postgrespro и hostmetrics, обрабатываются процессором batch и экспортируются prometheus и otlphttp.

Таким образом, все компоненты, используемые в конвейере, также должны быть добавлены в файл конфигурации и настроены.

service:
  extensions: []
  pipelines:
    metrics:
      receivers:
        - postgrespro
        - hostmetrics
      processors:
        - batch
      exporters:
        - prometheus
        - otlphttp