Я пытаюсь использовать Kibana для визуализации некоторых записей Bro, которые я добавил в Elasticsearch. Я загрузил записи примерно за 1 месяц (всего около 3 миллиардов записей и около 4 ТБ). Данные принимаются и индексируются без проблем. Я могу создать несколько простых визуализаций в Kibana, но когда я пытаюсь загрузить созданную мной панель инструментов (которая включает в себя 12 различных визуализаций и запускает как минимум столько же запросов Elasticsearch), я начинаю получать ошибки.
Я запускаю кластер Elasticsearch из 7 узлов с 5 узлами данных:
host001 192.168.1.1 18 8 0.00 - * Feron
host002 192.168.1.2 15 8 0.00 - - Dark Phoenix
host003 192.168.1.3 58 21 0.25 d - Starbolt
host004 192.168.1.4 37 23 0.07 d - Niles Van Roekel
host005 192.168.1.5 47 29 0.10 d - Angel Salvadore
host006 192.168.1.6 68 29 16.37 d - Candra
host007 192.168.1.7 56 29 14.36 d - Algrim the Strong
Основные моменты ошибок elasticsearch.log заключаются в следующем:
Набор этих строк для разных полей (прерыватели срабатывают при использовании слишком большого объема памяти для данных поля, что, я думаю, является ядром моей проблемы):
[2015-10-06 08:24:00,265][ПРЕДУПРЕЖДЕНИЕ ][indices.breaker ] [Эрик Слотер] [FIELDDATA] Новая используемая память 3752926600 [3,4 ГБ] из поля [AA] будет больше, чем настроенный прерыватель: 3745107148 [3,4 гб], ломая
Набор из них (кажется, даже с прерывателями, Elasticsearch все равно не хватает памяти):
И затем куча следующего, что, как я считаю, является попыткой поднять осколок реплики на другом узле (что затем приведет к сбою ЭТОГО узла и начнет цепную реакцию... Я избавился от этой ошибки с помощью устранение осколков реплик, но я бы предпочел лучшее решение)
[2015-10-06 08:38:35,707] [ПРЕДУПРЕЖДЕНИЕ] [action.bulk] [Эрик Слотер] Не удалось выполнить индексы: данные/запись/массовые [ы] на удаленной реплике [Tower][KxzEXAXKTCazjLzgOJE_aA][host005][ inet[/192.168.1.5:9300]]{master=false}[bro-2015-10-06][8] org.elasticsearch.transport.NodeDisconnectedException: [Tower][inet[/192.168.1.5:9300]][ индексы: данные/запись/объем [s][r]] отключены
Я понимаю, что одним из способов решения этой проблемы является горизонтальное масштабирование, но у меня нет такой роскоши, и я бы предпочел иметь возможность правильно использовать имеющийся у меня кластер (тем более, что я использую только 0,5 ТБ данных). и многое другое в наличии).
Я также исследовал несколько других вариантов, которые можно увидеть на моей карте ниже. Предполагается, что формат данных "doc_values" загружает данные поля на диск, но это не устраняет проблему полностью. Возможно, что-то еще съедает всю память, или виноваты мета-поля (_type, _id и т. д.) (поскольку я не нашел способа настроить их с «doc_values»). Я также использую глобальные порядковые номера для строковых полей.
Если кому-то нужна дополнительная информация о моем кластере или конфигурации, дайте мне знать! Я действительно в тупике, поэтому заранее спасибо за любую помощь, которую вы, ребята, можете предложить.
Вот шаблон сопоставления, который я использовал: http://pastebin.com/S8UVKRxZ
Вот мои конфиги elasticsearch.yml: http://pastebin.com/PaG0pBC5
Сколько записей у вас есть на индекс? Если количество записей на индекс исчисляется миллиардами, вы можете разбить свои индексы.