Настройка работы с журналами
Для настройки работы с журналами нужно:
- добавить и настроить ресивер
filelog
; - добавить и настроить процессоры
attributes
иresource
; - добавить и настроить экспортер
otlphttp
; - объединить ресивер, процессоры и экспортер в конвейер.
Добавление и настройка ресивера filelog
Ресивер 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:5432
Добавление и настройка экспортера otlphttp
Экспортер 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