Как добавить значения к структурированным данным с помощью rsyslog?

Наши журналы отправляются из наших приложений в rsyslog, работающий на том же хосте. Затем Rsyslog пересылает сообщения в Sumo Logic.

Нам нужно добавить некоторые метаданные в наши сообщения журнала в поле структурированных данных. Некоторые из наших приложений уже используют структурированные данные, поэтому мы можем ' t просто замените свойство структурированных данных в нашем шаблоне.

Кроме того, свойство% STRUCTURED-DATA% включает открывающую и закрывающую скобки, поэтому мы не можем просто поместить что-то вроде [% STRUCTURED-DATA% newmetadata] в шаблоне

Согласно документации по замене свойств , мы можем использовать FromChar и ToChar или регулярные выражения. Я проверил источник и подтвердил, что ToChar не может вести обратный отсчет с конца.

Я использовал инструмент регулярных выражений rsyslog , чтобы создать следующий шаблон:

template (name = "metadata_syslog" type = "string" string = "<% PRI%> 1% TIMESTAMP ::: date-rfc3339%% HOSTNAME%% APP-NAME%% PROCID%% MSGID% [% STRUCTURED-DATA: R, ERE , 1, ПОЛЕ:mdc @ xxxxx category = "io.service.segment.IndexIO $ DefaultIndexIOHandler" thread = "foo_v2-incremental-persist"] Обработка файла [dim_device.drd]

инструмент регулярного выражения правильно проанализировал структурированные данные без скобок.

Когда я использовал этот шаблон в rsyslog, я получаю синтаксическую ошибку в части% PRI% (отладочный вывод):

Чтение токена: 9936.286569660: основной поток: вызывается LogMsg, msg: ошибка во время синтаксического анализа файла / etc / rsyslog.d / 21-logging.conf, в строке 4 или до нее: недопустимый символ '"' в определении объекта - есть ли где-нибудь недопустимая escape-последовательность? rsyslogd: ошибка во время синтаксического анализа файла /etc/rsyslog.d/21-logging.conf, в строке 4 или до нее: недопустимый символ '"' в определении объекта - есть ли где-то недопустимая escape-последовательность? [v8.17.0 попробуйте http: / /www.rsyslog.com/e/2207] 9936.286590559: основной поток: вызывается LogMsg, msg: ошибка во время синтаксического анализа файла /etc/rsyslog.d/21-logging.conf, в строке 4 или перед ней: недопустимый символ '<' в определении объекта - есть ли где-то недопустимая escape-последовательность? rsyslogd: ошибка во время синтаксического анализа файла /etc/rsyslog.d/21-logging.conf, в строке 4 или до нее: недопустимый символ '<' в определении объекта - есть ли где-то недопустимая escape-последовательность? [v8.17.0 попробуйте http://www.rsyslog.com/e/2207] 9936.286606008: основной поток: вызывается LogMsg, msg: ошибка во время синтаксического анализа файла /etc/rsyslog.d/21-logging.conf, в строке 4 или до нее: недопустимый символ '%' в определении объекта - есть ли где-то недопустимая escape-последовательность? rsyslogd: ошибка во время синтаксического анализа файла /etc/rsyslog.d/21-logging.conf, в строке 4 или до нее: недопустимый символ «%» в определении объекта - есть ли где-то недопустимая escape-последовательность? [v8.17.0 попробуйте http://www.rsyslog.com/e/2207] Следующий токен - это токен NAME () 9936.286632522: основной поток: вызывается LogMsg, msg: ошибка во время синтаксического анализа файла /etc/rsyslog.d/21-logging.conf, в строке 4 или до нее: синтаксическая ошибка токена 'PRI' rsyslogd: ошибка во время синтаксического анализа файла /etc/rsyslog.d/21-logging.conf, в строке 4 или до нее: синтаксическая ошибка токена 'PRI' [v8.17.0 попробуйте http://www.rsyslog.com/e/2207 ] Ошибка: появляется токен '=' () Сложить сейчас 0 1 5 28 52 Ошибка: появляется токен NAME () Сложить сейчас 0 1 5 28 Ошибка: появляется nterm nvlst () Сложить сейчас 0 1 5 Ошибка: выскакивает токен BEGIN_TPL () Сложить сейчас 0 1 Ошибка: появляется nterm conf () Сложить сейчас 0 Очистка: отказ от лексемы просмотра NAME () Сложить сейчас 0 9936.286780810: основной поток: вызывается LogMsg, msg: CONFIG ERROR: не удалось интерпретировать главный файл конфигурации '/etc/rsyslog.conf'. rsyslogd: ОШИБКА КОНФИГУРАЦИИ: не удалось интерпретировать главный файл конфигурации '/etc/rsyslog.conf'. [v8.17.0 попробуйте http://www.rsyslog.com/e/2207]

2
задан 31 March 2016 в 22:17
1 ответ

При настройке с использованием синтаксиса Rainerscript регулярные выражения нуждаются в дополнительном экранировании в соответствии с этим инструментом экранирования константной строки rainerscript .

Работал следующий шаблон:

template (name = "metadata_syslog" type = "string" string = "<% PRI% > 1% TIMESTAMP ::: date-rfc3339%% HOSTNAME%% APP-NAME%% PROCID%% MSGID% [% STRUCTURED-DATA: R, ERE, 1, FIELD: \\ [([^]] *) \ \] - end% extrafield = value]% msg% \ n ")

1
ответ дан 3 December 2019 в 12:41

Теги

Похожие вопросы