2015-10-21 3 views
0

Я пытаюсь взять данные журнала из пользовательского приложения, которое имеет четко определенный формат. Я пытаюсь выделить определенные части данных, используя фильтр grok, но мне не повезло. Вот образец журнала:Как вытащить определенные данные из сообщения в LogStash

- System.Data.SqlClient.SqlException (0x80131904): Arithmetic overflow error converting IDENTITY to data type int. 
Arithmetic overflow occurred. 

То, что я хотел бы сделать, это извлечь вне SqlException из строки. Вот Grok, что я использую:

grok{ 
    match => 
      { 
       "message" => 
       [ 
        "(?m)%{DATE:TIMESTAMP_DATE}%{SPACE}%{TIME:TIMESTAMP_TIME}%{SPACE}%{WORD:LOG_LEVEL}%{SPACE}(?<THREAD>[^\s]+)%{SPACE}(?<HOST>[^\s]+)%{SPACE}%{GREEDYDATA:MESSAGE}", 

        "(?<EXCEPTION>[.*]+)" 
       ] 
      } 
} 

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

TIMESTAMP_DATE,TIMESTAMP_TIME,LOG_LEVEL,THREAD,HOST,MESSAGE,EXCEPTION 

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

+0

Пожалуйста, помечать более тщательно. [tag: elki]! = [tag: elk-stack]. –

ответ

1

Если вы задаете несколько шаблонов grok по умолчанию, только взгляды проверяют шаблоны до тех пор, пока не встретится первое совпадение. Если вы хотите, чтобы соответствовать против обеих моделей, независимо от того, соответствует первым или вы не можете изменить поведение так:

grok{ 
     break_on_match => false 
     match => 
     { 
      "message" => 
      [ 
       "(?m)%{DATE:TIMESTAMP_DATE}%{SPACE}%{TIME:TIMESTAMP_TIME}%{SPACE}%{WORD:LOG_LEVEL}%{SPACE}(?<THREAD>[^\s]+)%{SPACE}(?<HOST>[^\s]+)%{SPACE}%{GREEDYDATA:MESSAGE}", 

       "(?<EXCEPTION>[.*]+)" 
      ] 
     } 
} 

Отъезд документы под: https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html#plugins-filters-grok-break_on_match

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