Direkt zum Inhalt

Wie erstelle ich ein Indexmuster in meinem OpenSearch Service-Cluster?

Lesedauer: 5 Minute
0

Ich möchte ein Indexmuster in meinem Amazon OpenSearch Service-Cluster erstellen.

Lösung

Voraussetzungen:

  • Der Benutzer von AWS Identity and Access Management (IAM) muss über PUT- und POST-Berechtigungen verfügen, um ein Indexmuster zu erstellen. Beispiel für eine Zugriffsrichtlinie:
    {  "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "VisualEditor0",
          "Effect": "Allow",
          "Action": [
            "es:ESHttpHead",
            "es:ESHttpPost",
            "es:ESHttpGet",
            "es:ESHttpDelete",
            "es:ESHttpPut"
          ],
          "Resource": "arn:aws:es:region:account-id:domain/domain-name/*"
        }
      ]
    }
    Hinweis: Ersetze region durch deine AWS-Region, account-id durch deine AWS-Konto-ID und domain-name durch deinen Domain-Namen.
  • Deine Cluster-Version muss Indexmuster zulassen.

Indexmuster erstellen

OpenSearch Dashboards verwenden

Du kannst OpenSearch Dashboards verwenden, um ein Indexmuster für OpenSearch Service- oder Elasticsearch-Cluster mit oder ohne differenzierte Zugriffssteuerung zu erstellen. Anweisungen findest du unter Indexmuster erstellen auf der OpenSearch-Website.

Verwenden von curl-Befehlen

Um ein Indexmuster für Cluster ohne detaillierte Zugriffssteuerung zu erstellen, führe den folgenden Befehl auf der Grundlage des Cluster-Typs aus.

Elasticsearch-Cluster:

curl -X POST  https://elasticsearch-end-point/_plugin/kibana/api/saved_objects/index-pattern/ \
-H "kbn-xsrf: true" \

-H "content-type: application/json" \

-d '{ "attributes": { "title": "sample-index*" } }'

Hinweis: Ersetze sample-index durch deinen Indexnamen oder dein Indexmuster.

OpenSearch Service-Cluster:

curl -X POST  https://opensearch-end-point/_dashboards/api/saved_objects/index-pattern/ \
-H "kbn-xsrf: true" \

-H "content-type: application/json" \

-d '{ "attributes": { "title": "sample-index*" } }'

Hinweis: Ersetze sample-index durch deinen Indexnamen oder dein Indexmuster.

Führe für Cluster mit detaillierter Zugriffssteuerung die folgenden Schritte aus:

  1. Um Autorisierungs-Cookies in der Datei auth.txt zu generieren, führe je nach Cluster-Typ den folgenden Befehl aus.
    Elasticsearch-Cluster:
    curl -X POST  https://elasticsearch-end-point/_plugin/kibana/auth/login  \
    -H "kbn-xsrf: true" \
    -H "content-type: application/json" \
    -d '{"username":"usernameexample", "password":"passwordexample"}' \
    -c auth.txt
    Hinweis: Ersetze usernameexample durch deinen Benutzernamen und passwordexample durch dein Passwort.
    OpenSearch Service-Cluster:
    curl -X POST  https://opensearch-end-point/_dashboards/auth/login  \
    -H "kbn-xsrf: true" \
    -H "content-type: application/json" \
    -d '{"username":"usernameexample", "password":"passwordexample"}' \
    -c auth.txt
    Hinweis: Ersetze usernameexample durch deinen Benutzernamen und passwordexample durch dein Passwort.
  2. Um die Anfrage zur Erstellung des Indexmusters zu senden, führe den folgenden Befehl basierend auf deinem Cluster-Typ aus:
    Elasticsearch-Cluster:
    curl -X POST  https://elasticsearch-end-point/_plugin/kibana/api/saved_objects/index-pattern/test  \
    -H "kbn-xsrf: true" \
    -H "content-type: application/json" \
    -d '{ "attributes": { "title": "sample-index*" } }' \
    -b auth.txt
    Hinweis: Ersetze sample-index durch deinen Indexnamen oder dein Indexmuster.
    OpenSearch Service-Cluster:
    curl -X POST  https://opensearch-end-point/_dashboards/api/saved_objects/index-pattern/  \
    -H "kbn-xsrf: true" \
    -H "content-type: application/json" \
    -d '{ "attributes": { "title": "sample-index*" } }' \
    -b auth.txt
    Hinweis: Ersetze sample-index durch deinen Indexnamen oder dein Indexmuster.

Python verwenden

Voraussetzungen:

  • Ordne die Rolle, die den Python-Code ausführt, der Backend-Rolle für differenzierte Zugriffssteuerungs-Cluster zu.
  • Führe die folgenden Befehle aus, um die erforderlichen Abhängigkeiten zu installieren:
    pip install boto3
    pip install opensearch-py
    pip install requests
    pip install requests-aws4auth

