Logstash не будет принимать мою мультилинию даже с (? M)
Таким образом, у меня есть это сообщение журнала от маршрутизатора Cisco:
Apr 15 10:51:26.824: %CRYPTO-4-PKT_REPLAY_ERR: decrypt: replay check failed
connection id=777, sequence number=218932
Apr 15 11:00:03.261: %CRYPTO-4-PKT_REPLAY_ERR: decrypt: replay check failed
connection id=777, sequence number=231456
Apr 15 11:05:00.525: %CRYPTO-4-PKT_REPLAY_ERR: decrypt: replay check failed
connection id=789, sequence number=6509
Grok анализирует бит до тех пор, пока \ r \ n просто отлично, но после этого делает новую запись с ошибкой синтаксического анализа. У меня есть (? M) перед регулярным выражением, и оно работало до того, как я обновился до logstash 1.5.5.
Что я нахожу действительно странным, так это то, что, используя http://grokconstructor.appspot.com/ я не могу заставить его соответствовать всему, даже с (? M) в начале или (?<message>(.|\r|\n)*)
в конце. На rubular.com оба работают просто отлично, но на grokconstructor и в моем конфиге они перестают совпадать на новой строке.
1 ответ
В вашем конфиге попробуйте использовать:
- многострочный фильтр ( https://www.elastic.co/guide/en/logstash/current/plugins-filters-multiline.html)
- многострочный кодек ( https://www.elastic.co/guide/en/logstash/current/plugins- ОБНОВЛЕНО #1: многострочный {
pattern => "^%{CISCOTAG}.*"
negate => "true"
what => "предыдущий" period_flush => false
}
Это запустит новое событие журнала, когда строка начинается с текста, соответствующего шаблону% {CISCOTAG} (например, апрель,...). Все остальные строки (например, начинающиеся с пробела) будут добавлены к предыдущему событию.