Я настроил syslog-ng 3.25.1 для чтения сообщений журнала из файла, анализа их как JSON и пересылки их в кластер ElasticSearch.
Это хорошо работает, когда сообщения правильно отформатированы как JSON, но в случаях, когда json-parser
не удается найти действительный объект JSON в моем сообщении журнала, я хотел бы обернуть сообщение журнала, отличное от JSON, в объект JSON (через format-json
template) и отправьте его в другой индекс в ElasticSearch.
Я это понимаю json-parser
может действовать как фильтр для передачи только действительных сообщений JSON. Есть ли способ создать фильтр, который пропускает только недействительным Сообщения JSON?
Я не уверен, что это лучший способ заставить его работать, но в итоге я использовал if / else управление потоком в моем пути регистрации, как показано ниже.
source s_json_source {
...
};
destination d_valid_json {
... // includes template definition
};
destination d_invalid_json {
... // includes template definition that wraps the ${MSG} in a timestamped json object
};
parser p_json {
json-parser();
};
log {
source(s_json_source)
if {
parser(p_json);
destination(d_valid_json);
} else {
destination(d_invalid_json);
};
};