Версия Kibana: 7.1.1
Версия Elasticsearch: 7.1.1
Исходный метод установки (например, страница загрузки, yum, из источника и т. Д.):
Установить с нуля с помощью yum, общая конфигурация, 100% автомат.
Кластер ES 3 узла
Опишите ошибку:
У Kibana, похоже, проблема с индексом .kibana при создании:
При попытке доступа к сохраненному объекту Kibana возвращает ошибку 400 Bad Request, а Elasticsearch выдает ошибку FieldData в индексе .kibana.
Я могу создать и найти свой шаблон индекса с помощью API, но Kibana не может их найти, так как поисковый запрос получил исключение FieldData.
ПРИМЕЧАНИЕ . Эта проблема кажется немного случайной, она возникает в одном из трех кластеров, которые я создал сегодня (поскольку мы находимся в 7+), все они созданы одинаково с помощью скриптов.
ПРИМЕЧАНИЕ : я нашел сообщение на эластичных форумах, где более 6 человек, похоже, ведут себя так же, как и 7+.
https://discuss.elastic.co/t/kibana-7-cant-load-index-pattern/180167
Завтра я создам больше кластеров, чтобы чаще наблюдать за частотой этой проблемы.
Предоставьте журналы и / или вывод сервера (если необходимо):
Эластичный журнал при обновлении страницы сохраненных объектов:
[2019-07-02T11:08:48,327][DEBUG][o.e.a.s.TransportSearchAction] [elastic01] [.kibana][0],
node[RmpqDbnZTMmmrGTVe5sOZA], [R], s[STARTED], a[id=UOCFUQwpREy44aF76avXfw]:
Failed to execute [SearchRequest{searchType=QUERY_THEN_FETCH, indices=[.kibana],
indicesOptions=IndicesOptions[ignore_unavailable=false,
...
Caused by: java.lang.IllegalArgumentException: Fielddata is disabled on text fields by default.
Set fielddata=true on [type] in order to load fielddata in memory by uninverting the inverted
index. Note that this can however use significant memory. Alternatively use a keyword field
instead.
Шаблон индекса присутствует в сохраненном объекте, и curl GET работает, но Kibana не может его найти, так как он получает ошибку FieldData
curl -X GET "http://localhost:5601/api/saved_objects/index-pattern/filebeat-ulf" -H 'kbn-xsrf: true'
{"id":"filebeat-ulf","type":"index-pattern","updated_at":"2019-07-02T11:07:17.553Z","version":"WzUsMV0=","attributes":{"title":"filebeat-7.1.1-ulf-*","timeFieldName":"@timestamp"},"references":[],"migrationVersion":{"index-pattern":"6.5.0"}}
Pinging @ elastic / kibana-platform
И еще одно сообщение в блоге:
https://discuss.elastic.co/t/not-possible-to-create-index-patterns-in-kibana/185591/2
Если пользователь исправил это либо:
Я снова создал другой кластер (4-й) с той же проблемой
Я попытался остановить кибану, удалить индекс .kibana и снова запустить кибану, вот эластичные журналы:
[2019-07-03T03:02:16,659][INFO ][o.e.c.m.MetaDataDeleteIndexService] [elastic01]
[.kibana/1Z8-n6nCSza4pm2HXtWG_Q] deleting index
[2019-07-03T03:03:15,155][INFO ][o.e.c.m.MetaDataIndexTemplateService] [elastic01]
adding template [.management-beats] for index patterns [.management-beats]
[2019-07-03T03:03:15,820][INFO ][o.e.c.m.MetaDataCreateIndexService] [elastic01]
[.kibana] creating index, cause [auto(bulk api)], templates [], shards [1]/[1], mappings []
[2019-07-03T03:03:15,944][INFO ][o.e.c.m.MetaDataMappingService] [elastic01]
[.kibana/x0ymkiGpRxWJA_rMJ-T3Nw] create_mapping [_doc]
[2019-07-03T03:03:15,945][INFO ][o.e.c.m.MetaDataMappingService] [elastic01]
[.kibana/x0ymkiGpRxWJA_rMJ-T3Nw] update_mapping [_doc]
[2019-07-03T03:03:16,021][INFO ][o.e.c.r.a.AllocationService] [elastic01]
Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[.kibana][0]] ...]).
[2019-07-03T03:03:37,218][INFO ][o.e.c.m.MetaDataMappingService] [elastic01]
[.kibana/x0ymkiGpRxWJA_rMJ-T3Nw] update_mapping [_doc]
[2019-07-03T03:03:55,567][DEBUG][o.e.a.s.TransportSearchAction] [elastic01] [.kibana][0],
node[UKPhnQePR6-3EJMobt8mbw], [R], s[STARTED], a[id=oVInWbneRLicfKSIqL_uwA]:
Failed to execute [SearchRequest{searchType=QUERY_THEN_FETCH, indices=[.kibana],
indicesOptions=IndicesOptions[ignore_unavailable=false, allow_no_indices=true,
expand_wildcards_open=true, expand_wildcards_closed=false, allow_aliases_to_multiple_indices=true,
forbid_closed_indices=true, ignore_aliases=false, ignore_throttled=true], types=[], routing='null',
preference='null', requestCache=null, scroll=null, maxConcurrentShardRequests=0,
batchedReduceSize=512, preFilterShardSize=128, allowPartialSearchResults=true, localClusterAlias=null,
getOrCreateAbsoluteStartMillis=-1, ccsMinimizeRoundtrips=true, source={"from":0,"size":20,"query":
{"bool":{"filter":[{"bool":{"should":[{"bool":{"must":[{"term":{"type":{"value":"index-
pattern","boost":1.0}}}],"must_not":[{"exists":
{"field":"namespace","boost":1.0}}],"adjust_pure_negative":true,"boost":1.0}},{"bool":{"must":[{"term":
{"type":{"value":"visualization","boost":1.0}}}],"must_not":[{"exists":
{"field":"namespace","boost":1.0}}],"adjust_pure_negative":true,"boost":1.0}},{"bool":{"must":[{"term":
{"type":{"value":"dashboard","boost":1.0}}}],"must_not":[{"exists":
{"field":"namespace","boost":1.0}}],"adjust_pure_negative":true,"boost":1.0}},{"bool":{"must":[{"term":
{"type":{"value":"search","boost":1.0}}}],"must_not":[{"exists":
{"field":"namespace","boost":1.0}}],"adjust_pure_negative":true,"boost":1.0}}],"adjust_pure_negative":true,"
minimum_should_match":"1","boost":1.0}}],"adjust_pure_negative":true,"boost":1.0}},"seq_no_primary_ter
m":true,"_source":{"includes":["index-pattern","visualization","dashboard","search.title","index-
pattern","visualization","dashboard","search.id","namespace","type","references","migrationVersion",
"updated_at","title","id"],"excludes":[]},"sort":[{"type":
{"order":"asc","unmapped_type":"keyword"}}],"track_total_hits":2147483647}}]
org.elasticsearch.transport.RemoteTransportException: [elastic03][x.x.x.x:9300]
[indices:data/read/search[phase/query]]
Caused by: java.lang.IllegalArgumentException: Fielddata is disabled on text fields by default.
Set fielddata=true on [type] in order to load fielddata in memory by uninverting the inverted index.
Note that this can however use significant memory. Alternatively use a keyword field instead.
Редактировать :
Я создал другой кластер (5-й) (тот же сценарий из scatch, включая создание виртуальной машины) и на этот раз без ошибок: думаю: я попробую посмотреть, может ли это вызвать проблема с выборами?
Изменить 2:
В кластере № 6 снова возникла проблема (тот же сценарий из scatch, включая создание виртуальной машины)
На узле 3 я вижу интересные журналы:
Узел имел некоторые ошибки при первой попытке при выборе / присоединении к мастеру, но все равно удалось это сделать и выполнить загрузку, а затем ошибку отчета узла при создании псевдонима индекса .kibana:
Я удалил идентификатор узла / {ml.machine_memory = ...., xpack.installed = true} из журналов, чтобы убрать некоторый шум и сделать его более читабельным.
[2019-07-03T03:57:29,167][INFO ][o.e.c.c.JoinHelper] [elastic03]
failed to join {elastic01} {x.x.x.x}{x.x.x.x:9300}
with JoinRequest{sourceNode={elastic03}{y.y.y.y} {y.y.y.y:9300},
optionalJoin=Optional[Join{term=1, lastAcceptedTerm=0, lastAcceptedVersion=0, sourceNode=
{elastic03}{y.y.y.y}{y.y.y.y:9300}, targetNode={elastic01}{x.x.x.x}{x.x.x.x:9300}}]}
org.elasticsearch.transport.NodeNotConnectedException: [elastic01][x.x.x.x:9300] Node not connected
at org.elasticsearch.transport.ConnectionManager.getConnection(ConnectionManager.java:151)
....
[2019-07-03T03:57:29,179][INFO ][o.e.c.c.Coordinator] [elastic03]
setting initial configuration to VotingConfiguration{ID elastic01 ,{bootstrap-
placeholder}-elastic02,ID elastic03}
[2019-07-03T03:57:29,180][INFO ][o.e.c.c.JoinHelper] [elastic03]
failed to join {elastic01}{x.x.x.x}{x.x.x.x:9300}
with JoinRequest{sourceNode={elastic03}{y.y.y.y}{y.y.y.y:9300},
optionalJoin=Optional[Join{term=1, lastAcceptedTerm=0, lastAcceptedVersion=0, sourceNode=
{elastic03}{y.y.y.y}{y.y.y.y:9300}, targetNode={elastic01}{x.x.x.x}{x.x.x.x:9300}}]}
org.elasticsearch.transport.NodeNotConnectedException: [elastic01][x.x.x.x:9300] Node not connected
at org.elasticsearch.transport.ConnectionManager.getConnection(ConnectionManager.java:151)
....
[2019-07-03T03:57:29,318][INFO ][o.e.c.s.MasterService] [elastic03]
elected-as-master ([2] nodes joined)[{elastic03}{y.y.y.y}{y.y.y.y:9300} elect leader,
{elastic01}{x.x.x.x}{x.x.x.x:9300} elect leader,
_BECOME_MASTER_TASK_, _FINISH_ELECTION_], term: 2, version: 1, reason: master node changed
{previous [], current [{elastic03}{y.y.y.y}{y.y.y.y:9300}}]}, added {{elastic01}{x.x.x.x}{x.x.x.x:9300},}
[2019-07-03T03:57:29,410][INFO ][o.e.c.c.CoordinationState] [elastic03]
cluster UUID set to [oQs2zr6XTM6spzQSvJ079w]
[2019-07-03T03:57:29,463][INFO ][o.e.c.s.ClusterApplierService] [elastic03]
master node changed {previous [], current [{elastic03}{y.y.y.y}{y.y.y.y:9300}]},
added {{elastic01}{x.x.x.x}{x.x.x.x:9300},}, term: 2, version: 1, reason: Publication{term=2, version=1}
[2019-07-03T03:57:29,538][INFO ][o.e.h.AbstractHttpServerTransport] [elastic03]
publish_address {y.y.y.y:9200}, bound_addresses {[::1]:9200}, {127.0.0.1:9200}, {y.y.y.y:9200}
[2019-07-03T03:57:29,539][INFO ][o.e.n.Node] [elastic03]
started
[2019-07-03T03:57:29,559][WARN ][o.e.x.s.a.s.m.NativeRoleMappingStore] [elastic03]
Failed to clear cache for realms [[]]
[2019-07-03T03:57:29,618][INFO ][o.e.g.GatewayService] [elastic03]
recovered [0] indices into cluster_state
...
[2019-07-03T03:57:30,255][INFO ][o.e.c.s.MasterService] [elastic03]
node-join[{elastic02}{z.z.z.z}{z.z.z.z:9300} join existing leader], term: 2, version: 8, reason: added
{{elastic02}{z.z.z.z}{z.z.z.z:9300},}
[2019-07-03T03:57:30,543][INFO ][o.e.c.s.ClusterApplierService] [elastic03]
added {{elastic02}{z.z.z.z}{z.z.z.z:9300},}, term: 2, version: 8, reason: Publication{term=2, version=8}
[2019-07-03T03:57:30,749][INFO ][o.e.l.LicenseService] [elastic03]
license [] mode [basic] - valid
Кластер загружен, но .kibana выдаст ошибку:
[2019-07-03T03:57:52,002][INFO ][o.e.c.m.MetaDataCreateIndexService] [elastic03]
[.kibana_task_manager] creating index, cause [auto(bulk api)], templates [.kibana_task_manager], shards
[1]/[1], mappings [_doc]
[2019-07-03T03:57:53,018][INFO ][o.e.c.m.MetaDataCreateIndexService] [elastic03]
[.kibana_1] creating index, cause [api], templates [], shards [1]/[1], mappings [_doc]
[2019-07-03T03:57:53,279][INFO ][o.e.c.m.MetaDataCreateIndexService] [elastic03]
[.kibana] creating index, cause [auto(bulk api)], templates [], shards [1]/[1], mappings []
[2019-07-03T03:57:53,382][DEBUG][o.e.a.a.i.a.TransportIndicesAliasesAction] [elastic03]
failed to perform aliases
org.elasticsearch.indices.InvalidAliasNameException: Invalid alias name [.kibana],
an index exists with the same name as the alias
at org.elasticsearch.cluster.metadata.AliasValidator.validateAlias(AliasValidator.java:93)
...
@tbuchier большое спасибо за подробный отчет об ошибке!
Я просто хочу подтвердить, у вас есть кластер из 3 узлов ES, сколько узлов Kibana у вас запущено или это только один?
Мы загружаем кластер на основе золотого образа с Kibana + Elastic
Итак, 3 Kibana работают (мы можем отключить одну и оставить 2 для HA / балансировки нагрузки позже).
Папка с данными в elastic полностью очищается перед созданием экземпляра (для правильной начальной загрузки)
Но, возможно, не в / var / lib / kibana, который содержит UUID, поэтому у них может быть то же самое. Но это должно влиять только на мониторинг, верно?
Не могли бы вы опубликовать журналы всех трех экземпляров Kibana для кластера, который находится в этом состоянии ошибки?
У меня не будет доступа к env до понедельника ..
Я помню, что ничего не регистрировалось (у меня был logging.quiet: true)
Я опубликую журнал Кибаны в понедельник.
Я нашел еще 3 темы на эластичных форумах с пользователями, которые, кажется, сталкиваются с той же проблемой:
Все с 7+, застряли в бесконечном создании шаблона индекса через пользовательский интерфейс, поскольку пользовательский интерфейс не может найти его объект, сохраненный в индексе
https://discuss.elastic.co/t/created-index-pattern-is-not-visible-in-kibana-7-0-1/184098/
https://discuss.elastic.co/t/i-cant-create-indexes-patterns-with-eck/184194/
https://discuss.elastic.co/t/kibana-7-0-1-wont-lad-index-pattern/187934/
Похоже, что какое-то состояние гонки приводит к тому, что индекс .kibana имеет отображение {"type": {"type": "text"}}
вместо {"type": {"type": "keyword"}}
Я пробовал многочисленные запуски создания 3-узлового кластера ES + Kibana на моем локальном компьютере, но не смог воспроизвести сопоставления для свойства «type», для которого установлено значение «text».
Я могу подтвердить, что создание сопоставления вручную с помощью {"type": {"type": "text"}}
вызывает симптомы, описанные в этом и связанных потоках обсуждения, например, ошибка «Fielddata отключена в текстовых полях по умолчанию».
Большое спасибо за подробную помощь по отладке @tbuchier! Вы все еще читаете его, но из любопытства, вы циклически пингуете сервер Kibana, чтобы выяснить, запущен ли он в вашем скрипте?
Я видел это однажды раньше, и случайный фактор подсказывает мне, что это какое-то состояние гонки, но что может быть гонкой? Я предполагаю, что завершение миграции соперничает с запросом, поступающим на сервер Kibana, который (если включена безопасность) пытается загрузить службу uiSettings
, которая автоматически создаст сохраненный объект конфигурации перед файлом. Фактически создается индекс kibana, в результате чего индекс создается путем автоматического сопоставления ввода и использования {"type": "text"}
для поля type
...
Раньше это было невозможно, потому что мы даже не принимали HTTP-запросы до завершения миграции, но с переходом на новую платформу этот порядок операций немного изменился, и теперь миграции выполняются после запуска HTTP, что означает, что маршруты могут быть запущены до того, как служба savedObjects
действительно станет доступной, что может вызвать проблемы в зависимости от времени.
edit: один из способов проверить это - сбросить отображение и документы в индексе .kibana при обнаружении этой ошибки. Если индекс не содержит ничего по документу конфигурации, то я почти уверен, что это именно то, что происходит.
Мне удалось воспроизвести эту проблему в среде 7.1.1. Детали кластера:
Мы впервые столкнулись с этой проблемой, когда из-за аппаратного сбоя нам пришлось остановить все узлы Elasticsearch (однако Kibana не была остановлена). Удалите все содержимое каталога данных всех узлов Elasticserch. Снова запустил все узлы Elasticsearch. Кибана не была остановлена при полном перезапуске кластера.
Мы смогли воспроизвести эту проблему, удалив индекс .kibana*
без остановки службы Kibana.
Чтобы решить эту проблему, мы предприняли следующие шаги:
Здравствуйте !!
Я создавал кластеры сегодня утром, пока снова не столкнулся с проблемой (третьей):
@Рудольф
Для журналов кибаны: это действительно проблема гонки:
kibana_1 и kibana_2 созданы, на Kibana 1 у меня есть ошибка:
Неверное имя псевдонима [.kibana], индекс существует с тем же именем, что и псевдоним.
и все кибаны имеют:
Другой экземпляр Kibana, похоже, переносит индекс. Ожидаем завершения миграции.
@spalger
Для сопоставления .kibana: действительно кажется пустым:
Изменить: шаг, упомянутый @ navneet83 :
Чтобы исправить это в нашем скрипте, мы включаем только 1 Kibana при загрузке, и после успешного создания .kibana_1 скрипт запускает остальные экземпляры.
@tbuchier Мне удалось воспроизвести проблему, и это действительно так, как спалгер предположил, состояние гонки с системой миграции. Мы блокируем все операции с Elasticsearch до завершения инициализации индексов и миграции. Логическая ошибка позволяла продолжать операции, даже если инициализация и миграция все еще продолжались. Это привело к тому, что некоторые плагины начали писать в индекс .kibana
и Elasticsearch автоматически создавал индекс с неверными сопоставлениями.
Хорошая новость в том, что это исправлено и выпущено в версии 7.2.0 (https://github.com/elastic/kibana/pull/37674).
Спасибо за вашу помощь в отладке этого и за то, что вы связали все темы обсуждения с этим вопросом!
@rudolf Привет, я столкнулся с этой проблемой и в версии 7.2.0. Kibana постоянно запрашивает шаблон индекса, а журнал es выдает ошибку fielddata.
"Caused by: java.lang.IllegalArgumentException: Fielddata is disabled on text fields by default. Set fielddata=true on [process.name] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.",
"at org.elasticsearch.index.mapper.TextFieldMapper$TextFieldType.fielddataBuilder(TextFieldMapper.java:711) ~[elasticsearch-7.2.0.jar:7.2.0]",
"at org.elasticsearch.index.fielddata.IndexFieldDataService.getForField(IndexFieldDataService.java:116) ~[elasticsearch-7.2.0.jar:7.2.0]",
@ ntsh999 Мы используем github только для воспроизводимых отчетов об ошибках. Если вы можете воспроизвести это поведение в 7.2, откройте новую проблему на github и поделитесь действиями. Однако, если вам нужна помощь, начните новую тему на наших форумах обсуждения https://discuss.elastic.co/ Пожалуйста, включите все журналы из elasticsearch и kibana, а также любую другую соответствующую информацию, например, как вы создали cluster, и если вы выполнили какие-либо обновления с более ранних версий стека ELK.
для тех, кто нашел этот поток, что я сделал на своем кластере, чтобы он работал:
PUT /.kibana
{
"aliases": {},
"mappings": {
"properties": {
"config": {
"properties": {
"buildNum": {
"type": "long"
}
}
},
"index-pattern": {
"properties": {
"fields": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"timeFieldName": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"title": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
},
"type": {
"type": "keyword",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"updated_at": {
"type": "date"
}
}
},
"settings": {
"index": {
"number_of_shards": "5",
"number_of_replicas": "1"
}
}
}
(убедитесь, что количество шардов и реплик соответствует вашим потребностям)
@ allan-simon Потрясающе! Это отлично сработало для меня!
@ allan-simon, спасибо, ты спас мне вечер.
@ allan-simon Ура! Потратил много времени, пытаясь выяснить это в сервисе AWS Elasticsearch сегодня вечером, прежде чем нашел свой пост, который отлично сработал!
Самый полезный комментарий
для тех, кто нашел этот поток, что я сделал на своем кластере, чтобы он работал:
(убедитесь, что количество шардов и реплик соответствует вашим потребностям)