Для настройки работы с журналами нужно:
filelog;attributes и
resource;otlphttp;Ресивер filelog является открытым компонентом
OpenTelemetry, подробную информацию о ресивере можно получить тут.
Коллектор использует ресивер filelog для сбора журналов
экземпляра СУБД. Ресивер filelog нужно добавить в секцию
receivers и описать его настройку.
Настройка ресивера зависит от настроек экземпляра СУБД и
используемого формата журнала (см. параметры
logging_collector и log_destination).
Коллектор поддерживает сбор журналов в формате CSV и JSON.
Независимо от формата журнала необходимо указать путь к каталогу журналов и шаблон имен журналов.
Пример настройки ресивера для сбора журналов в формате JSON:
receivers:
filelog:
include: [ /var/log/postgresql/*.json ]
start_at: end
retry_on_failure:
enabled: true
initial_interval: 1s
max_interval: 30s
max_elapsed_time: 5m
operators:
- type: json_parser
parse_ints: true
timestamp:
parse_from: attributes.timestamp
layout_type: strptime
layout: '%Y-%m-%d %H:%M:%S.%L %Z'
- type: remove
field: attributes.timestampПример настройки ресивера для сбора журналов в формате CSV:
receivers:
filelog:
include: [ /var/log/postgresql/*.csv ]
start_at: end
retry_on_failure:
enabled: true
initial_interval: 1s
max_interval: 30s
max_elapsed_time: 5m
multiline:
line_start_pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}
operators:
- type: csv_parser
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:
parse_from: attributes.timestamp
layout_type: strptime
layout: '%Y-%m-%d %H:%M:%S.%L %Z'
- type: remove
field: attributes.timestampОбратите внимание, что настройка под CSV требует указания большего числа параметров, т.к. должна быть адаптирована под особенности CSV журналирования.
Подробное описание настроек и примеры конфигурации также можно найти
в примерах в
/usr/share/doc/pgpro-otel-collector/examples.
attributes и
resourceПроцессоры attributes и resource являются
открытыми компонентами OpenTelemetry, подробную информацию о процессорах
можно получить здесь: attributes,
resource.
Процессоры attributes и resource
используются для обработки отдельных атрибутов записей журнала. Оба
процессора нужно добавить в секцию processors и описать их
настройку.
Настройка процессоров также зависит от настроек экземпляра СУБД и
используемого формата журнала (см. параметры
logging_collector и log_destination).
Настройка процессора resource осуществляется в случае
отправки журналов в Elastic. Независимо от формата журнала необходимо
указать добавление атрибутов service.name и
service.instance.id.
Пример настройки процессоров для сбора журналов в формате JSON:
processors:
attributes/convert:
actions:
- key: query_id
action: convert
converted_type: string
resource:
attributes:
- key: service.name
action: upsert
value: postgresql
- key: service.instance.id
action: upsert
value: 1.2.3.4:5432Пример настройки процессоров для сбора журналов в формате CSV:
processors:
attributes/convert:
actions:
- 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
action: convert
converted_type: int
resource:
attributes:
- key: service.name
action: upsert
value: postgresql
- key: service.instance.id
action: upsert
value: 1.2.3.4:5432otlphttpЭкспортер otlphttp является открытым компонентом
OpenTelemetry, подробную информацию о ресивере можно получить тут.
Экспортер otlphttp используется для отправки собранных
журналов в OTLP-совместимую систему хранения или мониторинга которая
предварительно должна быть развернута и доступна.
Для настройки достаточно указать адрес целевой системы куда следует отправить данные:
exporters:
otlphttp:
endpoint: https://otlp.example.orgПосле того как ресиверы, процессоры и экспортеры добавлены и
настроены, нужно объединить в конвейер. Настройка конвейера
осуществляется в секции service. Состав конвейера всегда
напрямую зависит от предварительно добавленных компонентов (не
существует универсальной конфигурации по умолчанию).
В примере ниже выполнена настройка конвейера для работы с журналами.
Сбор данных осуществляется ресивером filelog, затем данные
проходят обработку через процессоры resource и
attributes, затем уходят на отправку в экспортеры
otlphttp.
Таким образом все компоненты используемые в конвейере, также должны быть добавлены в конфигурацию и настроены.
service:
extensions: []
pipelines:
logs:
receivers:
- filelog
processors:
- resource
- attributes/convert
exporters:
- otlphttp