Grok анализирует данные в квадратных скобках - PullRequest
0 голосов
/ 15 марта 2019

Каков наилучший способ разбить этот вид бревна с помощью 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 Ответ

0 голосов
/ 19 марта 2019

Основная идея вашего шаблона Grok должна состоять в том, чтобы пропустить квадратные скобки с обратной косой чертой, как, например, \[.После того, как вы пропустили их, вы можете использовать обычный шаблон, чтобы соответствовать вашим элементам.Нечто подобное будет работать так, как вы хотите:

%{DATE:date} %{TIME:time} %{WORD:level}  \[SID:%{DATA:SID}\] \[CID:%{DATA:CID}\] \[%{DATA:thread}] \[%{DATA:class}] %{GREEDYDATA:message}

Кроме того, помните, что у вас есть два пробела между level и [SID, и это может привести к тому, что ваш шаблон не будет совпадать в зависимости от вашей конструкции,

...