2013-07-15 3 views
3

Я использую Logstash (с Kibana как пользовательский интерфейс). Я хотел бы извлечь некоторые поля из своих журналов, чтобы я мог их фильтровать на LHS пользовательского интерфейса.Извлечение полей в Logstash

Образец строки из моего журнала выглядит следующим образом:

2013-07-04 00:27:16.341 -0700 [Comp40_db40_3720_18_25] client_login=C-316fff97-5a19-44f1-9d87-003ae0e36ac9 ip_address=192.168.4.1 

В моем файле конф logstash, я поставил этот:

filter { 
    grok { 
     type => "mylog" 
     pattern => "(?<CLIENT_NAME>Comp\d+_db\d+_\d+_\d+_\d+)" 
    } 
} 

В идеале, я хотел бы, чтобы извлечь Comp40_db40_3720_18_25 (количество цифры могут меняться, но всегда будут по крайней мере 1 в каждом разделе, разделенном _) и client_login (также может быть client_logout). Затем я могу выполнить поиск CLIENT_NAME = Comp40 ... CLIENT_NAME = Comp55 и т. Д.

Я пропустил что-то в своей конфигурации, чтобы сделать это поле, которое я могу использовать в Kibana?

Спасибо!

+0

Регулярное выражение выглядит хорошо, хотя я хотел бы использовать что-то вроде ( Comp [_a-г \ d] +). Не могли бы вы поделиться тем, что не работает. Кстати, я предполагаю, что у вас также есть выход elasticsearch, определенный в вашем файле conf. –

+0

Да, я использую внедренный экземпляр ES в Logstash. Я предполагаю, что я ожидал, что если бы я нажал на @ fields.client_name на LHS (по столбцам), это покажет мне количество всех полей, которые он извлек, или даже их список, то есть Comp40 .. , Comp55 и т. Д. Имеет ли это смысл? – user2406467

+0

Я думаю, лучший пример того, что я хочу, будет похож на демо-версию Logstash/Kibana (http://demo.logstash.net/). Если вы нажмете на @message, вы можете увидеть разбивку 5 или около того верхних «категорий» для этого типа. – user2406467

ответ

4

Если у вас возникли трудности с правильной совпадением рисунка, использование Grok Debugger - отличное решение.

Для данной проблемы вы можете просто выделить свои данные поиска в другую переменную и сохранить дополнительные переменные цифры в другой (мусорной) переменной.

Например:

(?<SEARCH_FIELD>Comp\d+)%{GREEDYDATA:trash_variable}] 

(Пожалуйста, используйте Grok Debugger по вышеуказанному шаблону)

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