Назад | Перейти на главную страницу

Ошибка анализа Logstash Grok

Мне нужно сопоставить эту запись

2015/10/30 23:58:21 pid 22223 testuser@testserver.example.com 192.168.0.1 [p4/2012.2/LINUX26X86_64/536738] 'test-monitor show'

Чтобы соответствовать этому, я написал это Regex

P4_DATE (?>\d\d){1,2}\/(?:0[1-9]|1[0-2])\/(?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])
P4_TIME (?:2[0123]|[01]?[0-9])\:(?:[0-5][0-9])\:(?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)
P4_PID \b(?:[1-9][0-9]*)\b
P4_USER \b\w+\b
P4_HOSTNAME \b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\.?|\b)
P4_IP (?<![0-9])(?:(?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]))(?![0-9])

а затем в целом

 P4_MATCH %(P4_DATE:p4date} %{P4_TIME:p4time} pid %{P4_PID:p4pid} %{P4_USER:p4user}\@%{P4_HOSTNAME:p4client} %{P4_IP:p4remoteclient} [%{DATA:p4version}] \'%{DATA:p4action}\'" }

а затем сопоставить через

match => [ "message", "%{P4_MATCH}" ]   

Но по-прежнему получаю "_beats_input_codec_plain_applied, _grokparsefailure"

Я не эксперт по регулярным выражениям, но очень ценю любую помощь.

Я не вижу конкретной проблемы, но взгляните на https://grokdebug.herokuapp.com/ - создавайте шаблоны по одному полю за раз и смотрите, какой шаг приводит к сбою сопоставления.

У вас есть синтаксическая ошибка в p4date там, где на поле стоит скобка вместо фигурной скобки, она должна быть %{P4_DATE:p4date}.

Вам нужно избегать квадратных скобок для p4version который должен быть \[%{DATA:p4version}\]

Есть лишние персонажи " } после p4action которые нужно удалить.

ЭТОТ P4_MATCH %(P4_DATE:p4date} %{P4_TIME:p4time} pid %{P4_PID:p4pid} %{P4_USER:p4user}\@%{P4_HOSTNAME:p4client} %{P4_IP:p4remoteclient} [%{DATA:p4version}] \'%{DATA:p4action}\'" }

ДОЛЖЕН БЫТЬ ЭТОМ P4_MATCH %{P4_DATE:p4date} %{P4_TIME:p4time} pid %{P4_PID:p4pid} %{P4_USER:p4user}\@%{P4_HOSTNAME:p4client} %{P4_IP:p4remoteclient} \[%{DATA:p4version}\] \'%{DATA:p4action}\'

Интересный подход. Библиотека Grok, поставляемая с Logstash, имеет некоторые готовые шаблоны чтобы помочь вам избежать создания больших регулярных выражений, как вы это делаете. Возможно, вам больше повезет повторно использовать их разработки, чем создавать свои собственные.