AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Pourquoi l'action de substitution d'index de ma stratégie ISM échoue-t-elle dans OpenSearch Service ?
Je souhaite utiliser Index State Management (ISM) pour substituer mes index sur mon cluster Amazon OpenSearch Service. Toutefois, il est impossible de substituer mon index et je reçois une erreur.
Brève description
Pour résoudre ce problème, utilisez l'API explain afin d'identifier la cause de l'échec. Passez ensuite en revue la stratégie ISM. Pour plus d'informations sur la configuration de l'action de substitution, consultez Comment utiliser ISM pour gérer un espace de stockage faible dans Amazon OpenSearch Service ?
Remarque : La résolution suivante s'applique uniquement à l'API OpenSearch. Pour l'ancienne API Open Distro, consultez API ISM sur le site Web d'Open Distro.
Résolution
Utilisation de l'API explain pour identifier la cause
Pour identifier les raisons pour lesquelles la substitution d'index échoue, utilisez l'API explain :
GET _plugins/_ism/explain/logs-000001?pretty
Exemple de sortie de l'API explain :
{ "logs-000001": { "index.plugins.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]" } } }
Pour identifier la cause de l'échec, passez en revue la section info de la sortie.
L'exemple de sortie précédent montre que les index n'ont pas pu être substitués, car l'alias de substitution cible rolling-indices n'existe pas.
La cible de substitution n'existe pas
Si l'opération de substitution échoue parce que la cible de substitution n'existe pas, vérifiez alors si l'index est amorcé avec l'alias de substitution :
GET _cat/aliases
La sortie répertorie tous les alias actuels du cluster et leurs index associés. Si ISM indique que la cible de substitution n'existe pas, cela signifie alors qu'il manque un nom d'alias de substitution et une association d'index échouée.
Pour résoudre l'échec de l'association d'index, attachez l'alias de substitution à l'index :
POST /_aliases{ "actions": [{ "add": { "index": "logs-000001", "alias": "my-data" } }] }
Après avoir attaché l'alias de substitution, réessayez l'action de substitution sur l'index géré dans OpenSearch Service :
POST _plugins/_ism/retry/logs-000001
Pour plus d'informations, consultez Réessayer l'index échoué sur le site Web d'OpenSearch.
Lorsque vous réessayez l'index échoué, vous pouvez recevoir le message de statut « Nouvelle tentative ». Attendez que le cycle ISM suivant s'exécute. Les cycles ISM s'exécutent toutes les 30 à 48 minutes. Si l'action de substitution aboutit, le message suivant s'affiche alors : « Index substitué avec succès ».
L'alias de substitution est manquant
Si l'opération de substitution échoue parce que l'alias de substitution est manquant, vérifiez alors les paramètres de l'index échoué :
GET failed-index-name/_settings
Remarque : Remplacez failed-index-name par le nom de l'index qui échoue lors du processus de substitution.
Si le paramètre index.plugins.index_state_management.rollover_alias est manquant, ajoutez-le alors manuellement à l'index :
PUT /failed-index-name/_settings{ "index.plugins.index_state_management.rollover_alias" : "rollover-alias" }
Remarque : Remplacez failed-index-name par le nom de l'index qui échoue lors du processus de substitution. Remplacez rollover-alias par le nom d'alias que vous souhaitez utiliser pour l'index.
Utilisez l'API retry failed index pour réessayer l'opération de substitution sur l'index échoué. Lorsque l'action de substitution est réessayée, mettez à jour le modèle de stratégie :
PUT _index_template/template-name
Remarque : Remplacez template-name par le nom du modèle d'index.
Appliquez les mêmes paramètres à partir du modèle de stratégie existant pour vous assurer qu'OpenSearch Service applique l'alias de substitution aux index nouvellement créés.
Exemple :
PUT _index_template/existing-template { "index_patterns": [ "index-pattern*" ], "template": { "settings": { "plugins.index_state_management.rollover_alias": "rollover-alias" } } }
Le nom de l'index ne correspond pas au modèle d'index
Si l'opération de substitution échoue parce que le nom et le modèle de l'index ne correspondent pas, vérifiez alors le nom de l'index échoué. Pour mener à bien une opération de substitution, les noms d'index doivent correspondre au modèle d'expression régulière suivant :
`^.*-\d+$`
Ce modèle d'expression régulière spécifie que les noms d'index doivent inclure du texte suivi d'un tiret (-) et d'un ou de plusieurs chiffres. Si le nom d'index ne suit pas ce modèle et que des données sont écrites sur le premier index, ré-indexez alors les données. Lorsque vous ré-indexez les données, utilisez le nom correct pour le nouvel index.
Exemple :
POST _reindex{ "source": { "index": "failed-index" }, "dest": { "index": "my-new-index-000001" } }
Lorsque l'API de données se ré-indexe, détachez l'alias de substitution de l'index échoué. Ajoutez ensuite l'alias de substitution au nouvel index afin que la source de données puisse continuer d’écrire les données entrantes dans un nouvel index. Pour plus d'informations, consultez Réindexer l'API des documents sur le site Web d'OpenSearch.
Exemple :
POST /_aliases{ "actions": [{ "remove": { "index": "failed-index", "alias": "rollover-alias" } }, { "add": { "index": "my-new-index-000001", "alias": "rollover-alias" } }] }
Utilisez l'appel d'API suivant pour attacher manuellement la stratégie ISM au nouvel index :
POST _plugins/_ism/add/my-new-index-*{ "policy_id": "policy_id" }
Remarque : Remplacez policy_id par l'ID de la stratégie ISM.
Mettez à jour le modèle existant avec le nouveau nom du modèle d'index. Exemple :
PUT _index_template/existing-template { "index_patterns": ["my-new-index-pattern*"], }
Remarque : Remplacez existing-template par le nom du modèle existant. Remplacez my-new-index-pattern par le modèle d'index que vous souhaitez utiliser.
Important : La stratégie ISM et l'alias de substitution doivent refléter les index successifs que vous créez avec le même modèle d'index.
L'alias de substitution pointe vers un alias dupliqué dans un modèle d'index
Si l'opération de substitution échoue parce qu'un alias de substitution pointe vers un alias dupliqué, vérifiez alors les paramètres du modèle d'index :
GET _index_template/template-name
Remarque : Remplacez template-name par le nom du modèle.
Vérifiez si le modèle contient une autre sectionaliasesavec un autre alias pointant vers le même index.
Exemple :
{ "index_patterns": ["my-index*"], "settings": { "index.plugins.index_state_management.rollover_alias": "rollover-alias" }, "aliases": { "another_alias": { "is_write_index": true } } }
Dans l'exemple précédent, il existe deux alias, rollover-alias et another_alias. Plusieurs alias entraînent l'échec de la substitution. Pour résoudre cet échec, mettez à jour les paramètres du modèle et ne spécifiez pas d'alias :
PUT _index_template/template-name
Remarque : Remplacez template-name par le nom du modèle.
Exécutez ensuite l'API retry sur l'index échoué :
POST _plugins/_ism/retry/logs-000001
Important : Si un alias pointe vers plusieurs index, assurez-vous alors que l'accès en écriture est activé pour un seul index. L'APIrollover fournit automatiquement un accès en écriture pour l'index vers lequel pointe l'alias de substitution. Lorsque vous effectuez l'opération de substitution dans ISM, vous n'avez pas besoin de spécifier d'alias pour le paramètre is_write_index.
Vous utilisez au maximum les ressources du cluster
Une exception liée à un disjoncteur ou un manque d'espace de stockage peut entraîner une utilisation maximale des ressources du cluster.
Exception liée à un disjoncteur
Si une exception de disjoncteur entraîne une utilisation maximale des ressources du cluster, le cluster peut alors être soumis à une pression de mémoire élevée sur la machine virtuelle Java (JVM) lorsque vous appelez l'API rollover. Pour résoudre les problèmes de pression de la mémoire JVM, consultez Comment résoudre les problèmes de pression élevée de la mémoire JVM sur le cluster OpenSearch Service ?
Lorsque la pression de la mémoire JVM tombe à moins de 75 %, vous pouvez réessayer l'activité sur l'index échoué avec l’appel d'API suivant :
POST _plugins/_ism/retry/failed-index-name
Remarque : Remplacez failed-index-name par le nom de l'index qui ne peut pas être substitué.
Utilisez les modèles d'index (*) pour réessayer les activités sur plusieurs index échoués.
Si vous rencontrez des augmentations JVM peu fréquentes sur le cluster, vous pouvez alors également mettre à jour la stratégie ISM en utilisant le bloc de réessai suivant pour l'action de substitution :
{ "actions": { "retry": { "count": 3, "backoff": "exponential", "delay": "10m" } } }
Dans la stratégie ISM, chaque action fait l'objet d'un réessai automatisé basé sur le paramètre count. Si l’opération précédente échoue, vérifiez alors le paramètre delay afin de savoir combien de temps vous devez attendre pour qu'ISM réessaie l'action. Pour plus d'informations, consultez Actions sur le site Web d'OpenSearch.
Manque d'espace de stockage
Si le cluster commence à manquer d'espace de stockage, OpenSearch Service initie alors un bloc d'écriture sur le cluster. Le bloc d'écriture fait en sorte que toutes les opérations d'écriture renvoient ClusterBlockException sur le cluster. La métrique ClusterIndexWritesBlocked affiche la valeur « 1 », car le cluster bloque les demandes. Toute tentative de création d'un nouvel index échoue. L'appel d’API explain renvoie également 403 IndexCreateBlockException parce que le cluster n'a plus d'espace de stockage. Pour résoudre l’exception de bloc du cluster, consultez Comment résoudre l'erreur 403 « index_create_block_exception » ou « cluster_block_exception » dans OpenSearch Service ?
Une fois que la métrique ClusterIndexWritesBlocked est revenue à 0, réessayez l'action ISM sur l'index échoué. Si la pression de la mémoire JVM dépasse 92 % pendant plus de 30 minutes, le disjoncteur OpenSearch peut alors initier un bloc d'écriture. Si vous rencontrez un bloc d'écriture, résolvez alors plutôt le problème de pression de la mémoire JVM.
- Sujets
- Analytics
- Balises
- Amazon OpenSearch Service
- Langue
- Français

Contenus pertinents
- Réponse acceptée
demandé il y a 2 ans
demandé il y a 2 ans
AWS OFFICIELA mis à jour il y a un an