2014-11-12 2 views
10

Возможно ли с помощью Kibana (желательно блестящей новой версии 4 бета-версии) выполнять соединения на стороне приложения?Elasticsearch/Kibana: Присоединение на стороне приложения

Я знаю, что ES/Kibana не создан для замены реляционных баз данных, и, как правило, лучше денормализовать мои данные. Однако в этом случае использования это не лучший подход, так как индексный размер взрывается, а производительность снижается:

Я индексирую миллиарды документов, содержащих информацию о сеансе сетевых потоков следующим образом: source ip, source port, IP-адрес назначения, порт назначения, временную метку.

Теперь я также хочу собрать дополнительную информацию для каждого IP-адреса, например, геолокации, asn, обратного dns и т. Д. Добавление этой информации в каждый документ сеанса делает всю базу данных неуправляемой: есть миллионы документов с одним и тем же ip адреса и избыточность добавления такой же дополнительной информации ко всем этим документам приводит к массивному раздуванию и невосприимчивому опыту пользователей даже в кластере с сотнями гигабайт оперативной памяти.

Вместо этого я хотел бы создать отдельный индекс, содержащий только уникальные IP-адреса и метаданные, которые я собрал для каждого из них.

Вопрос: Как я могу анализировать свои данные с помощью кибаны? Для каждого документа, возвращаемого запросом, kibana должна выполнить поиск в ip-index и «фактически обогатить» каждый IP-адрес этой информацией. Нечто подобное добавление виртуальных полей так структура будет выглядеть следующим образом (на лету):

IP-адрес источника, порт источника, источник страна, источник Asn, источник FQDN

Я знаю, что это придет за счет нескольких запросов.

+0

Из любопытства вы используете doc_values ​​для своего неанализированного кеша поля? Лично, прежде чем я даже попытаюсь нормализовать свои данные, попробую переключиться на doc_values, чтобы узнать, помогло ли это. Вы также можете посмотреть глобальные ординалы (например, https://www.elastic.co/guide/en/elasticsearch/reference/1.6/fielddata-formats.html), но с высокими данными о мощности я на самом деле не думаю, что быть очень хорошей идеей .... – evanv

ответ

2

Я не думаю, что есть такая вещь, но, возможно, что вы могли бы играть вокруг с фильтрами:

  1. Вы создаете красивые и простые визуализации данных, что фильтр на различных типов и отображать только один простой данные.
  2. Вы помещаете эти различные визуализации в панель инструментов, чтобы отображать все данные, связанные с типом соединения.
  3. Вы можете использовать фильтры, как ваш присоединиться ключ и использовать всю приборную панель, , состоящую из различных панелей, чтобы получить представление о конкретном присоединиться ключами (ИПС в вашем случае, или сеансы)

Вам нужно создать 1 для каждого типа соединения, которое вы хотите создать.

Обратите внимание, что вам нужно будет согласовать имена и отображения полей в разных документах!

Держите нас в курсе, это интересная проблема, я хотел бы сейчас, как это получается с таким количеством документов.

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