Saltar al contenido

¿Cómo creo un patrón de índice en mi clúster de OpenSearch Service?

6 minutos de lectura
0

Quiero crear un patrón de índice en mi clúster de Amazon OpenSearch Service.

Resolución

Requisitos previos:

  • El usuario de AWS Identity and Access Management (IAM) debe tener permisos PUT y POST para crear un patrón de índice. Ejemplo de política de acceso:
    {  "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: Sustituye region por tu región de AWS, account-id por el id. de tu cuenta de AWS y domain-name por el nombre de tu dominio.
  • La versión de clúster debe permitir patrones de índice.

Creación del patrón de índice

Uso de Paneles de OpenSearch

Puedes usar Paneles de OpenSearch para crear un patrón de índice para los clústeres de OpenSearch Service o Elasticsearch con o sin control de acceso detallado. Para obtener instrucciones, consulta Creating an index pattern (Creación de un patrón de índice) en el sitio web de OpenSearch.

Usar los comandos curl

Para crear un patrón de índice para clústeres sin un control de acceso detallado, ejecuta el siguiente comando según el tipo de clúster.

Clústeres de 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: Sustituye sample-index por el nombre o patrón de tu índice.

Clústeres de OpenSearch Service:

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: Sustituye sample-index por el nombre o patrón de tu índice.

Para los clústeres con un control de acceso detallado, sigue estos pasos:

  1. Para generar cookies de autorización en el archivo auth.txt, ejecuta el siguiente comando según el tipo de clúster.
    Clústeres de 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: Sustituye usernameexample por tu nombre de usuario y passwordexample por tu contraseña.
    Clústeres de OpenSearch Service:
    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: Sustituye usernameexample por tu nombre de usuario y passwordexample por tu contraseña.
  2. Para enviar la solicitud de creación de patrones de índice, ejecuta el siguiente comando según el tipo de clúster:
    Clústeres de 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: Sustituye sample-index por el nombre o patrón de tu índice.
    Clústeres de OpenSearch Service:
    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: Sustituye sample-index por el nombre o patrón de tu índice.

Uso de Python

Requisitos previos:

Ejecuta el siguiente comando de Python para crear el patrón de índice para los clústeres de 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: Sustituye domain-endpoint por el punto de enlace de tu dominio y aos-region por tu región. Para los clústeres de Elasticsearch, sustituye _dashboards/api/saved_objects/index-pattern por _plugin/kibana/api/saved_objects/index-pattern.

Solución de problemas de creación de patrones de índice

Utiliza un control de acceso detallado con la autenticación SAML 2.0 o Amazon Cognito

Si el dominio del clúster usa SAML 2.0 o Amazon Cognito para la autenticación, crea un usuario interno para administrar el patrón de índice.

Nota: En el caso de los clústeres en los que se ha activado un control de acceso detallado, el usuario debe tener los permisos ESHttpPut y ESHttpPost para crear un patrón de índice.

No puedes crear el patrón de índice en el inquilino global

De forma predeterminada, Paneles de OpenSearch crea patrones de índice en el inquilino global. Para crear un patrón de índice fuera del inquilino global, ejecuta el siguiente 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: Sustituye sample-index por el nombre o patrón de tu índice.

No incluiste el alias .kibana en el clúster

Para solucionar este problema, sigue estos pasos:

  1. Para comprobar si el alias**.kibana** existe en el clúster, ejecuta el siguiente comando:
    curl -XGET https://opensearch-end-point/_cat/aliases
    Nota: Para los clústeres con un control de acceso detallado, incluye la marca -u con tu nombre de usuario y contraseña. Ejemplo de comando:
    curl -XPOST -u 'master-user:master-user-password' 'domain-endpoint/_cat/indices
    Si el índice .kibana no existe, continúa con el paso 4.
  2. Para crear una copia de seguridad del índice .kibana, ejecuta el siguiente comando:
    curl -XPOST "https://domain-endpoint/_reindex" -H 'Content-Type: application/json' -d'{
      "source": {
        "index": ".kibana"
      },
      "dest": {
     "index": ".kibana_backup"
      }
    }'
    Nota: Sustituye domain-endpoint por el punto de enlace de tu dominio. Para los clústeres con un control de acceso detallado, incluye la marca -u con tu nombre de usuario y contraseña.
  3. Para eliminar el índice .kibana, ejecuta el siguiente comando:
    curl -XDELETE "https://domain-endpoint/.kibana"
    Nota: Sustituye domain-endpoint por el punto de enlace de tu dominio. Para los clústeres con un control de acceso detallado, incluye la marca -u con tu nombre de usuario y contraseña.
  4. Para crear un alias .kibana y dirigirlo al índice .kibana_backup, ejecuta el siguiente comando:
    curl -XPOST "https://domain-endpoint/_aliases" -H 'Content-Type: application/json' -d'{
      "actions": [
        {
          "add": {
            "index": ".kibana_backup",
            "alias": ".kibana"
          }
        }
      ]
    }'
    Nota: Sustituye domain-endpoint por el punto de enlace de tu dominio. Para los clústeres con un control de acceso detallado, incluye la marca -u con tu nombre de usuario y contraseña.

Información relacionada

Export and import Kibana dashboards with OpenSearch Service (Exportación e importación de paneles de Kibana con OpenSearch Service)

¿Por qué sigue fallando la acción de transferencia de índice en mi política de ISM en OpenSearch Service?

OFICIAL DE AWSActualizada hace 6 meses