2015-08-18 2 views
0

Настройка ELK очень проста до тех пор, пока вы не нажмете фильтр logstash. У меня есть 10 полей, разделенных логом. Я, возможно, некоторое поле пустым, но я уверен, что будет 10 полей:Как определить шаблон grok для сообщения журнала с разделителями каналов?

7/5/2015 10:10:18 AM|KDCVISH01| 
|ClassNameUnavailable:MethodNameUnavailable|CustomerView|xwz261|ef315792-5c41-4bdf-aa66-73317e82e4d6|52|6182d1a1-7916-4874-995b-bc9a23437dab|<Exception> 
afkh akla 487234 &*<Exception> 

Q: 1- Я смущен, как Grok или регулярное выражение шаблон будет выбрать только поле, которое я ищу, а не похожий матч из другого поля. Например, какова гарантия того, что шаблон DATESTAMP выбирает только первое значение, а не временную метку, присутствующую в последнем поле (похоронен в трассировке стека)?

2- Есть ли способ определить позиционное сопоставление? Например, 1st fiels - dateTime, 2nd - имя машины, 3rd - имя класса и т. Д. Это позволит убедиться, что в Kibana отображаются поля, независимо от значения поля или нет.

ответ

0

Я знаю, что я немного поздно, но вот простое решение, которое я использую,

заменить | с space

вариант 1:

filter { 
    mutate { 
      gsub => ["message","\|"," "] 
    } 

    grok { 
      match => ["message","%{DATESTAMP:time} %{WORD:MESSAGE1} %{WORD:EXCEPTION} %{WORD:MESSAGE2}"] 
    } 
} 

вариант 2: кроме |

filter { 


     grok { 
       match => ["message","%{DATESTAMP:time}\|%{WORD:MESSAGE1}\|%{WORD:EXCEPTION}\|%{WORD:MESSAGE2}"] 
     } 
    } 

работает нормально: http://grokdebug.herokuapp.com/. проверьте здесь.

Смежные вопросы