Как извлечь поле, которое содержится внутри другого поля, через конфигурацию logstash grok - PullRequest
0 голосов
/ 10 октября 2018

Допустим, у меня есть следующее сообщение журнала, которое я пытаюсь перехватить с помощью фильтра grok:

"2018-10-02 18:00:00 INFO THIS_IS_A_TEST_MESSAGE"

Я хочу извлечь «THIS_IS_A_TEST_MESSAGE» в качестве поля, но затем дополнительно хочу захватить только слово TEST в качестве другого поля.Мне нужны они оба для создания некоторых визуализаций Kibana, но для агрегации они должны быть отдельными.

Текущий у меня грок выглядит примерно так:

match => { "message" => "%{TIME:time} %{LOGLEVEL:logLevel} %{WORD:payload}" }

Так же, как у меня естьэто создает 3 поля: time, logLevel и payload;тем не менее, мне нужно, чтобы захватить 4 поля, но 4-е поле находится в поле полезной нагрузкиКак я могу настроить свой Grok для этого?

Я очень плохо знаком со стеком ELK, поэтому все еще привыкаю писать эти конфиги.

1 Ответ

0 голосов
/ 11 октября 2018

Используйте другой фильтр grok в поле payload.

match => { "payload" => "[^_]*_[^_]*_[^_]*_%{DATA:data}_" }

Я не знаю, какие данные вы хотите извлечь.Я просто взял данные между третьим и четвертым _.

С предоставленными вами данными я получаю: data: TEST

...