6.3. Работа с журналами #
В этом разделе описаны шаги, необходимые для работы с журналами.
6.3.1. Добавление и настройка ресивера filelog #
Ресивер filelog является открытым компонентом OpenTelemetry и используется для сбора журналов экземпляра СУБД. Подробную информацию о нём можно получить здесь.
Ресивер 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: csv_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.
6.3.2. Добавление и настройка процессоров attributes и resource #
Процессоры attributes и resource являются открытыми компонентами OpenTelemetry.
Конфигурация процессоров также зависит от настройки экземпляра СУБД и используемого формата журнала (см. параметры 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:54326.3.3. Добавление и настройка экспортёра otlphttp #
Экспортёр otlphttp является открытым компонентом OpenTelemetry и используется для отправки собранных журналов в OTLP-совместимую систему хранения или мониторинга, которая предварительно должна быть развёрнута и доступна. Подробную информацию о нём можно получить здесь.
Для настройки экспортёра otlphttp достаточно указать адрес целевой системы, куда следует отправить данные:
exporters:
otlphttp:
endpoint: https://otlp.example.org6.3.4. Настройка конвейера #
После того как ресиверы, процессоры и экспортёры добавлены и настроены, нужно объединить их в конвейер. Конвейер настраивается в секции service. Состав конвейера напрямую зависит от предварительно добавленных компонентов (не существует конфигурации по умолчанию).
В примере ниже показано, как настроить конвейер для работы с журналами. Данные собираются ресивером filelog, обрабатываются процессорами resource и attributes и экспортируются otlphttp.
Таким образом, все компоненты, используемые в конвейере, также должны быть добавлены в файл конфигурации и настроены.
service:
extensions: []
pipelines:
logs:
receivers:
- filelog
processors:
- resource
- attributes/convert
exporters:
- otlphttp