KKeine Bearbeitungszusammenfassung |
KKeine Bearbeitungszusammenfassung |
||
| Zeile 88: | Zeile 88: | ||
}, | }, | ||
"rollover": { | "rollover": { | ||
"min_index_age": "1h", | "min_index_age": "1h", | ||
"copy_alias": false | "copy_alias": false | ||
| Zeile 128: | Zeile 127: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
#:'''Bedingungen:''' | #:'''Bedingungen:''' | ||
#:*<code>min_index_age: 1h</code> - Index muss ≥1 Stunde alt sein | #:*<code>min_index_age: 1h</code> - Index muss ≥1 Stunde alt sein | ||
#:*<code>min_rollover_age: 3h</code> - Löschen 3 Stunden nach Rollover | #:*<code>min_rollover_age: 3h</code> - Löschen 3 Stunden nach Rollover | ||
#:'''Hinweis:''' Rollover-Bedingungen sind '''UND''' | #:'''Hinweis:''' Rollover-Bedingungen sind '''keine''' UND Bedingung. Wenn man zum Beispiel <code>min''index''age</code> und <code>min_<u>''doc_''count</u></code> und eines davon die Bedingung erfüllt, wird das Rollover ausgeführt<br /> | ||
#'''Erstellen''' Sie das '''Index-Template''':[[Datei:Index-Template.png|none|976x976px]] | #'''Erstellen''' Sie das '''Index-Template''':[[Datei:Index-Template.png|none|976x976px]] | ||
#:<syntaxhighlight lang="json"> | #:<syntaxhighlight lang="json"> | ||
| Zeile 198: | Zeile 196: | ||
}, | }, | ||
"rollover": { | "rollover": { | ||
"min_index_age": "1h", | "min_index_age": "1h", | ||
"copy_alias": false | "copy_alias": false | ||
Version vom 29. Januar 2026, 17:02 Uhr
| Anwendung: | OpenSearch |
|---|
| Status: | Entwurf/ freigegeben |
|---|
Ziel
Diese Anleitung richtet automatisches Index-Lifecycle-Management ein:
- Rollover: Neuen Index erstellen wenn Bedingungen erfüllt sind (Alter + Dokumentenanzahl)
- Löschen: Alte Indizes nach einer Aufbewahrungsfrist entfernen
provisioning_v2-000001 → Rollover → provisioning_v2-000002 → Rollover → ...
↓ (3h später)
LÖSCHEN
Voraussetzungen und Vorbereitung
- Zugang zu OpenSearch Cluster (Admin-Rechte)
- OpenSearch Dashboard oder API-Zugang (z.B. via curl oder Dev Tools)
- Python-Anwendung mit
opensearch-loggerBibliothek
Vorgang 1: Index-Lifecycle einrichten
Erstellung der ISM-Policy, Index-Template und des initialen Index für automatisches Rollover und Löschen.
| Schritt | Was ist zu tun? | Bemerkungen |
|---|---|---|
| 1 | ISM-Policy erstellen | Definiert Rollover- und Lösch-Bedingungen |
| 2 | Index-Template erstellen | Stellt korrekte Einstellungen für neue Indizes sicher |
| 3 | Initialen Index erstellen | Erster Index mit korrekter Benennung |
| 4 | Write-Alias hinzufügen | Alias für Schreiboperationen |
| 5 | Rollover-Alias am Index setzen | Index mit Alias verknüpfen |
| 6 | Policy an Index anhängen | Lifecycle-Management aktivieren |
Schritt-für-Schritt Anleitung
Note: Unter Management/Dev tools kann man die Befehle einfügen und ausführen
- Erstellen Sie die ISM-Policy (JSON editor oder Visual editor):

PUT _plugins/_ism/policies/provisioning_rollover { "policy": { "policy_id": "provisioning_rollover", "description": "Rollover und Löschen von Provisioning-Logs", "default_state": "rollover", "states": [ { "name": "rollover", "actions": [ { "retry": { "count": 3, "backoff": "exponential", "delay": "1m" }, "rollover": { "min_index_age": "1h", "copy_alias": false } } ], "transitions": [ { "state_name": "delete", "conditions": { "min_rollover_age": "3h" } } ] }, { "name": "delete", "actions": [ { "retry": { "count": 3, "backoff": "exponential", "delay": "1m" }, "delete": {} } ], "transitions": [] } ], "ism_template": [ { "index_patterns": ["provisioning_v2*"], "priority": 1 } ] } }
- Bedingungen:
min_index_age: 1h- Index muss ≥1 Stunde alt seinmin_rollover_age: 3h- Löschen 3 Stunden nach Rollover
- Hinweis: Rollover-Bedingungen sind keine UND Bedingung. Wenn man zum Beispiel
minindexageundmin_doc_countund eines davon die Bedingung erfüllt, wird das Rollover ausgeführt
- Erstellen Sie das Index-Template:

PUT _index_template/provisioning_v2_template { "index_patterns": ["provisioning_v2-*"], "template": { "settings": { "index.plugins.index_state_management.rollover_alias": "provisioning_v2" } }, "priority": 100 }
- Erstellen Sie den initialen Index (Visual editor wurde nicht mehr genutzt, weil es mühsam ist):
PUT provisioning_v2-000001
- Der Index muss mit einer Nummer enden (z.B. -000001).
- Fügen Sie den Write-Alias hinzu:
POST _aliases { "actions": [ { "add": { "index": "provisioning_v2-000001", "alias": "provisioning_v2", "is_write_index": true } } ] }
- Setzen Sie den Rollover-Alias am Index:
PUT provisioning_v2-000001/_settings { "index.plugins.index_state_management.rollover_alias": "provisioning_v2" }
- Hängen Sie die Policy an den Index an:
- Alle Befehle in Reihenfolge
POST _plugins/_ism/add/provisioning_v2-000001 { "policy_id": "provisioning_rollover" }
// 1. Policy erstellen PUT _plugins/_ism/policies/provisioning_rollover { "policy": { "policy_id": "provisioning_rollover", "description": "Rollover und Löschen von Provisioning-Logs", "default_state": "rollover", "states": [ { "name": "rollover", "actions": [ { "retry": { "count": 3, "backoff": "exponential", "delay": "1m" }, "rollover": { "min_index_age": "1h", "copy_alias": false } } ], "transitions": [ { "state_name": "delete", "conditions": { "min_rollover_age": "3h" } } ] }, { "name": "delete", "actions": [ { "retry": { "count": 3, "backoff": "exponential", "delay": "1m" }, "delete": {} } ], "transitions": [] } ], "ism_template": [ { "index_patterns": ["provisioning_v2*"], "priority": 1 } ] } } // 2. Template erstellen PUT _index_template/provisioning_v2_template { "index_patterns": ["provisioning_v2-*"], "template": { "settings": { "index.plugins.index_state_management.rollover_alias": "provisioning_v2" } }, "priority": 100 } // 3. Initialen Index erstellen PUT provisioning_v2-000001 // 4. Write-Alias hinzufügen POST _aliases { "actions": [ { "add": { "index": "provisioning_v2-000001", "alias": "provisioning_v2", "is_write_index": true } } ] } // 5. Rollover-Alias am Index setzen PUT provisioning_v2-000001/_settings { "index.plugins.index_state_management.rollover_alias": "provisioning_v2" } // 6. Policy anhängen POST _plugins/_ism/add/provisioning_v2-000001 { "policy_id": "provisioning_rollover" }
Vorgang 2: Anwendung konfigurieren
Konfiguration der Python-Anwendung zur Verwendung des Alias anstelle von datumsbasierten Indizes.
| Schritt | Was ist zu tun? | Bemerkungen |
|---|---|---|
| 1 | Logging-Konfiguration anpassen | index_rotate auf NEVER setzen |
| 2 | Anwendung neu starten | Änderungen aktivieren |
Schritt-für-Schritt Anleitung
- Passen Sie die settings.py an:
'opensearch': { "level": 'DEBUG', "class": 'opensearch_logger.OpenSearchHandler', "index_name": "provisioning_v2", # Schreibe zum Alias "index_rotate": "NEVER", # Datums-Suffix deaktivieren "hosts": [{"host": OPENSEARCH_LOGGING_SERVER, "port": 9200}], "http_auth": ("admin", "admin"), "http_compress": True, "filters": ['correlation_id'], },
- Starten Sie die Anwendung neu
Vorgang 3: Überprüfung und Fehlerbehebung
Befehle zur Überprüfung des Status und zur Fehlerbehebung.
| Schritt | Was ist zu tun? | Bemerkungen |
|---|---|---|
| 1 | Indizes prüfen | Alle provisioning Indizes anzeigen |
| 2 | Alias prüfen | Alias-Konfiguration verifizieren |
| 3 | Policy-Status prüfen | ISM-Status aller Indizes anzeigen |
Überprüfungs-Befehle
- Alle Indizes anzeigen:
GET _cat/indices/provisioning_v2-*?v&h=index,docs.count,creation.date.string
- Alias-Konfiguration prüfen:
GET _alias/provisioning_v2
- Policy-Status prüfen:
GET _plugins/_ism/explain/provisioning_v2-*
Fehlerbehebungs-Befehle
- Bei Rollover-Fehler manuell wiederholen:
POST _plugins/_ism/retry/provisioning_v2-000001
- Policy an Index anhängen (falls nicht angehängt):
POST _plugins/_ism/add/provisioning_v2-000001 { "policy_id": "provisioning_rollover" }
- Aktualisierte Policy auf bestehende Indizes anwenden:
POST _plugins/_ism/change_policy/provisioning_v2-* { "policy_id": "provisioning_rollover" }
- Manueller Rollover erzwingen (umgeht Bedingungen):
POST provisioning_v2/_rollover
Häufige Fehler
| Fehler | Ursache | Lösung |
|---|---|---|
Missing rollover_alias index setting
|
Index weiss nicht welchen Alias verwenden | PUT index/_settings mit rollover_alias
|
duplicated alias in index template
|
Template hat aliases Abschnitt
|
aliases aus Template entfernen
|
Conditions not met
|
min_doc_count UND min_index_age nicht beide erfüllt | Warten, oder Schwellwerte zum Testen senken |
alias name conflicts with index
|
Index und Alias haben gleichen Namen | Index löschen oder anderen Alias-Namen verwenden |
Lifecycle-Ablauf
1. App schreibt zum Alias "provisioning_v2"
↓
2. Alias zeigt auf aktuellen Index (z.B. -000001)
↓
3. Wenn ≥5 Dokumente UND ≥1h alt → ROLLOVER
↓
4. Neuer Index erstellt (-000002), Alias wird verschoben
↓
5. Alter Index wartet im "rollover" Zustand
↓
6. Nach 3h seit Rollover → ÜBERGANG zu delete
↓
7. Index wird GELÖSCHT