2015-04-27 2 views
1

Я новичок в Logstash, и я просмотрел многочисленные примеры шаблонов grok, и я все еще пытаюсь добиться своей цели, которая заключается в анализе следующего JSON отформатированного журнала событий.grok pattern for log event

{ 
    "@fields": { 
    "level": "DEBUG", 
    "mdc": {}, 
    "file": "SearchServiceImpl.java", 
    "class": "com.blah.blah.service.impl.SearchServiceImpl", 
    "line_number": "767", 
    "method": "getUserSavedSearches" 
    }, 
    "@timestamp": "2015-04-24T12:30:37.953+01:00", 
    "@message": "username: admin sessionid: 56cR73aBpuIBzRgIElzLUtJJ method_name: getUserSavedSearches", 
    "@source_host": "Kens-MacBook.local" 
} 

В частности, я хотел бы извлечь идентификатор сеанса и имя пользователя. Я также надеюсь, что я могу указать на подробную документацию, объясняющую, как использовать Grok. (Я прочитал доступные документы о logstash и т. Д.). Любая помощь будет принята

ответ

2

Во-первых, ваш формат журнала находится в JSON. Таким образом, в вашей конфигурации вы можете использовать кодек json для чтения журнала. Затем используйте GROK, чтобы проанализировать имя пользователя & идентификатор сеанса.

input { 
    stdin{ 
     codec => json 
    } 
} 

filter { 
    grok { 
     match => [ 
      "@message", "username: %{USERNAME:username} sessionid: %{NOTSPACE:sessionId} method_name: %{WORD:method_name}" 
     ] 
    } 
} 

output { 
    stdout { codec => rubydebug } 
} 

Для более подробного документа, вы можете использовать this site, чтобы помочь вам попробовать ваш шаблон ГРОК и this site для шаблона ГРОК, который можно использовать.

Вот пример вывода:

{ 
     "@fields" => { 
       "level" => "DEBUG", 
       "mdc" => {}, 
       "file" => "SearchServiceImpl.java", 
       "class" => "com.blah.blah.service.impl.SearchServiceImpl", 
     "line_number" => "767", 
      "method" => "getUserSavedSearches" 
    }, 
     "@timestamp" => "2015-04-24T19:30:37.953+08:00", 
     "@message" => "username: admin sessionid: 56cR73aBpuIBzRgIElzLUtJJ method_name: getUserSavedSearches", 
    "@source_host" => "Kens-MacBook.local", 
     "@version" => "1", 
      "host" => "BEN_LIM", 
     "username" => "admin", 
     "sessionId" => "56cR73aBpuIBzRgIElzLUtJJ", 
    "method_name" => "getUserSavedSearches" 
} 
+0

спасибо за ваш ответ, к сожалению, это не сработало. Я попробовал его в отладчике grok с ответом «нет ответа». выдержка из вывода прилагается для справки. –

+0

"@timestamp" => "2015-04-27T08: 43: 43.839Z", "@message" => "имя пользователя: admin sessionid: -eGqqj0ZsJK-Zgqz4i-utppH имя_пользователя: getSavedSearch", "@source_host" = > «Kays-MacBook.local», «@version» => «1», «type» => «log4j», «host» => «Kenss-MacBook.local», «путь» => "/opt/jboss-eap-6.3/standalone/log/Service.log", "tags" => [ [0] "_grokparsefailure" ] } –

+0

Я обновил свой ответ. Это потому, что у sessionId есть другой символ, у вас должен быть шаблон NOTSPACE вместо WORD. –

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