Связь с Elasticsearch кластером oбрывается когда пытаюсь открыть дешбоард в кибане


(Andrew) #1

Здравствуйте! Такая ситуация: OS X 10.10.4, Elasticsearch 1.6.0, Logstash 1.5.2, Kibana 4.1.0 - все из Homebrew. Использую для анализа результатов из Suricata IDPS.
Демоны работают нормально, кластер вроде здоров:

$ curl -XGET http://127.0.0.1:9200/_cluster/health?pretty
{
  "cluster_name" : "elasticsearch_brew",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 146,
  "active_shards" : 146,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0
}

но как только я захожу в Kibana Dashboards - она пытается загрузить их и тут связь с кластером обрывается - Логстэш тут же перестает парсить данные, а Кибана выдает:

Error: Bad Gateway
at respond (https://www.server.kibana//index.js?_b=:85279:15)
at checkRespForFailure (https://www.server.kibana//index.js?_b=:85247:7)
at https://www.server.kibana//index.js?_b=:83885:7
at wrappedErrback (https://www.server.kibana//index.js?_b=:20902:78)
at wrappedErrback (https://www.server.kibana//index.js?_b=:20902:78)
at wrappedErrback (https://www.server.kibana//index.js?_b=:20902:78)
at https://www.server.kibana//index.js?_b=:21035:76
at Scope.$eval (https://www.server.kibana//index.js?_b=:22022:28)
at Scope.$digest (https://www.server.kibana//index.js?_b=:21834:31)
at Scope.$apply (https://www.server.kibana//index.js?_b=:22126:24)

Плагины Bigdesk и head при попытке обновить страницу долго думают показывая cluster health status: RED

Kibana_error.log:

[Sat Jul 04 00:09:35.411074 2015] [proxy:error] [pid 39308] [client 127.0.0.1:55168] AH00898: Error reading from remote server returned by /elasticsearch/_msearch, referer: https://www.server.kibana//

/usr/local/var/log/elasticsearch/elasticsearch_brew.log:

[2015-07-04 00:26:12,517][DEBUG][action.search.type       ] [Carnage] [logstash-2015.06.24][3], node[ys_yldD3RISn21emE5KSaA], [P], s[STARTED]: Failed to execute [org.elasticsearch.action.search.SearchRequest@6d667b4] lastShard [true]
    org.elasticsearch.ElasticsearchException: java.lang.OutOfMemoryError: Java heap space
        at org.elasticsearch.index.fielddata.plain.AbstractIndexFieldData.load(AbstractIndexFieldData.java:80)
        at org.elasticsearch.search.aggregations.support.ValuesSource$MetaData.load(ValuesSource.java:88)
        at org.elasticsearch.search.aggregations.support.AggregationContext.bytesField(AggregationContext.java:180)
        at org.elasticsearch.search.aggregations.support.AggregationContext.valuesSource(AggregationContext.java:143)
        at org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory.create(ValuesSourceAggregatorFactory.java:53)
        at org.elasticsearch.search.aggregations.AggregatorFactories.createAndRegisterContextAware(AggregatorFactories.java:53)
        at org.elasticsearch.search.aggregations.AggregatorFactories.createSubAggregators(AggregatorFactories.java:71)
        at org.elasticsearch.search.aggregations.Aggregator.<init>(Aggregator.java:191)
        at org.elasticsearch.search.aggregations.bucket.BucketsAggregator.<init>(BucketsAggregator.java:39)
        at org.elasticsearch.search.aggregations.bucket.geogrid.GeoHashGridAggregator.<init>(GeoHashGridAggregator.java:53)
        at org.elasticsearch.search.aggregations.bucket.geogrid.GeoHashGridParser$GeoGridFactory.create(GeoHashGridParser.java:132)
        at org.elasticsearch.search.aggregations.bucket.geogrid.GeoHashGridParser$GeoGridFactory.create(GeoHashGridParser.java:105)
        at org.elasticsearch.search.aggregations.support.ValuesSourceAggregatorFactory.create(ValuesSourceAggregatorFactory.java:54)
        at org.elasticsearch.search.aggregations.AggregatorFactories.createAndRegisterContextAware(AggregatorFactories.java:53)
        at org.elasticsearch.search.aggregations.AggregatorFactories.createTopLevelAggregators(AggregatorFactories.java:157)
        at org.elasticsearch.search.aggregations.AggregationPhase.preProcess(AggregationPhase.java:79)
        at org.elasticsearch.search.query.QueryPhase.execute(QueryPhase.java:100)
        at org.elasticsearch.search.SearchService.loadOrExecuteQueryPhase(SearchService.java:289)
        at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:300)
        at org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:231)
        at org.elasticsearch.search.action.SearchServiceTransportAction$5.call(SearchServiceTransportAction.java:228)
        at org.elasticsearch.search.action.SearchServiceTransportAction$23.run(SearchServiceTransportAction.java:559)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
    Caused by: org.elasticsearch.common.util.concurrent.ExecutionError: java.lang.OutOfMemoryError: Java heap space
        at org.elasticsearch.common.cache.LocalCache$Segment.get(LocalCache.java:2201)
        at org.elasticsearch.common.cache.LocalCache.get(LocalCache.java:3937)
        at org.elasticsearch.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4739)
        at org.elasticsearch.indices.fielddata.cache.IndicesFieldDataCache$IndexFieldCache.load(IndicesFieldDataCache.java:167)
        at org.elasticsearch.index.fielddata.plain.AbstractIndexFieldData.load(AbstractIndexFieldData.java:74)
        ... 24 more
    Caused by: java.lang.OutOfMemoryError: Java heap space

Ребята, подскажите пожалуйста в чем проблема и как ее можно решить? Спасибо за любую помощь!


(Igor Motov) #2

Проблема в этом:

Серверу elasticsearch не хватает памяти, что бы обработать все данные, которые необходимы для показа страницы. По умолчанию, elasticsearch использует только 1G памяти и этого часто бывает не достаточно. Изменить количество доступной серверу памяти можно с помощью переменной окружения ES_HEAP_SIZE.


(Andrew) #3

@Igor_Motov, Спасибо большое за ответ. Скажите пожалуйста, а где ее можно(и лучше) указать?
И как понять сколько памяти оптимально выделить серверу... и в каком формате записывать переменную? Вобщем если можно - пример


(Igor Motov) #4

Это зависит от того, как Вы сервер запускаете.


(Andrew) #5

Все нашел! Спасибо... Задал значение в ЛанчАгенте… Может кому-то поможет:
в ~/Library/LaunchAgents/homebrew.mxcl.elasticsearch.plist добавил:

<key>EnvironmentVariables</key>
<dict>
  <key>ES_HEAP_SIZE</key>
  <string>5g</string>
</dict>

(system) #6