6.7. Integration with Postgres Pro Enterprise Manager #
Postgres Pro Enterprise Manager (PPEM) supports integration with pgpro-otel-collector and can receive metrics and logs.
6.7.1. Setting up Metrics #
To export metrics to PPEM, follow the steps below:
Enable and configure the required metric receivers (as per usual).
Enable and configure the
otlphttp
exporter.Specify the PPEM connection URL.
In the header
X-Ppem-Source-Agent-Name
, specify the name of the agent that controls the database instance (seeppem-agent.yml
).In the header
X-Ppem-Source-Instance-Port
, specify the port number of the required DBMS instance (seepostgresql.conf
).Set up a pipeline (as per usual).
receivers: hostmetrics: # ... postgrespro: # ... exporters: otlphttp/ppem_metrics: compression: '' endpoint: "https://ppem.example.org" headers: X-Ppem-Source-Agent-Name: "dbserver01" X-Ppem-Source-Instance-Port: "5432" service: extensions: [] pipelines: metrics: receivers: - postgrespro - hostmetrics processors: exporters: - otlphttp/ppem_metrics
Make sure you have specified the correct values in the HTTP headers — these headers are used to connect metrics with instances in PPEM.
6.7.2. Setting up Logs #
To export logs to PPEM, do the following:
Enable and configure the
filelog
receivers according to the database instance logging format (csvlog
orjsonlog
).Enable and configure the
attributes/convert
processor according to the database instance logging format (csvlog
orjsonlog
).Enable and configure the
otlphttp
exporter.Specify the PPEM connection URL.
Specify the agent name that controls the required database instance in the header
X-Ppem-Source-Agent-Name
(seeppem-agent.yml
).Specify the port number of the required DBMS instance in the header
X-Ppem-Source-Instance-Port
(seepostgresql.conf
).Set up a pipeline (as per usual).
receivers: filelog: # ... processors: attributes/convert: # ... exporters: otlphttp/ppem_logs: compression: '' endpoint: "https://ppem.example.org" headers: X-Ppem-Source-Agent-Name: "dbserver01" X-Ppem-Source-Instance-Port: '5432' service: extensions: [] pipelines: logs: receivers: - filelog processors: - attributes/convert exporters: - otlphttp/ppem_logs
6.7.3. Configuration Example #
The example below shows how to set up the collector configuration for exporting metrics and logs (CSV) to PPEM.
receivers: filelog: include: - /var/log/postgresql/*.csv multiline: line_start_pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2} operators: - header: timestamp,user,dbname,pid,connection_from,session_id,line_num,ps,session_start,vxid,txid,error_severity,state_code,message,detail,hint,internal_query,internal_position,context,statement,cursor_position,func_name,application_name,backend_type,leader_pid,query_id timestamp: layout: '%Y-%m-%d %H:%M:%S.%L %Z' layout_type: strptime parse_from: attributes.timestamp type: csv_parser - field: attributes.timestamp type: remove retry_on_failure: enabled: true initial_interval: 1s max_elapsed_time: 5m max_interval: 30s start_at: end hostmetrics: collection_interval: 60s initial_delay: 1s scrapers: cpu: metrics: system.cpu.utilization: enabled: true disk: null load: null memory: null network: null postgrespro: max_threads: 3 initial_delay: 1s collection_interval: 60s 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 versions: enabled: true wal: enabled: true cache: enabled: true processors: attributes/convert: actions: - action: convert converted_type: int key: pid - action: convert converted_type: int key: line_num - action: convert converted_type: int key: txid - action: convert converted_type: int key: remote_port - action: convert converted_type: int key: cursor_position - action: convert converted_type: int key: internal_position - action: convert converted_type: int key: leader_pid batch: send_batch_size: 8192 timeout: 10s resource: attributes: - action: upsert key: service.name value: postgresql - action: upsert key: service.instance.id value: dbserver-01.example.org:5432 exporters: otlphttp/ppem_logs: endpoint: 'https://ppem.example.org' headers: X-Ppem-Source-Agent-Name: 'dbserver-01.example.org' X-Ppem-Source-Instance-Port: '5432' otlphttp/ppem_metrics: endpoint: 'https://ppem.example.org' headers: X-Ppem-Source-Agent-Name: 'dbserver-01.example.org' X-Ppem-Source-Instance-Port: '5432' service: extensions: [] pipelines: logs: receivers: - filelog processors: - resource - attributes/convert - batch exporters: - otlphttp/ppem_logs metrics: receivers: - postgrespro - hostmetrics processors: - batch exporters: - otlphttp/ppem_metrics