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