6.1. Configuration File #

The main configuration file is located in /etc/pgpro-otel-collector/basic.yml and is used by default. It consists of the following main sections:

  • Receiver parameters

  • Processor parameters

  • Exporter parameters

  • Pipeline parameters

  • Additional and optional parameters

Sections can be arranged in any order. At the top level, the configuration file structure looks as follows:

receivers:
  # Section for specifying receivers responsible for data collection.
processors:
  # Section for specifying processors responsible for the intermediate processing of the data.
exporters:
  # Section for describing exporters responsible for sending data.
service:
  pipelines:
    # Section for specifying pipelines from the start of the data collection to its transmission.

Depending on the administrator's goals, the configuration file can be extended with the following components and their parameters:

  • The postgrespro receiver for collecting Postgres Pro metrics

  • The filelog receiver and the resource and attributes processors for collecting Postgres Pro logs

  • The hostmetrics receiver for collecting metrics from the operating system

  • The otlphttp exporter for sending data to an OTLP-compatible storage

  • The prometheus exporter for publishing data in the format compatible with Prometheus

Additionally, all added components must be organized into a pipeline in the service.pipelines section.

At the more detailed level, the configuration file structure looks as follows:

exporters:
  otlphttp/logs:
    # Setting up the otlphttp exporter for sending logs.
  otlphttp/metrics:
    # Setting up the otlphttp exporter for sending metrics.
  prometheus:
    # Setting up the prometheus exporter for publishing metrics.
processors:
  attributes/convert:
    # Setting up the attributes processor for processing log records.
  resource:
    # Setting up the resource processor for processing log records.
receivers:
  postgrespro:
    # Setting up a receiver for collecting metrics from DBMS.
  filelog:
    # Setting up a receiver for collecting logs.
  hostmetrics:
    # Setting up a receiver for collecting metrics from the operating system.
service:
  extensions: []
  pipelines:
    # Pipeline for log collection, processing and transmission.
    logs:
      receivers:
        - filelog
      processors:
        - resource
        - attributes/convert
      exporters:
        - otlphttp/logs
    # Pipeline for collecting, processing, and sending metrics.
    metrics:
      receivers:
        - postgrespro
        - hostmetrics
      processors:
      exporters:
        - prometheus
        - otlphttp/metrics

The OpenTelemetry collector architecture allows using the same component multiple times. For example, you can use several copies of the postgrespro receiver to collect metrics from different DBMS instances. Similarly, numerous copies of the otlphttp exporter can be used for exporting metrics and logs to various storages, ensuring the data stream branching.

To specify several copies of the components, use the component/name notation, where:

  • component is the name of the component (receiver, processor, or exporter)

  • name is an additional custom name

The component/name notation is needed for forming the component unique IDs, which are then used in pipelines. For example: otlphttp/logs_main, postgrespro/primary, postgrespro/standby.

An example of using several copies of the same component:

receivers:
  # ...
processors:
  # ...
exporters:
  # Two copies of the otlphttp exporter are used for sending data to different destinations.
  otlphttp/logs_elastic:
    endpoint: https://elastic.example.org
  otlphttp/logs_ppem:
    endpoint: https://ppem.example.org
service:
  extensions: []
  pipelines:
    logs:
      receivers:
        # ...
      processors:
        # ...
      # After the log records are collected and processed, they are transmitted in two directions.
      exporters:
        - otlphttp/logs_elastic
        - otlphttp/logs_ppem

Thus, by populating the configuration file, you can flexibly define the parameters for collecting, processing, and sending data.

The collector functionality can be expanded with auxiliary configuration files located in the /usr/share/doc/pgpro-otel-collector/examples directory. Special attention should be paid to the postgrespro receiver: it supports a wide range of data collection tools, but only the minimal set is included in the configuration by default, most of the plugins being disabled. Before enabling any plugins, ensure that statistics are available on the database instance side.

Warning

⚠️ IMPORTANT! Enabling extra plugins can lead to high overhead (data collection costs) and should be considered carefully.