rsyslog преобразовывают json для отправки текстовых сообщений на лету

У меня есть события входа приложения в формате JSON для позже структурированных запросов, и т.д. Теперь у меня есть задача зарегистрировать те же сообщения в простом тексте (CSV, вероятно), и я действительно не хочу регистрировать каждое событие дважды в обоих форматах.

Действительно ли возможно преобразовать в rsyslog? Я имею опцию трассировки выходного файла и передачи по каналу его к преобразователю и затем регистрируюсь с другим тегом, но это кажется субоптимальным.

Какие-либо другие идеи?

Спасибо!

0
задан 14 September 2015 в 21:01
1 ответ

Вы, возможно, захотите взглянуть на mmjsonparse . Похоже, она делает то, что вы хотите. Вам понадобится rsyslog 6.6 или выше (рекомендуется 7 или выше). Пример конфигов, найденный здесь достаточно хорошо объясняет это:

# load needed modules
module(load="imuxsock") # provides support for local system logging
module(load="imklog") # provides kernel logging support
module(load="mmjsonparse") #for parsing CEE-enhanced syslog messages

# try to parse structured logs
action(type="mmjsonparse")

# define a template to print field "foo"
template(name="justFoo" type="list") {
    property(name="$!foo")
    constant(value="\n") #we'll separate logs with a newline
}

# and now let's write the contents of field "foo" in a file
action(type="omfile"
    template="justFoo"
    file="/var/log/foo")

Вам все равно понадобится использовать логгер или какой-нибудь модуль любого языка, на котором написано ваше приложение, который взаимодействует с rsyslog для написания сообщений...

# logger '@cee: {"foo":"bar"}'
# cat /var/log/foo
bar

Если вы отправите неструктурированный лог, или недействительный JSON, то ничего не будет добавлено в лог.

.
1
ответ дан 4 December 2019 в 16:49

Теги

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