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
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
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
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 _opendistro
invece 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
ecold_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'operazionecold_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
eclose
.
-
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
-