Por que a ação de sobreposição de índice na minha política do ISM continua apresentando falha no Amazon OpenSearch Service?

Última atualização: 05-08-2021

Quero usar o Index State Management (ISM) para fazer sobreposição dos meus índices no meu cluster do Amazon OpenSearch Service (sucessor do Amazon Elasticsearch Service). Mas não consigo fazer essa sobreposição e recebo um erro. Por que isso está acontecendo e como soluciono?

Breve descrição

Se você recebeu um erro “Failed to rollover index” (Falha de sobreposição de índice), sua ação de sobreposição pode ter falhado por um dos seguintes motivos:

  • O destino de sobreposição não existe.
  • O alias de sobreposição está ausente.
  • O nome do índice não corresponde ao padrão de índice.
  • O alias de sobreposição está apontando para um alias duplicado em um modelo de índice.
  • A utilização máxima de recursos foi atingida no seu cluster.

Para solucionar esse problema, use a API explain para identificar a causa do erro que você recebe. Em seguida, confira a sua política do ISM. Para obter mais informações sobre como configurar a ação de sobreposição na sua política do ISM, consulte Como uso o Index State Management (ISM) para gerenciar pouco espaço de armazenamento no Amazon OpenSearch Service?

Resolução

Como usar a API explain

Para identificar a causa-raiz do erro “Failed to rollover index” (Falha de sobreposição de índice), use a API explain:

GET _opendistro/_ism/explain/logs-000001?pretty

Aqui está um exemplo de saída da API explain:

{
  "logs-000001" : {
    "index.opendistro.index_state_management.policy_id" : "rollover-workflow",
    "index" : "logs-000001",
    "index_uuid" : "JUWl2CSES2mWYXqpJJ8qlA",
    "policy_id" : "rollover-workflow",
    "policy_seq_no" : 2,
    "policy_primary_term" : 1,
    "rolled_over" : false,
    "state" : {
      "name" : "open",
      "start_time" : 1614738037066
    },
    "action" : {
      "name" : "rollover",
      "start_time" : 1614739372091,
      "index" : 0,
      "failed" : true,
      "consumed_retries" : 0,
      "last_retry_time" : 0
    },
    "retry_info" : {
      "failed" : false,
      "consumed_retries" : 0
    },
    "info" : {
      "cause" : "rollover target [rolling-indices] does not exist",
      "message" : "Failed to rollover index [index=logs-000001]"
    }
  }
}

Este exemplo de saída indica que a sobreposição de índices falhou porque o alias de sobreposição de destino (rolling-indices) não existia.

O destino de sobreposição não existe

Se a API explain retornar a causa “rollover target [rolling-indices] does not exist” (o destino de sobreposição [rolling-indices] não existe), confira se o índice foi submetido à ação de bootstrap com o alias de sobreposição:

GET _cat/aliases

A saída lista todos os aliases atuais no cluster e seus índices associados. Se o ISM indicar que o seu destino de sobreposição não existe, não haverá nome de alias de sobreposição e associação do índice com falha.

Para solucionar a associação de índice com falha, anexe o alias de sobreposição ao índice:

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "logs-000001", "alias" : "my-data" } }
    ]
}

Depois de anexar o alias de sobreposição, tente executar a ação de sobreposição novamente no índice gerenciado no OpenSearch Service:

POST _opendistro/_ism/retry/logs-000001

Para obter mais informações, consulte Nova tentativa para o índice com falha no site do Open Distro for Elasticsearch.

Na sua nova tentativa para o índice com falha, você pode receber uma mensagem de status “Attempting to retry” (Tentando repetir a ação). Se o OpenSearch Service estiver tentando repetir a ação, aguarde a execução do próximo ciclo do ISM. Os ciclos do ISM são executados a cada 30 a 48 minutos. Se a ação de sobreposição for bem-sucedida, você receberá a seguinte mensagem: “Successfully rolled over index” (A sobreposição do índice foi realizada com sucesso).

O alias de sobreposição está ausente

Se a saída da API explain identificar que a causa da sua falha de sobreposição é a ausência de um alias de sobreposição, confira as configurações do índice com falha:

GET <failed-index-name>/_settings

Se você perceber que a configuração index.opendistro.index_state_management.rollover_alias está ausente, adicione-a manualmente ao seu índice:

PUT /<failed-index-name>/_settings
{
  "index.opendistro.index_state_management.rollover_alias":"<rollover-alias>"
}

Use a API retry failed index para tentar executar a operação de sobreposição novamente no índice com falha. Durante a nova tentativa de execução da ação de sobreposição, atualize o seu modelo de política:

PUT _template/<template-name>

Certifique-se de usar as mesmas configurações do seu modelo de política existente para que o seu alias de sobreposição seja aplicado aos índices recém-criados. Por exemplo:

PUT _template/<existing-template>
{
  "index_patterns": ["<index-pattern*>"], 
  "settings": {
    "index.opendistro.index_state_management.policy_id": "<policy_id>",
    "index.opendistro.index_state_management.rollover_alias":"<rollover-alias>"
  }
}

O nome do índice não corresponde ao padrão de índice

Se a política do ISM indicar que a operação de sobreposição falhou porque o nome do seu índice e o padrão de índice não correspondem, confira o nome do índice com falha. Para sobreposições bem-sucedidas, os nomes dos índices devem corresponder ao seguinte padrão regex:

