Я использую 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?
Спасибо!
Регулярное выражение выглядит хорошо, хотя я хотел бы использовать что-то вроде ( Comp [_a-г \ d] +). Не могли бы вы поделиться тем, что не работает. Кстати, я предполагаю, что у вас также есть выход elasticsearch, определенный в вашем файле conf. –
Да, я использую внедренный экземпляр ES в Logstash. Я предполагаю, что я ожидал, что если бы я нажал на @ fields.client_name на LHS (по столбцам), это покажет мне количество всех полей, которые он извлек, или даже их список, то есть Comp40 .. , Comp55 и т. Д. Имеет ли это смысл? – user2406467
Я думаю, лучший пример того, что я хочу, будет похож на демо-версию Logstash/Kibana (http://demo.logstash.net/). Если вы нажмете на @message, вы можете увидеть разбивку 5 или около того верхних «категорий» для этого типа. – user2406467