Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›ILM: Управление жизненным циклом индексов

Отладка ошибок управления жизненным циклом индексов

Когда ILM выполняет политику жизненного цикла, могут возникнуть ошибки при выполнении необходимых операций над индексом на определенном шаге. В таком случае ILM переводит индекс в состояние ERROR. Если ILM не может автоматически устранить ошибку, выполнение останавливается до устранения проблем с политикой, индексом или кластером.

Например, у вас может быть политика shrink-index, которая уменьшает индекс до четырёх фрагментов, когда ему исполнится не менее пяти дней:

PUT _ilm/policy/shrink-index
{
  "policy": {
    "phases": {
      "warm": {
        "min_age": "5d",
        "actions": {
          "shrink": {
            "number_of_shards": 4
          }
        }
      }
    }
  }
}

Ничто не мешает применить политику shrink-index к новому индексу, у которого всего два фрагмента:

PUT /my-index-000001
{
  "settings": {
    "index.number_of_shards": 2,
    "index.lifecycle.name": "shrink-index"
  }
}

Через пять дней ILM пытается уменьшить my-index-000001 с двух фрагментов до четырёх. Поскольку действие уменьшения не может увеличить количество фрагментов, эта операция завершается ошибкой, и ILM переводит my-index-000001 в состояние ERROR.

Вы можете использовать API ILM Explain для получения информации о том, что пошло не так:

GET /my-index-000001/_ilm/explain

Что возвращает следующую информацию:

{
  "indices" : {
    "my-index-000001" : {
      "index" : "my-index-000001",
      "managed" : true,
      "policy" : "shrink-index",                
      "lifecycle_date_millis" : 1541717265865,
      "age": "5.1d",                            
      "phase" : "warm",                         
      "phase_time_millis" : 1541717272601,
      "action" : "shrink",                      
      "action_time_millis" : 1541717272601,
      "step" : "ERROR",                         
      "step_time_millis" : 1541717272688,
      "failed_step" : "shrink",                 
      "step_info" : {
        "type" : "illegal_argument_exception",  
        "reason" : "the number of target shards [4] must be less that the number of source shards [2]"
      },
      "phase_execution" : {
        "policy" : "shrink-index",
        "phase_definition" : {                  
          "min_age" : "5d",
          "actions" : {
            "shrink" : {
              "number_of_shards" : 4
            }
          }
        },
        "version" : 1,
        "modified_date_in_millis" : 1541717264230
      }
    }
  }
}

Политика, используемая для управления индексом: shrink-index

Возраст индекса: 5,1 дня

Фаза, в которой сейчас находится индекс: warm

Текущее действие: shrink

Шаг, на котором находится индекс: ERROR

Шаг, который не удалось выполнить: shrink

Тип ошибки и описание ошибки.

Определение текущей фазы из политики shrink-index

Чтобы исправить это, вы можете обновить политику, чтобы уменьшить индекс до одного фрагмента через 5 дней:

PUT _ilm/policy/shrink-index
{
  "policy": {
    "phases": {
      "warm": {
        "min_age": "5d",
        "actions": {
          "shrink": {
            "number_of_shards": 1
          }
        }
      }
    }
  }
}

Повторные попытки шагов политики жизненного цикла

После устранения проблемы, которая поместила индекс в состояние ERROR, вам может потребоваться явно попросить ILM повторить этот шаг:

POST /my-index-000001/_ilm/retry

ILM затем пытается повторно выполнить не удавшийся шаг. Вы можете отслеживать прогресс с помощью API ILM Explain.

Общие ошибки ILM

Вот как устранить наиболее распространенные ошибки, сообщаемые на шаге ERROR.

Проблемы с алиасами rollover часто являются причиной ошибок. Рассмотрите возможность использования потоков данных вместо управления rollover с помощью алиасов.

Алиас rollover [x] может указывать на несколько индексов, дублированный алиас [x] найден в шаблоне индекса [z]

Целевой алиас rollover указан в настройке шаблона индекса index.lifecycle.rollover_alias. Вам нужно явно настроить этот алиас один раз, когда вы инициализируете начальный индекс. Затем действие rollover управляет настройкой и обновлением алиаса для перехода к каждому последующему индексу.

Не настраивайте этот же алиас в разделе алиасов шаблона индекса.

index.lifecycle.rollover_alias [x] не указывает на индекс [y]

Индекс использует неправильный алиас или алиас не существует.

Проверьте index.lifecycle.rollover_alias настройку индекса. Чтобы посмотреть, какие алиасы настроены, используйте _cat/aliases.

Настройка [index.lifecycle.rollover_alias] для индекса [y] пустая или не определена

Настройка index.lifecycle.rollover_alias должна быть настроена для работы действия rollover.

Обновите настройки индекса, чтобы установить index.lifecycle.rollover_alias.

Алиас [x] имеет более одного пишущего индекса [y,z]

Только один индекс может быть назначен в качестве пишущего для конкретного алиаса.

Используйте API алиасов, чтобы установить is_write_index:false для всех индексов, кроме одного.

Имя индекса [x] не соответствует шаблону ^.*-\d+

Имя индекса должно соответствовать регулярному выражению ^.*-\d+ для работы действия rollover. Наиболее распространённая проблема — имя индекса не содержит заключительных цифр. Например, my-index не соответствует требованию шаблона.

Добавьте числовое значение к имени индекса, например, my-index-000001.

CircuitBreakingException: [x] данные слишком велики, данные для [y]

Это указывает на то, что кластер сталкивается с ограничениями ресурсов.

Прежде чем продолжать настройку ILM, необходимо принять меры по устранению проблем с ресурсами. Дополнительную информацию см. в разделе об ошибках разрыва цепи.

Верхний порог дискового пространства [x] превышен на [y]

Это указывает на то, что кластеру не хватает дискового места. Это может произойти, если вы не настроили управление жизненным циклом индексов для перехода с узлов "горячие" на узлы "тёплые".

Рассмотрите возможность добавления узлов, обновления оборудования или удаления ненужных индексов.

security_exception: действие [<имя_действия>] не разрешено для пользователя [<имя_пользователя>] с ролями [<имя_роли>], это действие разрешено привилегиями индекса [manage_follow_index,manage,all]

Это указывает на то, что действие ILM не может быть выполнено, потому что у пользователя, используемого ILM для выполнения действия, нет соответствующих привилегий. Это может произойти, когда привилегии пользователя были сняты после обновления политики ILM. Действия ILM выполняются так, как будто их выполнил последний пользователь, который изменял политику. Учётная запись, используемая для создания или изменения политики, должна иметь права на выполнение всех операций, которые являются частью этой политики.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/index-lifecycle-error-handling.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API