`^.*-\\d+$`

Esse padrão regex estabelece que nomes de índices devem incluir textos acompanhados por um hífen (-) e um ou mais dígitos. Se o nome do índice não seguir esse padrão e o seu primeiro índice tiver dados gravados nele, considere fazer a reindexação dos dados. Ao reindexar os dados, use o nome correto para o seu novo índice. Por exemplo:

POST _reindex
{
  "source": {
    "index": "<failed-index>"
  },
  "dest": {
    "index": "my-new-index-000001"
  }
}

Enquanto a API reindex data estiver em execução, desvincule o alias de sobreposição do índice com falha. Em seguida, adicione o alias de sobreposição ao novo índice para que a origem dos dados possa continuar a gravar os dados recebidos em um novo índice.

Por exemplo:

POST /_aliases
{
    "actions" : [
        { "remove" : { "index" : "<failed-index>", "alias" : "<rollover-alias>" } },
        { "add" : { "index" : "my-new-index-000001", "alias" : "<rollover-alias>" } }
    ]
}

Anexe manualmente a política do ISM ao novo índice usando a seguinte chamada de API:

POST _opendistro/_ism/add/my-new-index-* { "policy_id": "<policy_id>" }

Atualize o modelo existente para refletir o novo nome do padrão de índice:

PUT _template/<existing temaplate>

Observação: a sua política do ISM e o alias de sobreposição devem refletir os índices sucessivos criados com o mesmo padrão de índice.

O alias de sobreposição aponta para um alias duplicado em um modelo de índice

Se a API explain API indicar que a sua sobreposição de índice falhou porque um alias de sobreposição aponta para um alias duplicado, confira as suas configurações do modelo de índice:

GET _template/<template-name>

Confira se o seu modelo contém uma seção adicional de aliases (com outro alias que aponte para o mesmo índice):

"index_patterns": ["my-index*"],
 "settings": {
        "index.opendistro.index_state_management.policy_id": "rollover-policy",
        "index.opendistro.index_state_management.rollover_alias": "rollover-alias"
        },
 "aliases": {
        "another_alias": {
            "is_write_index": true
        }
    }

A presença de um alias adicional confirma o motivo da falha da operação de sobreposição, pois a presença de vários aliases gera falha na sobreposição. Para solucionar essa falha, atualize as configurações do modelo sem especificar nenhum alias:

PUT _template/<template-name>

Em seguida, execute a API retry no índice com falha:

POST _opendistro/_ism/retry/my-index-000001

Importante: se um alias apontar para vários índices, certifique-se de que apenas um índice tenha acesso de gravação habilitado. A API rollover habilita automaticamente o acesso de gravação para o índice para o qual o alias de sobreposição aponta. Isso significa que você não precisa especificar qualquer alias para a configuração “is_write_index” ao executar a operação de sobreposição no ISM.

Utilização máxima de recursos no seu cluster

A utilização máxima de recursos no seu cluster pode ocorrer em função de uma exceção do disjuntor ou da falta de espaço de armazenamento.

Exceção de disjuntor

Se a API explain retornar uma exceção de disjuntor, pode ser que o seu cluster tenha enfrentado pressão alta de memória JVM quando a API rollover foi chamada. Para solucionar problemas de pressão de memória JVM, consulte Como soluciono a pressão alta de memória JVM no meu cluster do Amazon OpenSearch Service?

Depois que a pressão da memória JVM ficar abaixo de 75%, você poderá repetir a atividade no índice com falha com a seguinte chamada de API:

POST _opendistro/_ism/retry/<failed-index-name>

Observação: você pode usar padrões de índice (*) para repetir as atividades em vários índices com falha.

Se enfrentar picos de JVM pouco frequentes no seu cluster, você também poderá atualizar a política do ISM com o bloco a seguir de nova tentativa para a ação de sobreposição:

"actions": {
    "retry": {
        "count": 3,
        "backoff": "exponential",
        "delay": "10m"
    }
}

Na política do ISM, cada ação tem uma nova tentativa automatizada com base no parâmetro count. Se a operação anterior falhar, confira o parâmetro “delay” para saber quanto tempo você precisará aguardar para o ISM repetir a ação.

Falta de espaço de armazenamento

Se o seu cluster estiver ficando sem espaço de armazenamento, o OpenSearch Service acionará um bloco de gravação no cluster, fazendo com que todas as operações de gravação retornem uma ClusterBlockException. Os seus valores de métrica ClusterIndexWritesBlocked apresentarão um valor “1", indicando que o cluster está bloqueando solicitações. Assim, qualquer tentativa de criar um novo índice falhará. A chamada da API explain também retornará um erro 403 IndexCreateBlockException, indicando que o cluster está sem espaço de armazenamento. Para solucionar o problema de exceção de bloco do cluster, consulte How do I resolve the 403 "index_create_block_exception" error in Amazon OpenSearch Service?

Depois que a métrica ClusterIndexWritesBlocked retornar a “0", tente executar a ação do ISM novamente no índice com falha. Se a pressão de memória JVM exceder 92% por mais de 30 minutos, um bloco de gravação poderá ser acionado. Se você encontrar um bloco de gravação, deverá solucionar o problema da pressão de memória JVM. Para obter mais informações sobre como solucionar a pressão de memória JVM, consulte How do I troubleshoot high JVM memory pressure on my Amazon OpenSearch Service cluster?


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?