#elasticsearch #logstash #logstash-grok #filebeat
#elasticsearch #logstash #logstash-grok #filebeat
Вопрос:
Я пытаюсь использовать журналы для elasticSearch
использования fileBeat
(без Logstash)
Я хочу отправить следующий журнал в одном сообщении, но он разбивается на несколько сообщений, каждая строка становится отдельным сообщением
20161014 17:49:09.169 [ERROR] [Thread-2974] some.java.class.:70 - some.java.Exception: write failed. History: [requestHost=123-some.org.com, time=Fri Oct 14 17:49:05 GMT-07:00 2016, exception=java.net.SocketTimeoutException]
[requestHost=123-some.org.com, time=Fri Oct 14 17:49:07 GMT-07:00 2016, exception=java.net.SocketTimeoutException]
[requestHost=123-some.org.com, time=Fri Oct 14 17:49:09 GMT-07:00 2016, exception=java.net.SocketTimeoutException]
Tried 3 times
at java.lang.Thread.run(Thread.java:745)
20161014 17:49:09.169 [ERROR] [Thread-3022]
Я хочу объединить все строки между 2 датами (1-я и последняя строка)
Вот мой filebeat.yml
фрагмент
paths:
- /test.log
multiline.pattern: '^[0-9]{8}'
multiline.negate: true
multiline.match: after
Мне нужно знать, правильно regex
Я пытаюсь решить это без использования logstash
Комментарии:
1. Экранируя открытую скобку, вы удаляете ее мощность и сопоставляете с буквенной скобкой.
2. Я попробовал некоторые регулярные выражения на go playground (из документации filebeat), они работают, но на практике все они вызывают у меня одну и ту же проблему, я еще не ниндзя регулярных выражений, похоже, мне нужно потратить некоторое время и разобраться с этим или просто использовать logstash с фильтром GROK
3. Конфигурация с точками, представленная в этом вопросе, сработала для меня. Версия Filebeat — 6.8.14
Ответ №1:
Использование следующей конфигурации Filebeat с предоставленным образцом журнала приводит к двум событиям, где каждое сообщение начинается с даты.
Я запустил ./filebeat -c filebeat.yml -e -v -d "*"
конфигурацию ниже для тестирования. Я также протестировал шаблон на игровой площадке Go.
filebeat.yml:
filebeat:
prospectors:
- paths: ["input.txt"]
multiline:
pattern: '^[0-9]{8}'
negate: true
match: after
output:
console:
pretty: false
Вывод:
{
"@timestamp": "2016-10-17T14:13:31.292Z",
"beat": {
"hostname": "host.example.com",
"name": "host.example.com",
},
"input_type": "log",
"message": "20161014 17:49:09.169 [ERROR] [Thread-2974] some.java.class.:70 - some.java.Exception: write failed. History: [requestHost=123-some.org.com, time=Fri Oct 14 17:49:05 GMT-07:00 2016, exception=java.net.SocketTimeoutException]n[requestHost=123-some.org.com, time=Fri Oct 14 17:49:07 GMT-07:00 2016, exception=java.net.SocketTimeoutException]n[requestHost=123-some.org.com, time=Fri Oct 14 17:49:09 GMT-07:00 2016, exception=java.net.SocketTimeoutException]n Tried 3 timesn at java.lang.Thread.run(Thread.java:745)",
"offset": 519,
"source": "input.txt",
"type": "log"
}
{
"@timestamp": "2016-10-17T14:17:21.686Z",
"beat": {
"hostname": "host.example.com",
"name": "host.example.com",
},
"input_type": "log",
"message": "20161014 17:49:09.169 [ERROR] [Thread-3022]",
"offset": 563,
"source": "input.txt",
"type": "log"
}
Комментарии:
1. Я не вижу » n», и сообщения по-прежнему разбиты на части, это журналы log4j, как вы думаете, это имеет какое-то значение?
2. Какую версию Filebeat вы используете? Какая ОС? Я попробовал это на 5.0-rc1 в OS X, и все сработало нормально. Я не думаю, что тот факт, что они являются журналами log4j, имеет какое-либо значение.
3. Я использую
filebeat version 1.3.1 (amd64)
ubuntu 14.04.03. Если я смогу найти / записать регулярное выражение, которое начинается^[0-9]{8}
и заканчивается при следующем появлении того же^[0-9]{8}
, как вы думаете, это может решить мою проблему?4. Я протестировал конфигурацию, которую я предоставил в версии 1.3.1, и она работает с приведенным вами образцом журнала. КСТАТИ, конфигурация, которую вы опубликовали в своем вопросе, недействительна для 1.3.1, поскольку отступ неправильный, и вы не можете использовать пунктирные клавиши, подобные
multiline.pattern
. Пожалуйста, попробуйте точную конфигурацию и команды, приведенные в моем ответе. Если они не работают, можете ли вы предоставить более крупный образец журнала с примерами того, как строки должны быть сгруппированы в события.5. Огромное спасибо за настойчивые попытки решить мою проблему, все встало на свои места после избавления от точечных ключей