Как использовать grok для извлечения компонента Service url из журнала - PullRequest
2 голосов
/ 28 июня 2019

Я пытаюсь использовать выражение grok для извлечения URL-адреса службы и времени из выражения, опубликованного ниже, но поскольку существует несколько URL-адресов - мое решение часто получает неправильный URL-адрес - поэтому оно не совсем согласовано.

Я пробовал %{URIPATH:Path1}%{SPACE}%{URIPATH:ServiceURI}%{SYSLOGTIMESTAMP:time}

Это не работает вообще, но если я удаляю {SYSLOGTIMESTAMP:time} - это дает мне результат, который я ищу, но это не согласуется с другими журналами, поскольку они имеют другой формат. Поэтому я пытаюсь найти последовательный способ получить время и URL службы из журнала.

12 июня 04:27:35 1560306455 ВХОД: информация 22.244.42.41 12 июня 04:27:22 DPPRD01 [host_services] [0x80e0013a] [mpgw] [информация] source-https (IMS_SSL_29982): trans (2797190703) [12.6 .1.16]: получен HTTP / POST для 1.1 / services / NHgetInternetLimitsV1 от 10.6.17.166

Я ожидаю что-то вроде

время: 12 июня 04:27:35 сервис: NHgetInternetLimitsV1 или / services / NHgetInternetLimitsV1

1 Ответ

0 голосов
/ 28 июня 2019

Вы можете использовать

%{SYSLOGTIMESTAMP:time}.*POST for %{URIPATH:ServiceURI}

. Он извлечет

{
  "time": [
    [
      "Jun 12 04:27:35"
    ]
  ],
  "ServiceURI": [
    [
      "/services/NHgetInternetLimitsV1"
    ]
  ]
}

. Обратите внимание, что из-за части .*POST for последний URI службы после подстроки POST for будет сопоставлен.

...