Führe den folgenden Python-Befehl aus, um das Indexmuster für OpenSearch Service-Cluster zu erstellen:

import boto3
import requests
from requests_aws4auth import AWS4Auth

host = 'https://domain-endpoint/' # include trailing /
region = 'aos-region' # example us-west-1
service = 'es'
credentials = boto3.Session().get_credentials()
awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)


path = '_dashboards/api/saved_objects/index-pattern' # _plugin/kibana/api/saved_objects/index-pattern for es versions
url = host + path
payload = {"attributes":{"title":"multi-logs-*","fields":"[]"}}
headers = {"Content-Type": "application/json", "osd-xsrf": "true", "security_tenant": "global" }
r = requests.post (url, auth=awsauth, json=payload, headers=headers)
print(r.status_code)
print(r.text)

Hinweis: Ersetze domain-endpoint durch deinen Domain-Endpunkt und aos-region durch deine Region. Ersetze bei Elasticsearch-Clustern _dashboards/api/saved_objects/index-pattern durch _plugin/kibana/api/saved_objects/index-pattern.

Probleme bei der Erstellung von Indexmustern beheben

Du verwendest eine differenzierte Zugriffssteuerung mit SAML 2.0- oder Amazon Cognito-Authentifizierung

Wenn die Domain für den Cluster SAML 2.0 oder Amazon Cognito zur Authentifizierung verwendet, erstelle einen internen Benutzer zur Verwaltung des Indexmusters.

Hinweis: Für Cluster, bei denen du die differenzierte Zugriffssteuerung aktiviert hast, muss der Benutzer über die Berechtigungen ESHttpPut und ESHttpPost verfügen, um ein Indexmuster zu erstellen.

Du kannst das Indexmuster nicht im globalen Mandanten erstellen

Standardmäßig erstellt OpenSearch Dashboards Indexmuster unter dem globalen Mandanten. Um ein Indexmuster außerhalb des globalen Mandanten zu erstellen, führe den folgenden Befehl aus:

curl -s -X POST https://opensearch-end-point/_dashboards/api/saved_objects/index-pattern/sample-index -d '{"attributes": {"title": "sample-index*"}}' \
-H "osd-xsrf:true" \
-H "securitytenant: private" \
-H "content-type:application/json" \
-b auth.txt

Hinweis: Ersetze sample-index durch deinen Indexnamen oder dein Indexmuster.

Du hast den Alias.kibana nicht in den Cluster aufgenommen

Gehe wie folgt vor, um dieses Problem zu beheben:

  1. Führe den folgenden Befehl aus, um zu überprüfen, ob der Alias .kibana im Cluster existiert:
    curl -XGET https://opensearch-end-point/_cat/aliases
    Hinweis: Füge bei Clustern mit differenzierter Zugriffssteuerung das Flag -u in deinen Benutzernamen und dein Passwort ein. Beispielbefehl:
    curl -XPOST -u 'master-user:master-user-password' 'domain-endpoint/_cat/indices
    Wenn der .kibana-Index nicht existiert, fahre mit Schritt 4 fort.
  2. Führe den folgenden Befehl aus, um eine Sicherungskopie des .kibana-Index zu erstellen:
    curl -XPOST "https://domain-endpoint/_reindex" -H 'Content-Type: application/json' -d'{
      "source": {
        "index": ".kibana"
      },
      "dest": {
     "index": ".kibana_backup"
      }
    }'
    Hinweis: Ersetze domain-endpoint durch deinen Domain-Endpunkt. Füge bei Clustern mit differenzierter Zugriffssteuerung das Flag -u in deinen Benutzernamen und dein Passwort ein.
  3. Führe den folgenden Befehl aus, um den .kibana-Index zu löschen:
    curl -XDELETE "https://domain-endpoint/.kibana"
    Hinweis: Ersetze domain-endpoint durch deinen Domain-Endpunkt. Füge bei Clustern mit differenzierter Zugriffssteuerung das Flag -u in deinen Benutzernamen und dein Passwort ein.
  4. Führe den folgenden Befehl aus, um einen .kibana-Alias zu erstellen und ihn auf den .kibana_backup-Index zu verweisen:
    curl -XPOST "https://domain-endpoint/_aliases" -H 'Content-Type: application/json' -d'{
      "actions": [
        {
          "add": {
            "index": ".kibana_backup",
            "alias": ".kibana"
          }
        }
      ]
    }'
    Hinweis: Ersetze domain-endpoint durch deinen Domain-Endpunkt. Füge bei Clustern mit differenzierter Zugriffssteuerung das Flag -u in deinen Benutzernamen und dein Passwort ein.

Ähnliche Informationen

Kibana-Dashboards mit OpenSearch Service exportieren und importieren

Warum schlägt die Rollover-Indexaktion in meiner ISM-Richtlinie in OpenSearch Service immer wieder fehl?

AWS OFFICIALAktualisiert vor 3 Monaten