Оригинальный адрес:Блог HaifeiWu
адрес блога:www.hchstudio.cn
Добро пожаловать в перепечатку, пожалуйста, указывайте автора и источник, спасибо!
Платформа анализа данных, которая до этого нормально работала, не заметила, что данные индекса журнала не генерируются в течение определенного периода времени, это длилось более n дней Текущее состояние: одиночная машина, Elasticsearch (далее ES ) один узел (пустой кластер), 1000 + осколков, размером около 200G.
Устранение неполадок
Память сервера, проверка состояния процессора
использоватьtop
Посмотреть серверcpu
, использование памяти и т. д., как показано ниже (загрузка ЦП серверным приложением ES хоста в то время превышала 90%, должна быть проблема)
Использование памяти также очень велико (в то время на сервере памяти 8G у арендодателя оставалось всего около 150 МБ свободного места, что должно быть проблемой ES).
Статус кластера ES
Проверьте значение работоспособности кластера ES и обнаружите, чтоstatus
заred
, это состояние означает, что некоторые первичные сегменты недоступны, а текущее состояние арендодателя заключается в том, что исторические данные можно проверить, но нельзя создать новые.index
данные.
curl http://localhost:9200/_cluster/health?pretty
{
"cluster_name" : "elasticsearch",
"status" : "red",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 663,
"active_shards" : 663,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 6,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 99.10313901345292
}
Глядя на статус каждого индекса, обнаруживается, что большинство статусов индексовred
, в недоступном состоянии из-за слишком большого количества данных открытого индекса, в результате чего ES занимает много ресурсов ЦП и памяти, что делаетlogstash
Если он недоступен, новые данные индекса не могут быть созданы, что приводит к потере данных.
curl -XGET "http://localhost:9200/_cat/indices?v"
health status index pri rep docs.count docs.deleted store.size pri.store.size
red open jr-2016.12.20 3 0
red open jr-2016.12.21 3 0
red open jr-2016.12.22 3 0
red open jr-2016.12.23 3 0
red open jr-2016.12.24 3 0
red open jr-2016.12.25 3 0
red open jr-2016.12.26 3 0
red open jr-2016.12.27 3 0
Шардинг кластера ES недоступен, что приводит к сбою запроса
Исключение выдается при запросе ES:
[2018-08-06 18:27:24,553][DEBUG][action.search ] [Godfrey Calthrop] All shards failed for phase: [query]
[jr-2018.08.06][[jr-2018.08.06][2]] NoShardAvailableActionException[null]
at org.elasticsearch.action.search.AbstractSearchAsyncAction.start(AbstractSearchAsyncAction.java:129)
at org.elasticsearch.action.search.TransportSearchAction.doExecute(TransportSearchAction.java:115)
at org.elasticsearch.action.search.TransportSearchAction.doExecute(TransportSearchAction.java:47)
at org.elasticsearch.action.support.TransportAction.doExecute(TransportAction.java:149)
at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:137)
at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:85)
at org.elasticsearch.client.node.NodeClient.doExecute(NodeClient.java:58)
at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:359)
at org.elasticsearch.client.FilterClient.doExecute(FilterClient.java:52)
at org.elasticsearch.rest.BaseRestHandler$HeadersAndContextCopyClient.doExecute(BaseRestHandler.java:83)
at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:359)
at org.elasticsearch.client.support.AbstractClient.search(AbstractClient.java:582)
at org.elasticsearch.rest.action.search.RestSearchAction.handleRequest(RestSearchAction.java:85)
at org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:54)
at org.elasticsearch.rest.RestController.executeHandler(RestController.java:205)
at org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:166)
at org.elasticsearch.http.HttpServer.internalDispatchRequest(HttpServer.java:128)
at org.elasticsearch.http.HttpServer$Dispatcher.dispatchRequest(HttpServer.java:86)
at org.elasticsearch.http.netty.NettyHttpServerTransport.dispatchRequest(NettyHttpServerTransport.java:449)
at org.elasticsearch.http.netty.HttpRequestHandler.messageReceived(HttpRequestHandler.java:61)
задача решена
Из приведенного выше исследования, вероятно, известно, что исторические данные индекса слишком много находятся в открытом состоянии, что приводит к недоступности ЦП ES и использованию памяти.
#关闭不需要的索引,减少内存占用
curl -XPOST "http://localhost:9200/index_name/_close"
виньетка
После закрытия данных индекса, не являющихся точками доступа, значение работоспособности кластера ES арендодателя все еще находится в красном состоянии.В конце концов арендодатель считает, что красное состояние индекса может повлиять на состояние ES.Конечно, это выглядит следующим образом
curl GET http://10.252.148.85:9200/_cluster/health?level=indices
{
"cluster_name": "elasticsearch",
"status": "red",
"timed_out": false,
"number_of_nodes": 1,
"number_of_data_nodes": 1,
"active_primary_shards": 660,
"active_shards": 660,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 9,
"delayed_unassigned_shards": 0,
"number_of_pending_tasks": 0,
"number_of_in_flight_fetch": 0,
"task_max_waiting_in_queue_millis": 0,
"active_shards_percent_as_number": 98.65470852017937,
"indices": {
"jr-2018.08.06": {
"status": "red",
"number_of_shards": 3,
"number_of_replicas": 0,
"active_primary_shards": 0,
"active_shards": 0,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 3
}
}
}
Решение состоит в том, чтобы удалить эти данные индекса (эти данные представляют собой грязные данные, сгенерированные во время устранения неполадок арендодателем, и индекс удаляется напрямую)
curl -XDELETE 'http://10.252.148.85:9200/jr-2018.08.06'
резюме
Когда ES находится в одной точке, следует обратить внимание на состояние индекса ES и мониторинг сервера, и вовремя очищать или закрывать ненужные данные индекса, чтобы избежать этой ситуации. По дороге технологического роста идем вместе с вами.