Загрузка syslog с помощью АктивногоШлюза
Загрузка syslog с помощью АктивногоШлюза
Рекомендуется
Syslog (сокращение от System Logging Protocol) — это механизм логирования, который позволяет системным администраторам отслеживать и контролировать файлы логов из различных системных компонентов, таких как сетевые устройства, хосты Linux, syslog-серверы или другие производители syslog. Это руководство показывает, как настроить АктивныйШлюз среды на Linux для сбора syslog-логов в вашей сети и их загрузки в Ключ-АСТРОМ. Многосредовые АктивныеШлюзы не поддерживают загрузку syslog.
Предварительные требования
- АктивныйШлюз среды версии 1.295+ на Linux, установленный для мониторинга удалённых технологий.
- На ваших сетевых устройствах включён syslog, или в вашей сети настроены другие производители syslog. Подробности см. в RFC 3164 и RFC 5424.
- Ключ-АСТРОМ поддерживает множество реализаций syslog, включая RSysLog, Syslog-NG, NXLog и другие.
- По умолчанию загружаемые syslog-сообщения должны быть в формате, определённом RFC 3164 и RFC 5424. Если ваши устройства создают нестандартные записи syslog, их необходимо преобразовать в поддерживаемый формат с помощью обработки OpenPipeline Ключ-АСТРОМ.
- RFC 3164 требует настройки получателя. Подробности см. в шаге Редактирование конфигурации получателя syslog в разделе Включение загрузки syslog.
Требования к оборудованию
Загрузка syslog выполняется АктивнымШлюзом. Пропускная способность загрузки syslog зависит от оборудования, на котором развёрнут АктивныйШлюз.
| CPU | RAM (ГБ) | Максимальная пропускная способность |
|---|---|---|
| 4 | 16 | ~1 ТБ/день |
| 8 | 32 | ~2,7 ТБ/день |
Целевая аудитория
Это руководство предназначено для сетевых администраторов и администраторов Ключ-АСТРОМ, перед которыми стоит задача включить загрузку syslog-логов в Ключ-АСТРОМ.
Включение загрузки syslog
Чтобы включить загрузку syslog:
- Разверните АктивныйШлюз среды.
- Разверните АктивныйШлюз среды в месте, обеспечивающем связь между АктивнымШлюзом и мониторируемыми устройствами. См. инструкции для Linux и используйте назначение «мониторинг удалённых технологий».
- Включите загрузку syslog на вашем АктивномШлюзе. Добавьте следующий флаг в файл
/var/lib/astromkey/remotepluginmodule/agent/conf/extensionsuser.conf:
syslogenabled=true
- Необязательно: отредактируйте конфигурацию получателя syslog. АктивныйШлюз использует встроенный экземпляр Коллектора OpenTelemetry Ключ-АСТРОМ и сохраняет конфигурацию получателя в файле
/var/lib/astromkey/remotepluginmodule/agent/conf/syslog.yaml. Коллектор устанавливается по умолчанию. Используйте эту конфигурацию только для загрузки syslog. Если ваши производители syslog используют порты по умолчанию для поддерживаемых протоколов, АктивныйШлюз с включённым syslog должен сразу начать принимать записи syslog. Если ваши производители syslog отправляют события на нестандартные порты или используется протокол RFC 3164, измените конфигурацию получателя syslog. Подробности см. в разделе Загрузка данных syslog с помощью Коллектора OTel.
Конфигурация получателя syslog по умолчанию
receivers:
syslog/udp:
udp:
listen_address: '0.0.0.0:514'
add_attributes: true
protocol: rfc5424
operators:
- type: syslog_parser
protocol: rfc5424
syslog/tcp:
tcp:
listen_address: '0.0.0.0:601'
add_attributes: true
protocol: rfc5424
operators:
- type: syslog_parser
protocol: rfc5424
# syslog/tcp_tls:
# tcp:
# listen_address: "0.0.0.0:6514"
# tls:
# cert_file: "/absolute/path/to/server.crt"
# key_file: "/absolute/path/to/server.key"
# protocol: rfc5424
# operators:
# - type: syslog_parser
# protocol: rfc5424
#DO.NOT.MODIFY
exporters:
otlp_http/syslog:
${file:syslogendpoint.yaml}
processors:
batch:
send_batch_size: 512
send_batch_max_size: 1024
transform:
log_statements:
- context: log
statements:
- set(body, attributes["message"])
attributes:
actions:
- key: net.host.name
action: delete
- key: net.peer.name
action: delete
- key: net.peer.port
action: delete
- key: net.transport
action: delete
- key: net.host.ip
action: delete
- key: dt.ingest.port
from_attribute: net.host.port
action: upsert
- key: dt.ingest.source.ip
from_attribute: net.peer.ip
action: upsert
- key: net.peer.ip
action: delete
- key: net.host.port
action: delete
- key: syslog.hostname
from_attribute: hostname
action: upsert
- key: hostname
action: delete
- key: syslog.facility
from_attribute: facility
action: upsert
- key: facility
action: delete
- key: syslog.priority
from_attribute: priority
action: upsert
- key: priority
action: delete
- key: syslog.proc_id
from_attribute: proc_id
action: upsert
- key: proc_id
action: delete
- key: syslog.version
from_attribute: version
action: upsert
- key: version
action: delete
- key: syslog.appname
from_attribute: appname
action: upsert
- key: appname
action: delete
- key: message
action: delete
service:
telemetry:
metrics:
level: none
pipelines:
logs/udp:
receivers: [syslog/udp]
processors: [transform, attributes, batch]
exporters: [otlp_http/syslog]
logs/tcp:
receivers: [syslog/tcp]
processors: [transform, attributes, batch]
exporters: [otlp_http/syslog]
# logs/tcp_tls:
# receivers: [syslog/tcp_tls]
# processors: [transform, attributes, batch]
# exporters: [otlp_http/syslog]
- Проверьте, что загрузка syslog включена. Откройте новейший файл лога
ruxit_extensionmodule_*.logв каталоге/var/lib/astromkey/remotepluginmodule/log/extensionsи убедитесь, что он содержит следующую строку:
Otel syslog enabled: true
- Включите syslog на устройствах, которые хотите мониторить. Способ включения syslog зависит от устройства и его платформы, поэтому обратитесь к соответствующей документации.
Пример: настройка Rsyslog на Linux Ubuntu для пересылки syslog-логов на удалённый сервер
Добавьте следующую строку в файл конфигурации демона syslog (/etc/rsyslog.conf):
UDP *.* @<IP-адрес хоста АктивногоШлюза>:514 TCP *.* @@<IP-адрес хоста АктивногоШлюза>:601
Конструкция *.* указывает демону пересылать все сообщения на указанный АктивныйШлюз, прослушивающий предоставленный порт и IP-адрес. <IP-адрес хоста АктивногоШлюза> должен указывать на IP-адрес АктивногоШлюза с включённым syslog.
Проверка получения событий syslog АктивнымШлюзом
После того как ваши производители syslog начнут отправлять записи логов, откройте новейший файл astromkeysourceotelcollector.*.log в каталоге /var/lib/astromkey/remotepluginmodule/log/extensions/datasources/otelSyslog. Если АктивныйШлюз получает записи логов, вы должны увидеть записи, как в примере ниже:
[otelSyslog][otelSyslog][37448][err]LogRecord
#3[otelSyslog][oteiSyslog][37448][err]ObservedTimestamp: 2024-05-06 @9:52:10.6748723 +8000 UTC[otelSyslog][otelSyslog][37448][err]Timestamp: 2624-05-@6 11:52:16 +90e0 UTC[otelSyslog][otelsyslog][37448][err]SeverityText: info[otelSyslog][otelSyslog][37443][err]SeverityNumber: Info(9)[otelSyslog][otelSyslog][37448][err]Body: Str(<30>May 6 11:52:10 SOME-HOST systemd[1]: Finished Load Kernel Module fuse.)[otelSyslog][otelSyslog][3744
8][err]Attributes:[otelSyslog][otelSyslog][37448][err] -> priority: Int(3)[otelSyslog][otelSyslog][37448][err] -> facility: Int(3)[otelSyslog][otelSyslog][37448][err] -> appname: Str(systemd)[otelSyslog][otelSyslog][37448][err] -> proc_id: Str(1)[otelSyslog][otelSyslog][37443][err] -> log: Map({“source": “syslog"})[otelSyslog][otelSyslog][37443][err] -> hostname: Str(SOME-HOST)[otelSyslog][otelSyslog][37443][err] -> message: Str(Finished Load Kernel Module fuse.)[otelSyslog][otelSyslog][37448][err]Trace ID:[otelSyslog][otelSyslog][37448][err]Span ID:[otelSyslog][otelSyslog][37443][err]Flags: 0Дополнительную информацию по устранению неполадок получателя syslog см. в разделе Устранение неполадок Коллектора.
Готово! Теперь ваши события, загруженные через syslog, обогащены атрибутами, специфичными для хоста, и доступны в хранилище данных. Благодаря этому вы можете использовать эти записи syslog для анализа данных на основе ИИ Ключ-АСТРОМ, обработки логов или запросов через DQL.
Маскирование конфиденциальных данных
Загрузка syslog через АктивныйШлюз поддерживает Процессор преобразования OpenTelemetry и Язык преобразования OpenTelemetry (OTTL) для обработки данных syslog на периферии, до того как конфиденциальные данные покинут вашу сеть. Таким образом, вы можете маскировать или хешировать конфиденциальные данные в строках syslog, чтобы в Ключ-АСТРОМ не загружалась конфиденциальная информация. Предположим, номер кредитной карты виден в syslog следующим образом:
<14>2 2024-07-19T14:53:55Z example-host 0OOButHPbR 1234 - - New operation for CreditCard 1234567891011124
Чтобы замаскировать номер кредитной карты, добавьте следующую конфигурацию в узел processors файла syslog.yaml. Подробности см. в шаге Редактирование конфигурации получателя syslog в разделе Включение загрузки syslog.
processors:
transform/redact_credict_cart:
log_statements:
- context: log
statements:
- replace_pattern(body, "\\d{15,16}", "REDACTED")Функция replace_pattern заменяет номер кредитной карты строкой REDACTED. Номер кредитной карты в содержимом сопоставляется шаблоном body, "\\d{15,16}".
Добавление пользовательских атрибутов
Вы также можете изменить конфигурацию получателя syslog по умолчанию, если хотите сгруппировать набор различных устройств, настроив их на использование определённого порта. Например, используя очень общие сообщения логов, вы можете обогатить свои события syslog, отправляемые на определённые порты TCP, пользовательскими атрибутами, используя конфигурацию, как в примере ниже.
receivers:
syslog/f5:
tcp:
listen_address: "0.0.0.0:54526"
protocol: rfc5424
operators:
- type: add
field: attributes.log.source
value: syslog
- type: add
field: attributes.dt.ip_addresses
value: "1xx.xx.xx.xx1"
- type: add
field: attributes.instance.name
value: "ip-1xx-xx-x-xx9.ec2.internal"
- type: add
field: attributes.device.type
value: "f5bigip"
syslog/host:
tcp:
listen_address: "0.0.0.0:54527"
protocol: rfc5424
operators:
- type: add
field: attributes.log.source
value: syslog
- type: add
field: attributes.device.type
value: "ubuntu-syslog"Вы также можете использовать:
delete, чтобы исключить определённые атрибуты из загрузки.upsert, чтобы вставить новый атрибут в строку лога, если ключ ещё не существует, или обновить атрибут, если ключ существует. Например, если вы можете прочитать атрибутnet.peer.port, его значение используется дляcustom.remote.port. В противном случаеcustom.report.portне устанавливается.
attributes:
actions:
- key: custom.remote.port
from_attribute: net.peer.port
action: upsertДополнительную информацию о конфигурации атрибутов см. в разделе Процессор атрибутов.
Фильтрация данных
Вы можете фильтровать данные syslog, чтобы отбрасывать нерелевантные строки логов и сокращать потребление на периферии, до того как данные покинут вашу сеть. Например, давайте проигнорируем строки логов, классифицированные с помощью syslog facility 21. Ниже приведён пример такого сообщения syslog.
<21> 2024-07-19T14:53:55Z example-host 0OOButHPbR 1234 - - Spam mail
Добавьте следующий фильтр в файл syslog.yaml. Подробности см. в шаге Редактирование конфигурации получателя syslog в разделе Включение загрузки syslog.
filter/mail:logs: log_record:- attributes["syslog.facility"] == 21
В результате все строки логов с syslog facility 21 больше не загружаются.
Обработка логов с помощью парсеров технологических пакетов
Через OpenPipeline вы можете использовать и настраивать технологические пакеты. Технологический пакет — это библиотека парсеров (правил обработки), которые обрабатывают логи из различных технологий, таких как Java, .NET и Microsoft IIS. Парсеры помогают улучшить фильтрацию, устранение неполадок, метрики, оповещения и дашборды за счёт эффективного извлечения уровней логирования и релевантных атрибутов. Вы также можете использовать технологические пакеты для структурирования логов из технологий, которые не поддерживаются Ключ-АСТРОМ из коробки.
- Поиск
- Инструменты разработчика
- Базы данных
- Приложения
- NodeJS
- PHP
- .NET
- Go
- Брокеры сообщений
- Syslog
- Серверы
- Java
- Python
- Ruby
- Syslog
- Парсеры технологии Syslog
- Подробности
- Условие сопоставления технологии:
matchesValue(dt.openpipeline.source, 'extension:syslog') or matchesValue(Log.source, '/var/log/sys.log') - Процессоры:
- Syslog Cisco Switch C3800 processor
- Syslog 5424 processor
- Syslog 3164 processor
- Syslog Generic processor
- Syslog loglevel processor
- Populate status value based on loglevel
- Validate timestamp parsing
- Cleanup temporary fields
- Cleanup syslog_priority
- Cleanup syslog_proc_id
- Cleanup syslog_message_id
- Парсеры технологии Syslog
Обработка нестандартных syslog
Иногда даже загружаемые syslog-сообщения, следующие формату, определённому протоколами syslog, могут немного отклоняться от поддерживаемого стандарта. Например, они могут содержать лишний пробел или не иметь временной метки. Чтобы исправить это, преобразуйте такие записи syslog с помощью обработки OpenPipeline Ключ-АСТРОМ. Когда есть отличия от стандарта syslog, Коллектор OpenTelemetry не может правильно разобрать такие записи syslog при загрузке. Они всё равно пересылаются в Ключ-АСТРОМ, но не разбираются на конечной точке syslog. Из-за этого необработанные сообщения syslog видны в Ключ-АСТРОМ, например, в приложении «Логи» или «Блокноты». Можно ожидать ошибок такого вида:
Failed to process entry {"operator_id": "syslog_input_internal_parser", "operator_type": "syslog_parser", "error": "expecting a Stamp timestamp [col 5]", ...}Чтобы исправить эту проблему, используйте OpenPipeline для разбора нестандартных syslog с помощью встроенного технологического пакета Syslog.
- Создайте конвейер для обработки.
- Перейдите в Настройки > Обработка и контекстуализация > OpenPipeline > Логи > Конвейеры.
- Выберите Конвейер и введите имя для нового конвейера, например «Нестандартный конвейер syslog».
- Перейдите в Обработка > Процессор > Технологический пакет.
- Из списка выберите технологический пакет Syslog и нажмите Выбрать в правом нижнем углу страницы.
- Скопируйте условие сопоставления технологии из раздела Подробности.
- Нажмите Сохранить. Вы успешно создали конвейер и настроили его с помощью процессора для структурирования записей syslog с использованием технологического пакета Syslog. Новый конвейер появился в списке конвейеров.
- Направьте данные в конвейер.
- Перейдите в Настройки > Обработка и контекстуализация > OpenPipeline > Логи > Динамическая маршрутизация.
- Выберите Динамический маршрут и введите следующие данные:
- Имя: описательное имя для нового динамического маршрута, например «Нестандартный syslog».
- Условие сопоставления: условие сопоставления технологии, которое вы скопировали ранее:
matchesValue(dt.openpipeline.source, "extension:syslog"). - Конвейер: конвейер syslog, созданный вами ранее, например «Нестандартный конвейер syslog».
- Нажмите Добавить.
- Разместите новый динамический маршрут в правильной позиции в списке.
- Нажмите Сохранить. Вы успешно настроили новый динамический маршрут. Все логи syslog направляются в конвейер для обработки. Новый маршрут появился в списке маршрутов.
- Необязательно: добавьте пользовательские атрибуты. Вы можете обогатить syslog-сообщения при загрузке пользовательскими атрибутами, что позволит маршрутизировать различные потоки syslog в отдельные конвейеры. Подробности см. в разделе Добавление пользовательских атрибутов. Дополнительные инструкции и информацию по анализу структурированных логов см. в разделе Обработка логов с помощью парсеров технологических пакетов.
Устранение неполадок
Посетите сообщество Ключ-АСТРОМ для получения руководств по устранению неполадок, а также см. раздел Устранение неполадок управления логами и аналитики.