#logging #logstash #logstash-grok
#ведение журнала #logstash #logstash-grok
Вопрос:
Каков наилучший способ анализа такого рода журналов с помощью grok?
2019-03-15 14:42:38,910 INFO [SID:6cd1c3cc-7fb0-4a06-8d4d-e125382568ca] [CID:60c24e3e-c8f9-43e4-bedf-59e861bfabf9] [http-bio-8080-exec-3] [TariffRuleServiceImpl.java:569] no approach by ShouldAddApproachToFixedPrice checkbox : false
Я хотел бы получить такой результат:
{
"date": [
"19-03-15"
],
"time": [
"14:42:38,910"
],
"level": [
"INFO"
],
"SID": [
"6cd1c3cc-7fb0-4a06-8d4d-e125382568ca"
],
"CID": [
"60c24e3e-c8f9-43e4-bedf-59e861bfabf9"
],
"thread": [
"http-bio-8080-exec-3"
],
"class": [
"TariffRuleServiceImpl.java:569"
],
"message": [
"no approach by ShouldAddApproachToFixedPrice checkbox : false"
]
}
Но я застрял здесь: %{DATE:date} %{TIME:time} %{WORD:level} ...?
как получить данные внутри [...]
? Большое спасибо
Ответ №1:
Основная идея вашего шаблона Grok должна заключаться в том, чтобы пропустить квадратные скобки с обратной косой чертой, как, например [
. После того, как вы пропустили их, вы можете использовать обычный шаблон для сопоставления ваших элементов. Что-то вроде этого будет работать так, как вы хотите:
%{DATE:date} %{TIME:time} %{WORD:level} [SID:%{DATA:SID}] [CID:%{DATA:CID}] [%{DATA:thread}] [%{DATA:class}] %{GREEDYDATA:message}
Кроме того, поймите, что у вас есть два пробела между level
и [SID
, и это может привести к несоответствию вашего шаблона в зависимости от вашей конструкции.
Комментарии:
1. Большое спасибо, я не понял, что это за 2 пробела. Еще раз спасибо
2. Я не знал этого обозначения
SID:%{DATA:SID}
, я всегда использую%{SYNTAX:SEMANTIC}
. Не могли бы вы дать мне больше информации об этом? Спасибо3. Это просто точно соответствует
SID
слову в вашем журнале. Это базовое сопоставление символа с символом, поэтому вы можете избежать использования этой части и получить только то, что соответствует%{DATA:SID}
. Это также можно пропустить с помощью некоторого регулярного выражения, которое соответствует только тому, что появляется после двоеточия.