Данные по Elasticsearch/Kibana слишком велики
У меня есть небольшой кластер ELK, который находится в тестировании. Веб-интерфейс kibana чрезвычайно медленный и вызывает множество ошибок.
Кафка = > 8.2
Logstash = > 1.5rc3 (последние)
Elasticsearch = > 1.4.4 (последняя)
Kibana = > 4.0.2 (последняя)
Узлы elasticsearch имеют 10 ГБ оперативной памяти каждый на Ubuntu 14.04. Я забираю между 5 и 20 ГБ данных в день.
Запуск даже простого запроса, причем всего 15 минут данных в веб-интерфейсе kibana занимает несколько минут и часто вызывает ошибки.
[FIELDDATA] Data too large, data for [timeStamp] would be larger than limit of [3751437926/3.4gb]]
![enter image description here]()
Эти ошибки о неудачах осколков появляются только в кибане. Согласно всем другим плагинам (head, kopf), обрезки elasticsearch совершенно прекрасны, а кластер зеленый.
Я проверил группу google, IRC и посмотрел на переполнение стека. Кажется, единственное решение - увеличить баран. Я увеличил баран на своих узлах дважды. Хотя это, кажется, исправить это на день или два, проблема быстро возвращается.
Другие решения, такие как очистка кеша, не имеют долгосрочных улучшений.
curl -XPUT 'http://elastic.example.com:9200/cache/clear?filter=true'
curl -XPOST 'http://elastic.example.com:9200/_cache/clear' -d '{ "fielddata": "true" }'
В соответствии с плагином KOPF количество кучи пространства обычно приближается к 75% на полностью незанятом кластере. (Я единственный в компании, использующей его). 3 Узлы с 10 ГБ оперативной памяти должны быть более чем достаточны для количества данных, которые у меня есть.
Я также попытался настроить выключатели как предложенный в этом блоге.
PUT /_cluster/settings -d '{ "persistent" : { "indices.breaker.fielddata.limit" : "70%" } }'
PUT /_cluster/settings -d '{ "persistent" : { "indices.fielddata.cache.size" : "60%" } }'
Как я могу предотвратить эти ошибки и исправить экстремальную медлительность в кибане?
https://github.com/elastic/kibana/issues/3221
elasticsearch получает слишком много результатов, нужна помощь в фильтрации запроса
http://elasticsearch-users.115913.n3.nabble.com/Data-too-large-error-td4060962.html
Обновление
У меня около 30 дней индексов из logstash. 2x Репликация так, чтобы она составляла 10 осколков в день.
![enter image description here]()
Update2
Я увеличил барабан каждого node до 16 ГБ (всего 48 ГБ), и я также обновил его до 1.5.2.
![enter image description here]()
Кажется, что проблема исправлена на день или два, однако проблема возвращается.
![enter image description here]()
Update3
Эта статья в блоге от эластичного сотрудника имеет хорошие советы, объясняющие, что может вызвать эти проблемы.
Ответы
Ответ 1
Вы индексируете большое количество данных (если вы добавляете/создаете от 5 до 20 ГБ в день), а ваши узлы довольно малы в памяти. Вы не увидите никаких проблем с индексированием, но извлечение данных по одному или нескольким индексам вызовет проблемы. Имейте в виду, что Kibana запускает запросы в фоновом режиме, и сообщение, которое вы получаете, в основном говорит что-то вроде "Я не могу получить эти данные для вас, потому что мне нужно поместить больше данных в память, чем я имею в наличии для запуска этих запросов".
Есть две вещи, которые относительно просты в использовании и должны решить ваши проблемы:
- Обновление до ElasticSearch 1.5.2 (Основные улучшения производительности)
- Когда вам не хватает памяти, вам действительно нужно использовать doc_values во всех ваших сопоставлениях, поскольку это значительно уменьшит размер кучи.
Ключ лежит в doc_values . Вам нужно изменить свои сопоставления, чтобы установить для этого свойства значение true. Пример сырой нефти:
[...],
"properties": {
"age": {
"type": "integer",
"doc_values": true
},
"zipcode": {
"type": "integer",
"doc_values": true
},
"nationality": {
"type": "string",
"index": "not_analyzed",
"doc_values": true
},
[...]
Обновление ваших сопоставлений приведет к тому, что будущие индексы учтут это, но вам нужно будет повторно индексировать существующие полностью для doc_values для применения к существующим индексам. (Подробнее см. сканирование/прокрутка и это в блоге.)
Шкала справки Replicas, но столкнется с теми же проблемами, если вы не уменьшите размер кучи каждого node. Что касается количества осколков, которые у вас есть в настоящее время, это может быть необязательным и оптимальным, но я не считаю это основной причиной ваших проблем.
Имейте в виду, что упомянутые выше рекомендации позволяют Kibana запускать запросы и показывать вам данные. Скорость будет сильно опираться на установленные вами диапазоны дат, на машинах, которые у вас есть (CPU, SSD и т.д.), Так и на памяти, доступной на каждом node.
Ответ 2
Основные идеи включают:
- Меньше открытых индексов.
- Меньше осколков.
- Использование doc_values.
Oh и:
- Больше оперативной памяти.