2015-05-29 1 views
0

У меня есть небольшой Java приложение, которое загружает журналы, похожие на эти те ниже:я не знаю, как фильтровать мой файл журнала с Grok и logstash

Fri May 29 12:10:34 BST 2015 Trade ID: 2 status is :received 
Fri May 29 14:12:36 BST 2015 Trade ID: 4 status is :received 
Fri May 29 17:15:39 BST 2015 Trade ID: 3 status is :received 
Fri May 29 21:19:43 BST 2015 Trade ID: 3 status is :Parsed 
Sat May 30 02:24:48 BST 2015 Trade ID: 8 status is :received 
Sat May 30 08:30:54 BST 2015 Trade ID: 3 status is :Data not found 
Sat May 30 15:38:01 BST 2015 Trade ID: 3 status is :Book not found 
Sat May 30 23:46:09 BST 2015 Trade ID: 6 status is :received 

я хочу использовать ELK стек анализировать свои журналы и фильтровать их. Мне хотелось бы как минимум 3 фильтра: дата и время, торговый идентификатор и статус.

В фильтрующей части моего файла конфигурации logstash здесь является то, что я сделал:

filter { 
grok { 
    match => { "message" => "%{DAY} %{MONTH} %{DAY} %{TIME} BST %{YEAR} Trade ID: %{NUMBER:tradeId} status is : %{WORD:status}" } 
    } 

И на данный момент я не могу фильтровать журналы, как я хочу.

+0

Просьба уточнить текущее и ожидаемое поведение фильтра. Высказывание «это не работает» не помогает. – ryanyuyu

+0

Во-первых, ваш шаблон говорит: «status is:», но после двоеточия в ваших образцах данных нет места. Используйте отладчик grok. –

+0

На данный момент мой фильтр может видеть только метку времени. нет тегов относительно tradeId и статуса. И я хочу, чтобы на них тоже были теги. Я действительно начинаю в ELK, можете ли вы предоставить рабочий файл конфигурации? – BYoussef

ответ

0

У вас есть дополнительные промежутки между шаблоном и для статуса, вы хотите разобрать все сообщение, поэтому использование GREEEDYDATA вместо WORD - ваш выбор.

filter { 
    grok { 
     match => { "message" => "%{DAY:day} %{MONTH:month} %{MONTHDAY:monthday} %{TIME:time} BST %{YEAR:year} Trade ID: %{NUMBER:tradeId} status is :%{GREEDYDATA:status}" } 
    } 
} 

Для этой строки журнала:

Сб 30 мая 15:38:01 BST 2015 Trade ID: 3 Знакомлюсь: Книги не найдены

Вы будете в конечном итоге с json like:

{ 
    "message" => "Sat May 30 15:38:01 BST 2015 Trade ID: 3 status is :Book not found", 
    "@version" => "1", 
"@timestamp" => "2015-08-18T18:28:47.195Z", 
     "host" => "Gabriels-MacBook-Pro.local", 
     "day" => "Sat", 
    "month" => "May", 
    "monthday" => "30", 
     "time" => "15:38:01", 
     "year" => "2015", 
    "tradeId" => "3", 
    "status" => "Book not found" 

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