Index State Management in Amazon OpenSearch Service - Amazon OpenSearch Service

Index State Management in Amazon OpenSearch Service

Index State Management (ISM) in Amazon OpenSearch Service consente di definire le policy di gestione personalizzate per automatizzare le attività di routine e applicarle agli indici e ai modelli di indice. Non è più necessario configurare e gestire processi esterni per eseguire le operazioni di indice.

Una policy contiene uno stato predefinito e un elenco di stati fra cui l'indice può transitare. All'interno di ciascuno stato, puoi definire un elenco di operazioni da eseguire e di condizioni che attivano queste transizioni. Un tipico caso d'uso è quello di eliminare periodicamente i vecchi indici dopo un certo periodo di tempo. Ad esempio, puoi definire una policy che sposta l'indice nello stato read_only dopo 30 giorni e successivamente lo elimina dopo 90 giorni.

Dopo aver collegato una policy a un indice, ISM crea un processo che viene eseguito ogni 30-48 minuti per eseguire le operazioni di policy, controllare le condizioni e passare l'indice in stati diversi. Il tempo di base per l'esecuzione di questo processo è ogni 30 minuti, più viene aggiunto un jitter casuale tra lo 0 e il 60% per evitare che le attività arrivino da tutti gli indici contemporaneamente. ISM non esegue processi se lo stato del cluster è rosso.

PPL richiede OpenSearch o Elasticsearch 6.8 o versioni successive. La documentazione completa è disponibile nella documentazione di OpenSearch.

Importante

L'impostazione policy_id per i modelli di indice è obsoleta. Non è più possibile utilizzare modelli di indice per applicare policy ISM agli indici appena creati. È possibile continuare a gestire automaticamente gli indici appena creati con il campo del modello ISM. L'aggiornamento introduce una modifica importante per i modelli CloudFormation esistenti che utilizzano questa impostazione.

Creazione di una policy ISM

Per iniziare a usare ISM, selezionare Gestione degli indici dal menu principale di OpenSearch Dashboards e scegliere Crea policy. Puoi utilizzare il plug-in editor visivo o editor JSON per creare policy. Consigliamo di utilizzare l'editor visivo in quanto offre un modo più strutturato per definire le policy.

Dopo aver creato una policy, il passaggio successivo consiste nel collegarla a uno o più indici:

POST _plugins/_ism/add/my-index { "policy_id": "my-policy-id" }

Se il tuo dominio sta eseguendo una versione legacy di Elasticsearch, usa _opendistroinvece di _plugins.

In alternativa, selezionare l'indice in OpenSearch Dashboards e scegliere Applica policy.

Policy di esempio

Le policy di esempio riportate di seguito illustrano come automatizzare i casi d'uso comuni di ISM.

Archiviazione hot, a caldo, a freddo

Questa policy di esempio sposta un indice dall'archiviazione hot all'archiviazione UltraWarm ed eventualmente all'archiviazione a freddo, quindi elimina l'indice.

L'indice si trova inizialmente nello stato hot. Dopo dieci giorni, ISM lo sposta allo stato warm. 80 giorni dopo, quando l'indice ha 90 giorni, lo sposta nello stato cold. Dopo un anno, il servizio invia una notifica ad una stanza Amazon Chime indicante che l'indice sta per essere eliminato, quindi lo elimina definitivamente.

Tenere presente che gli indici a freddo richiedono l'operazione cold_delete piuttosto che la normale operazione delete. Inoltre, per gestire gli indici a freddo con ISM nei dati è necessario un timestamp_field esplicito.

{ "policy": { "description": "Demonstrate a hot-warm-cold-delete workflow.", "default_state": "hot", "schema_version": 1, "states": [{ "name": "hot", "actions": [], "transitions": [{ "state_name": "warm", "conditions": { "min_index_age": "10d" } }] }, { "name": "warm", "actions": [{ "warm_migration": {}, "retry": { "count": 5, "delay": "1h" } }], "transitions": [{ "state_name": "cold", "conditions": { "min_index_age": "90d" } }] }, { "name": "cold", "actions": [{ "cold_migration": { "timestamp_field": "<your timestamp field>" } } ], "transitions": [{ "state_name": "delete", "conditions": { "min_index_age": "365d" } }] }, { "name": "delete", "actions": [{ "notification": { "destination": { "chime": { "url": "<URL>" } }, "message_template": { "source": "The index {{ctx.index}} is being deleted." } } }, { "cold_delete": {} }] } ] } }

Riduzione del numero di repliche

Questa seconda policy di esempio riduce il numero di repliche a zero dopo sette giorni per risparmiare spazio su disco e quindi elimina l'indice dopo 21 giorni. Questa policy presuppone che l'indice non sia critico e che non riceva più richieste di scrittura; la presenza di repliche zero comporta un rischio di perdita di dati.

