Похожие чаты

Всем привет, есть вопрос по дупликации сообщений в полях после

обработки grok фильтрами в Logstash.
Кейс следующий: множество сервисов посылает различного рода логи в Logstah с помощью Filebeat, в Logstash пайплайне определяется тип сервиса и на основании этого, к лог-лайну применяются grok фильтры, например:
filter {
if "api_access" in [service_name] {
grok {
match => { "message" => \[%{DATA:IP_address}\]\[%{DATA:User_ID}\]" }
}
grok {
match => { "message" => "\[%{DATA:IP_address}\]\[%{DATA:User_ID}\]\[%{DATA:Session_ID}\]" }
}
grok {
match => { "message" => "\[%{DATA:IP_address}\]\[%{DATA:User_ID}\]\[%{DATA:Session_ID}\]\[%{DATA:loglevel}\] ExecutionTime = %{NUMBER:exec_time}" }
}
grok {
match => { "message" => "\[%{DATA:IP_address}\]\[%{DATA:User_ID}\]\[%{DATA:Session_ID}\]\[%{DATA:loglevel}\]\[%{DATA:category}\](?<log_message>%{GREEDYDATA})" }
}
}
else if {check other services}
}
Примеры немного урезаны чтобы повысить читаемость.
Идея была такова: последний Grok фильтр является общим, т.е. он применится в последнюю очередь и всё равно обработает лог даже если предыдущие фильтры не подошли.
Как я понимаю, проблема в том, что к сообщению поочередно применятся каждый grok фильтр, в конечном итоге у меня несколько одинаковых значений в IP_address, User_ID, Session_ID, loglevel и т.д.
Пробовал использовать break_on_match с true/false, но результат идентичный, данные дуплицированы.
Подскажите пожалуйста, как это можно исправить сохранив при этом идею множества Grok фильтров?
Спасибо.

2 ответов

49 просмотров
Pavel-V Автор вопроса

Для потомков так сказать: Решил кейс, необходимо было правильно установить порядок Grok фильтров и заключить их в if условия с проверкой на наличие _grokparsefailure in [tags], т.е. если есть проблема с парсингом -> двигаемся дальше по условию, если нет, оставляем последнее отфильтрованное сообщение

Pavel-V Автор вопроса
Pavel V
Для потомков так сказать: Решил кейс, необходимо б...

Также добавлю, что можно обойтись и другим методом, более быстрым, распарсив логлайн сначала жадным Grok фильтром через {GREEDYDATA:log_message} например и затем уже обрабатывать данные из log_message в последующих Grok фильтрах.

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

Обсуждают сегодня

30500 за редактор? )
Владимир
47
any reference of this implementation?
BitBuddha
29
Ⓐrtto, [4/23/24 7:02 PM] Please explain more fully how it is not working exactly, and what are the steps you are taking, and what error messages come or what happens. Ⓐrtto, ...
Ezza Kezza
2
sounds like people have lost their kaspa on tradeogre... does this mean tradeogre not trustworthy?
Ezza Kezza
15
Страшнейшая правда про списки ЦБ. С первых дней жизни P2P сферы, молодые человеки, начитавшись законодательной базы и "внутренних" документов, решили, что им противостоит сер...
Foxcool
3
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
So much speculation in the last week. So much volatility in price. This is because Hedera has a GC that isn't using the network it's governing. Why aren't people asking why a...
Summit Seeker R
9
Anyone else having this error when trying to make transactions?
Datzel
11
Question: How viable is it to use Anvil as the backend infrastructure for managing a TradFi portfolio, while integrating Flexa for instant liquidity and payment solutions? Cou...
Kevin
2
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта