Salta al contenuto

Come posso creare un modello di indice nel mio cluster del Servizio OpenSearch?

6 minuti di lettura
0

Desidero creare un modello di indice nel mio cluster del Servizio OpenSearch di Amazon.

Risoluzione

Prerequisiti:

  • L'utente AWS Identity and Access Management (AWS IAM) deve avere le autorizzazioni PUT e POST per creare un modello di indice. Esempio di policy di accesso:
    {  "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/*"
        }
      ]
    }
    **Nota:**Sostituisci region con la tua Regione AWS, account-id con il tuo account AWS e domain-name con il nome del tuo dominio.
  • La versione del cluster deve consentire i modelli di indice.

Crea il modello di indice

Utilizza OpenSearch Dashboards

Puoi utilizzare OpenSearch Dashboards per creare un modello di indice per i cluster del Servizio OpenSearch o Elasticsearch con o senza controllo granulare degli accessi. Per istruzioni, consulta Creating an index pattern (Creazione di un modello di indice) sul sito web OpenSearch.

Utilizza i comandi curl

Per creare un modello di indice per i cluster senza controllo granulare degli accessi, esegui questo comando in base al tipo di cluster.

Cluster Elasticsearch:

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*" } }'

Nota: sostituisci sample-index con il nome o il modello del tuo indice.

Cluster del Servizio OpenSearch:

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*" } }'

Nota: sostituisci sample-index con il nome o il modello del tuo indice.

Per i cluster con controllo granulare degli accessi, completa i seguenti passaggi:

  1. Per generare cookie di autorizzazione nel file auth.txt, esegui questo comando in base al tipo di cluster.
    Cluster Elasticsearch:
    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
    Nota: sostituisci usernameexample con il tuo nome utente e passwordexample con la tua password.
    Cluster del Servizio OpenSearch:
    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
    Nota: sostituisci usernameexample con il tuo nome utente e passwordexample con la tua password.
  2. Per inviare la richiesta di creazione del modello di indice, esegui questo comando in base al tipo di cluster:
    Cluster Elasticsearch:
    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
    Nota: sostituisci sample-index con il nome o il modello del tuo indice.
    Cluster del Servizio OpenSearch:
    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
    Nota: sostituisci sample-index con il nome o il modello del tuo indice.

Utilizza Python

Prerequisiti:

Esegui questo comando Python per creare il modello di indice per i cluster OpenSearch Service:

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)

Nota: sostituisci domain-endpoint con l'endpoint del tuo dominio e aos-region con la tua Regione. Per i cluster Elasticsearch, sostituisci _dashboards/api/saved_objects/index-pattern con _plugin/kibana/api/saved_objects/index-pattern.

Risolvi i problemi relativi alla creazione del modello di indice

Utilizzi un controllo granulare degli accessi con l'autenticazione di SAML 2.0 o Amazon Cognito

Se il dominio del cluster utilizza SAML 2.0 o Amazon Cognito per l'autenticazione, crea un utente interno per gestire il modello di indice.

Nota: per i cluster in cui è stato attivato il controllo granulare degli accessi, l'utente deve avere le autorizzazioni ESHttpPut e ESHttpPost per creare un modello di indice.

Non puoi creare il modello di indice nel tenant Global

Per impostazione predefinita, OpenSearch Dashboards crea modelli di indice nel tenant Global. Per creare un modello di indice al di fuori del tenant Global, esegui questo comando:

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

Nota: sostituisci sample-index con il nome o il modello del tuo indice.

Non hai incluso l'alias .kibana nel cluster

Per risolvere il problema, completa i seguenti passaggi:

  1. Per verificare se l'alias .kibana esiste nel cluster, esegui questo comando:
    curl -XGET https://opensearch-end-point/_cat/aliases
    Nota: per i cluster con controllo granulare degli accessi, includi il flag -u con il tuo nome utente e la tua password. Esempio di comando:
    curl -XPOST -u 'master-user:master-user-password' 'domain-endpoint/_cat/indices
    Se l'indice .kibana non esiste, procedi al passaggio 4.
  2. Per creare un backup dell'indice .kibana, esegui questo comando:
    curl -XPOST "https://domain-endpoint/_reindex" -H 'Content-Type: application/json' -d'{
      "source": {
        "index": ".kibana"
      },
      "dest": {
     "index": ".kibana_backup"
      }
    }'
    Nota: sostituisci domain-endpoint con l'endpoint del tuo dominio. Per i cluster con controllo granulare degli accessi, includi il flag -u con il tuo nome utente e la tua password.
  3. Per eliminare l'indice .kibana, esegui questo comando:
    curl -XDELETE "https://domain-endpoint/.kibana"
    Nota: sostituisci domain-endpoint con l'endpoint del tuo dominio. Per i cluster con controllo granulare degli accessi, includi il flag -u con il tuo nome utente e la tua password.
  4. Per creare un alias .kibana e indirizzarlo all'indice .kibana_backup, esegui questo comando:
    curl -XPOST "https://domain-endpoint/_aliases" -H 'Content-Type: application/json' -d'{
      "actions": [
        {
          "add": {
            "index": ".kibana_backup",
            "alias": ".kibana"
          }
        }
      ]
    }'
    Nota: sostituisci domain-endpoint con l'endpoint del tuo dominio. Per i cluster con controllo granulare degli accessi, includi il flag -u con il tuo nome utente e la tua password.

Informazioni correlate

Export and import Kibana dashboards with Amazon ES (Esportazione e importazione di dashboard Kibana con il Servizio OpenSearch)

Perché l'operazione dell'indice di rollover nella policy ISM continua a non riuscire sul Servizio OpenSearch di Amazon?