Kibana: Kibana 7+ не может выполнять поиск по сохраненным_объектам, ошибка FieldData выбрана в индексе .kibana

Созданный на 2 июл. 2019  ·  20Комментарии  ·  Источник: elastic/kibana

Версия 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"}}

Saved Objects Core bug

Самый полезный комментарий

для тех, кто нашел этот поток, что я сделал на своем кластере, чтобы он работал:

  1. удалить индекс кибаны
  2. воссоздайте его с правильным отображением
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"
      }
    }

}


(убедитесь, что количество шардов и реплик соответствует вашим потребностям)

Все 20 Комментарий

Pinging @ elastic / kibana-platform

39288 Похоже, сталкивается с той же проблемой

И еще одно сообщение в блоге:
https://discuss.elastic.co/t/not-possible-to-create-index-patterns-in-kibana/185591/2

Если пользователь исправил это либо:

  • вручную установите fielddata = true в поле типа индекса ".kibana"
  • ручное редактирование сопоставления elasticsearch для Kibana и перезагрузка индекса .kibana

Я снова создал другой кластер (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 7.1.1 с 6 узлами данных + 3 выделенными мастерами + 2 только координирующими узлами
  • Kibana 7.1.1 настроен на взаимодействие с двумя координирующими узлами (настройка elasticsearch.hosts). Кибана имеет 4 места.
  • Безопасность включена в кластере с собственной областью проверки подлинности и LDAP, SSL настроен как для TCP, так и для HTTP в кластере Elasticsearch, а также в Kibana.

Мы впервые столкнулись с этой проблемой, когда из-за аппаратного сбоя нам пришлось остановить все узлы Elasticsearch (однако Kibana не была остановлена). Удалите все содержимое каталога данных всех узлов Elasticserch. Снова запустил все узлы Elasticsearch. Кибана не была остановлена ​​при полном перезапуске кластера.

Мы смогли воспроизвести эту проблему, удалив индекс .kibana* без остановки службы Kibana.

Чтобы решить эту проблему, мы предприняли следующие шаги:

  • Завершение работы службы Kibana
    -Удалены индексы .kibana *. Мы решили удалить индексы .kibana *, поскольку в индексах .kibana не было данных.
  • Запущен сервис Kibana.

Здравствуйте !!

Я создавал кластеры сегодня утром, пока снова не столкнулся с проблемой (третьей):

@Рудольф
Для журналов кибаны: это действительно проблема гонки:

kibana_1 и kibana_2 созданы, на Kibana 1 у меня есть ошибка:

Неверное имя псевдонима [.kibana], индекс существует с тем же именем, что и псевдоним.

и все кибаны имеют:

Другой экземпляр Kibana, похоже, переносит индекс. Ожидаем завершения миграции.

kibanalog.txt

@spalger
Для сопоставления .kibana: действительно кажется пустым:

mapping_kibana.txt

mapping_kibana_1.txt

mapping_kibana_2.txt

Изменить: шаг, упомянутый @ navneet83 :

  • остановка всей кибаны
  • удаление индекса .kibana, .kibana_1, .kibana_2
  • Затем начинается только 1 кибана
    исправить проблему.

Чтобы исправить это в нашем скрипте, мы включаем только 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.

для тех, кто нашел этот поток, что я сделал на своем кластере, чтобы он работал:

  1. удалить индекс кибаны
  2. воссоздайте его с правильным отображением
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 сегодня вечером, прежде чем нашел свой пост, который отлично сработал!

Была ли эта страница полезной?
0 / 5 - 0 рейтинги