{ "policy": { "description": "Changes replica count and deletes.", "schema_version": 1, "default_state": "current", "states": [{ "name": "current", "actions": [], "transitions": [{ "state_name": "old", "conditions": { "min_index_age": "7d" } }] }, { "name": "old", "actions": [{ "replica_count": { "number_of_replicas": 0 } }], "transitions": [{ "state_name": "delete", "conditions": { "min_index_age": "21d" } }] }, { "name": "delete", "actions": [{ "delete": {} }], "transitions": [] } ] } }

Acquisizione di uno snapshot dell'indice

Questa policy di esempio utilizza l'operazione snapshot per acquisire uno snapshot di un indice non appena contiene almeno un documento. repository è il nome del repository di snapshot manuali registrato in Amazon S3. snapshot è il nome dello snapshot. Per i prerequisiti di snapshot e i passaggi per registrare un repository, consultare Creazione di snapshot di indici in Amazon OpenSearch Service.

{ "policy": { "description": "Takes an index snapshot.", "schema_version": 1, "default_state": "empty", "states": [{ "name": "empty", "actions": [], "transitions": [{ "state_name": "occupied", "conditions": { "min_doc_count": 1 } }] }, { "name": "occupied", "actions": [{ "snapshot": { "repository": "<my-repository>", "snapshot": "<my-snapshot>" } }], "transitions": [] } ] } }

Modelli ISM

È possibile configurare un campo ism_template in una policy in modo che quando si crea un indice corrispondente allo schema del modello, la policy viene automaticamente associata a tale indice. In questo esempio, qualsiasi indice creato con un nome che inizia con "log" viene automaticamente abbinata alla policy ISM my-policy-id:

PUT _plugins/_ism/policies/my-policy-id { "policy": { "description": "Example policy.", "default_state": "...", "states": [...], "ism_template": { "index_patterns": ["log*"], "priority": 100 } } }

Per un esempio più dettagliato, consultare Policy di esempio con modello ISM per il rollover automatico.

Differenze

Rispetto a OpenSearch ed Elasticsearch, ISM per Amazon OpenSearch Service presenta diverse differenze.

Operazioni ISM

  • OpenSearch Service supporta tre operazioni ISM uniche, warm_migration, cold_migration e cold_delete:

    • Se il dominio ha UltraWarm abilitato, l'operazione warm_migration passa l'indice all'archiviazione a caldo.

    • Se il tuo dominio ha l'archiviazione a freddo abilitata, l'operazione cold_migration transita l'indice all'archiviazione a freddo e l'operazione cold_delete elimina l'indice dall'archiviazione a freddo.

    Anche se una di queste operazioni non viene completata all'interno del periodo di timeout impostato, la migrazione o la cancellazione degli indici continua. L'impostazione di una error_notification per una delle operazioni di cui sopra potrebbe informare che l'operazione non è riuscita se non è stata completata entro il periodo di timeout. Questa notifica di operazione non riuscita è solo per riferimento personale. L'effettiva operazione non ha alcun timeout intrinseco e continua a essere eseguita fino a quando riesce o non riesce.

  • Se il dominio esegue OpenSearch o Elasticsearch 7.4 o versioni successive, il servizio OpenSearch supporta le operazioni ISM open e close.

  • Se il dominio esegue OpenSearch o Elasticsearch 7.7 o versioni successive, OpenSearch Service supporta l'operazione ISM snapshot.

Operazioni ISM di archiviazione a freddo

Per gli indici a freddo, quando si utilizzano le seguenti API ISM è necessario specificare un parametro ?type=_cold:

  • aggiungi policy

  • rimuovi policy

  • modifica policy

  • riprova indice gestito non riuscito

  • spiega indice

Queste API per gli indici a freddo presentano le seguenti differenze aggiuntive:

  • Gli operatori con caratteri jolly non sono supportati tranne quando li si utilizza alla fine. Ad esempio, _plugins/_ism/<add, remove, change_policy, retry, explain>/logstash-* è supportato ma _plugins/_ism/<add, remove, change_policy, retry, explain>/iad-*-prod non lo è.

  • Non sono supportati più schemi e nomi di indici. Ad esempio, _plugins/_ism/<add, remove, change_policy, retry, explain>/app-logs è supportato ma _plugins/_ism/<add, remove, change_policy, retry, explain>/app-logs,sample-data non lo è.

Impostazioni ISM

OpenSearch ed Elasticsearch consentono di modificare tutte le impostazioni ISM disponibili utilizzando l'API _cluster/settings. Su Amazon OpenSearch Service, è possibile modificare solo le seguenti impostazioni:

  • Impostazioni a livello di cluster:

    • enabled

    • history.enabled

  • Impostazioni a livello di indice:

    • rollover_alias