Файл конфигурации

Главный файл конфигурации находится в /etc/pgpro-otel-collector/basic.yml и используется по умолчанию. Конфигурация состоит из нескольких основных секций:

  • настройки ресиверов
  • настройки процессоров
  • настройки экспортеров
  • настройки конвейеров
  • прочие и опциональные настройки

Секции можно размещать в произвольном порядке. В поверхностном приближении структура файла конфигурации выглядит следующим образом.

receivers:
  # Секция для описания ресиверов, ответственных за сбор данных.
processors:
  # Секция для описания процессоров данных, ответственных за промежуточную обработку данных.
exporters:
  # Секция для описания экспортеров данных, ответственных за отправку данных.
service:
  pipelines:
    # Секция для описания конвейеров от начала сбора до отправки.

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

  • Для сбора метрик PostgreSQL нужно добавить и настроить ресивер postgrespro.
  • Для сбора журналов PostgreSQL нужно добавить и настроить ресивер filelog, дополнительно нужно настроить процессоры resource и attributes.
  • Для сбора метрик операционной системы нужно добавить и настроить ресивер hostmetrics.
  • Для отправки данных в OTLP-совместимое хранилище, нужно добавить и настроить экспортер otlphttp.
  • Для публикации данных в формате совместимом с Prometheus, нужно добавить и настроить экспортер prometheus.

Более того все добавленные компоненты нужно выстроить в конвейер в секции service.pipelines.

В более детальном приближении структура файла конфигурации выглядит так:

exporters:
  otlphttp/logs:
    # Настройка экспортера OTLPHTTP, для отправки журналов.
  otlphttp/metrics:
    # Настройка экспортера OTLPHTTP, для отправки метрик.
  prometheus:
    # Настройка экспортера Prometheus, для публикации метрик.
processors:
  attributes/convert:
    # Настройка процессора attributes (для обработки записей журнала).
  resource:
    # Настройка процессора resource (для обработки записей журнала).
receivers:
  postgrespro:
    # Настройка ресивера для сбора метрик экземпляра СУБД.
  filelog:
    # Настройка ресивера для сбора журналов.
  hostmetrics:
    # Настройка ресивера для сбора метрик операционной системы.
service:
  extensions: []
  pipelines:
    # Конвейер сбора, обработки и отправки журналов.
    logs:
      receivers:
        - filelog
      processors:
        - resource
        - attributes/convert
      exporters:
        - otlphttp/logs
    # Конвейер сбора, обработки и отправки метрик.
    metrics:
      receivers:
        - postgrespro
        - hostmetrics
      processors:
      exporters:
        - prometheus
        - otlphttp/metrics

Архитектура OpenTelemetry Collector позволяет использовать один и тот же компонент несколько раз. Например, можно добавить несколько экземпляров ресивера postgrespro и настроить сбор метрик с нескольких экземпляров СУБД. Или использовать несколько экземпляров экспортера otlphttp для отправки как метрик так и логов в разные хранилища данных, добиваясь тем самым, разветвления потоков данных.

Для указания нескольких экземпляров компонентов следует использовать нотацию КОМПОНЕНТ/ИМЯ, где:

  • КОМПОНЕНТ - название компонента: ресивера, процессора или экспортера.
  • ИМЯ - дополнительное произвольное имя.

За счет пар КОМПОНЕНТ/ИМЯ, формируются уникальные идентификаторы компонентов, которые дальше используются в составе конвейеров. Например, otlphttp/logs_main, postgrespro/primary, postgrespro/standby и т.п.

Пример использования нескольких экземпляров одного и того же компонента:

receivers:
  # ...
processors:
  # ...
exporters:
  # Используется 2 экземпляра экспортера OTLPHTTP для отправки данных в разные пункты назначения.
  otlphttp/logs_elastic:
    endpoint: https://elastic.example.org
  otlphttp/logs_ppem:
    endpoint: https://ppem.example.org
service:
  extensions: []
  pipelines:
    logs:
      receivers:
        # ...
      processors:
        # ...
      # После сбора и обработки записей журнала, отправка осуществляется 2 направления.
      exporters:
        - otlphttp/logs_elastic
        - otlphttp/logs_ppem

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

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