ElasticSearch

Supported OS Linux Windows Mac OS

Versión de la integración8.0.1

Dashboard de Elasticsearch

Información general

Mantente actualizado sobre el estado de tu clúster de Elasticsearch, desde su estado general hasta el uso del montón de JVM y todo lo demás. Recibe notificaciones cuando debas reactivar una réplica, añadir capacidad al clúster o modificar su configuración. Después de hacerlo, realiza un seguimiento de cómo responden las métricas de tu clúster.

El check de Elasticsearch del Datadog Agent recopila métricas sobre el rendimiento de la búsqueda e indexación, el uso de memoria y la recolección de elementos sin usar, la disponibilidad de nodos, las estadísticas de partición, el espacio en disco y el rendimiento, las tareas pendientes, y mucho más. El Agent también envía eventos y checks de servicio para conocer el estado general de tu clúster.

Configuración

Instalación

El check de Elasticsearch se incluye en el paquete del Datadog Agent. No se necesita instalación adicional.

Configuración

Host

A fin de configurar este check para un Agent que se ejecuta en un host:

Recopilación de métricas
  1. Edita el archivo elastic.d/conf.yaml en la carpeta conf.d/ en la raíz del directorio de configuración del Agent para empezar a recopilar las métricas de Elasticsearch. Consulta el elastic.d/conf.yaml de muestra para ver todas las opciones de configuración disponibles.

    init_config:
    
    instances:
      ## @param url - string - required
      ## The URL where Elasticsearch accepts HTTP requests. This is used to
      ## fetch statistics from the nodes and information about the cluster health.
      #
      - url: http://localhost:9200
    

    Notas:

    • Si recopilas métricas de Elasticsearch desde un solo Datadog Agent que se ejecuta fuera del clúster, como por ejemplo con un Elasticsearch alojado, establece cluster_stats en true.

    • Las etiquetas (tags) de nivel de Agent no se aplican a los hosts de un clúster que no ejecuta el Agent. Usa etiquetas de nivel de integración en <integration>.d/conf.yaml para garantizar que TODAS las métricas tengan etiquetas consistentes. Por ejemplo:

      init_config:
      instances:
        - url: "%%env_MONITOR_ES_HOST%%"
          username: "%%env_MONITOR_ES_USER%%"
          password: *********
          auth_type: basic
          cluster_stats: true
          tags:
          - service.name:elasticsearch
          - env:%%env_DD_ENV%%
      
    • A fin de usar la integración de Elasticsearch del Agent para los servicios de AWS Elasticsearch, configura el parámetro url para que apunte a la URL de estadísticas de AWS Elasticsearch.

    • Todas las solicitudes a la API de configuración de Amazon ES deben estar firmadas. Consulta Cómo realizar y firmar solicitudes de OpenSearch Service para obtener más información.

    • El tipo de autenticación de aws se basa en Boto3 para recopilar las credenciales de AWS de .aws/credentials de manera automática. Usa auth_type: basic en conf.yaml y define las credenciales con username: <USERNAME> y password: <PASSWORD>.

    • Debes crear un usuario y un rol (si aún no los tienes) en Elasticsearch con los permisos adecuados para la monitorización. Esto se puede hacer a través de la API REST que ofrece Elasticsearch o la interfaz de usuario de Kibana.

    • Si has habilitado las funciones de seguridad en Elasticsearch, puedes usar el privilegio monitor o manage al usar la API para realizar llamadas a los índices de Elasticsearch.

    • Incluye las siguientes propiedades en el rol creado:

      name = "datadog"
      indices {
        names = [".monitoring-*", "metricbeat-*"]
        privileges = ["read", "read_cross_cluster", "monitor"]
      }
      cluster = ["monitor"]
      

      Añade el rol al usuario:

      roles = [<created role>, "monitoring_user"]
      

      Para más información, consulta crear o actualizar roles y crear o actualizar usuarios.

  2. Reinicia el Agent.

Consultas personalizadas

La integración de Elasticsearch te permite recopilar métricas personalizadas a través de consultas personalizadas mediante la opción de configuración custom_queries.

Nota: Al ejecutar consultas personalizadas, usa una cuenta de solo lectura para asegurarte de que no cambie la instancia de Elasticsearch.

custom_queries:
 - endpoint: /_search
   data_path: aggregations.genres.buckets
   payload:
     aggs:
       genres:
         terms:
           field: "id"
   columns:
   - value_path: key
     name: id
     type: tag
   - value_path: doc_count
     name: elasticsearch.doc_count
   tags:
   - custom_tag:1

La consulta personalizada se envía como una solicitud GET. Si usas un parámetro payload opcional, la solicitud se envía como una solicitud POST.

Los value_path pueden ser claves de cadena o índices de lista. Por ejemplo:

{
  "foo": {
    "bar": [
      "result0",
      "result1"
    ]
  }
}

value_path: foo.bar.1 devuelve el valor result1.

Recopilación de trazas

Datadog APM se integra con Elasticsearch para ver las trazas (traces) en todo el sistema distribuido. La recopilación de trazas se encuentra habilitada de manera predeterminada en el Datadog Agent versión 6 o posterior. Para empezar a recopilar trazas:

  1. Habilita la recopilación de trazas en Datadog.
  2. Instrumenta la aplicación que realiza solicitudes a Elasticsearch.
Recopilación de logs

Disponible para las versiones del Agent posteriores a la 6.0

  1. La recopilación de logs se encuentra deshabilitada de manera predeterminada en el Datadog Agent. Habilítala en el archivo datadog.yaml con:

    logs_enabled: true
    
  2. Para recopilar logs lentos de búsqueda e indexarlos, configura tus ajustes de Elasticsearch. De manera predeterminada, los logs lentos de búsqueda no se encuentran habilitados.

    • A fin de configurar logs lentos de índice para un índice <INDEX> determinado:

      curl -X PUT "localhost:9200/<INDEX>/_settings?pretty" -H 'Content-Type: application/json' -d' {
        "index.indexing.slowlog.threshold.index.warn": "0ms",
        "index.indexing.slowlog.threshold.index.info": "0ms",
        "index.indexing.slowlog.threshold.index.debug": "0ms",
        "index.indexing.slowlog.threshold.index.trace": "0ms",
        "index.indexing.slowlog.level": "trace",
        "index.indexing.slowlog.source": "1000"
      }'
      
    • A fin de configurar logs lentos de búsqueda para un índice <INDEX> determinado:

      curl -X PUT "localhost:9200/<INDEX>/_settings?pretty" -H 'Content-Type: application/json' -d' {
        "index.search.slowlog.threshold.query.warn": "0ms",
        "index.search.slowlog.threshold.query.info": "0ms",
        "index.search.slowlog.threshold.query.debug": "0ms",
        "index.search.slowlog.threshold.query.trace": "0ms",
        "index.search.slowlog.threshold.fetch.warn": "0ms",
        "index.search.slowlog.threshold.fetch.info": "0ms",
        "index.search.slowlog.threshold.fetch.debug": "0ms",
        "index.search.slowlog.threshold.fetch.trace": "0ms"
      }'
      
  3. Añade este bloque de configuración a tu archivo elastic.d/conf.yaml para empezar a recopilar tus logs de Elasticsearch:

    logs:
      - type: file
        path: /var/log/elasticsearch/*.log
        source: elasticsearch
        service: "<SERVICE_NAME>"
    
    • Añade instancias adicionales para empezar a recopilar logs lentos:

      - type: file
        path: "/var/log/elasticsearch/\
              <CLUSTER_NAME>_index_indexing_slowlog.log"
        source: elasticsearch
        service: "<SERVICE_NAME>"
      
      - type: file
        path: "/var/log/elasticsearch/\
              <CLUSTER_NAME>_index_search_slowlog.log"
        source: elasticsearch
        service: "<SERVICE_NAME>"
      

      Cambia los valores de los parámetros path y service y configúralos para tu entorno.

  4. Reinicia el Agent.

Docker

A fin de configurar este check para un Agent que se ejecuta en un contenedor:

Recopilación de métricas

Establece las plantillas de integraciones de Autodiscovery como etiquetas (labels) de Docker en el contenedor de tu aplicación:

LABEL "com.datadoghq.ad.check_names"='["elastic"]'
LABEL "com.datadoghq.ad.init_configs"='[{}]'
LABEL "com.datadoghq.ad.instances"='[{"url": "http://%%host%%:9200"}]'
Recopilación de logs

La recopilación de logs se encuentra deshabilitada de manera predeterminada en el Datadog Agent. Para habilitarla, consulta la Recopilación de logs de Docker.

Luego, configura las integraciones de log como etiquetas de Docker:

LABEL "com.datadoghq.ad.logs"='[{"source":"elasticsearch","service":"<SERVICE_NAME>"}]'
Recopilación de trazas

APM para aplicaciones en contenedores es compatible con el Agent versión 6, o posterior, pero requiere una configuración adicional a fin de empezar a recopilar trazas.

Variables de entorno necesarias en el contenedor del Agent:

ParámetroValor
<DD_API_KEY>api_key
<DD_APM_ENABLED>true
<DD_APM_NON_LOCAL_TRAFFIC>true

Consulta el Rastreo de aplicaciones de Kubernetes y la Configuración del daemon de Kubernetes para obtener una lista completa de las variables de entorno y configuración disponibles.

Luego, instrumenta tu contenedor de aplicaciones y configura DD_AGENT_HOST con el nombre del contenedor de tu Agent.

Kubernetes

A fin de configurar este check para un Agent que se ejecuta en Kubernetes:

Recopilación de métricas

Establece las plantillas de integraciones de Autodiscovery como anotaciones de pod en el contenedor de tu aplicación. Además de esto, las plantillas también se pueden configurar con un archivo, un mapa de configuración o un almacén de clave-valor.

Anotaciones v1 (para el Datadog Agent versión 7.36 o anterior)

apiVersion: v1
kind: Pod
metadata:
  name: elasticsearch
  annotations:
    ad.datadoghq.com/elasticsearch.check_names: '["elastic"]'
    ad.datadoghq.com/elasticsearch.init_configs: '[{}]'
    ad.datadoghq.com/elasticsearch.instances: |
      [
        {
          "url": "http://%%host%%:9200"
        }
      ]      
spec:
  containers:
    - name: elasticsearch

Anotaciones v2 (para el Datadog Agent versión 7.36 o posterior)

apiVersion: v1
kind: Pod
metadata:
  name: elasticsearch
  annotations:
    ad.datadoghq.com/elasticsearch.checks: |
      {
        "elastic": {
          "init_config": {},
          "instances": [
            {
              "url": "http://%%host%%:9200"
            }
          ]
        }
      }      
spec:
  containers:
    - name: elasticsearch
Recopilación de logs

La recopilación de logs se encuentra deshabilitada de manera predeterminada en el Datadog Agent. Para habilitarla, consulta la Recopilación de logs de Kubernetes.

Luego, establece las integraciones de log como anotaciones de pod. Esto también se puede configurar con un archivo, un mapa de configuración o un almacén de clave-valor.

Anotaciones v1/v2

apiVersion: v1
kind: Pod
metadata:
  name: elasticsearch
  annotations:
    ad.datadoghq.com/elasticsearch.logs: '[{"source":"elasticsearch","service":"<SERVICE_NAME>"}]'
spec:
  containers:
    - name: elasticsearch
Recopilación de trazas

APM para aplicaciones en contenedores es compatible con los hosts que ejecutan el Agent versión 6, o posterior, pero requiere una configuración adicional a fin de empezar a recopilar trazas.

Variables de entorno necesarias en el contenedor del Agent:

ParámetroValor
<DD_API_KEY>api_key
<DD_APM_ENABLED>true
<DD_APM_NON_LOCAL_TRAFFIC>true

Consulta el Rastreo de aplicaciones de Kubernetes y la Configuración del daemon de Kubernetes para obtener una lista completa de las variables de entorno y configuración disponibles.

Luego, instrumenta tu contenedor de aplicaciones y configura DD_AGENT_HOST con el nombre del contenedor de tu Agent.

ECS

A fin de configurar este check para un Agent que se ejecuta en ECS:

Recopilación de métricas

Establece las plantillas de integraciones de Autodiscovery como etiquetas de Docker en el contenedor de tu aplicación:

{
  "containerDefinitions": [{
    "name": "elasticsearch",
    "image": "elasticsearch:latest",
    "dockerLabels": {
      "com.datadoghq.ad.check_names": "[\"elastic\"]",
      "com.datadoghq.ad.init_configs": "[{}]",
      "com.datadoghq.ad.instances": "[{\"url\": \"http://%%host%%:9200\"}]"
    }
  }]
}
Recopilación de logs

La recopilación de logs se encuentra deshabilitada de manera predeterminada en el Datadog Agent. Para habilitarla, consulta la Recopilación de logs de ECS.

Luego, configura las integraciones de log como etiquetas de Docker:

{
  "containerDefinitions": [{
    "name": "elasticsearch",
    "image": "elasticsearch:latest",
    "dockerLabels": {
      "com.datadoghq.ad.logs": "[{\"source\":\"elasticsearch\",\"service\":\"<SERVICE_NAME>\"}]"
    }
  }]
}
Recopilación de trazas

APM para aplicaciones en contenedores es compatible con el Agent versión 6, o posterior, pero requiere una configuración adicional a fin de empezar a recopilar trazas.

Variables de entorno necesarias en el contenedor del Agent:

ParámetroValor
<DD_API_KEY>api_key
<DD_APM_ENABLED>true
<DD_APM_NON_LOCAL_TRAFFIC>true

Consulta el Rastreo de aplicaciones de Kubernetes y la Configuración del daemon de Kubernetes para obtener una lista completa de las variables de entorno y configuración disponibles.

Luego, instrumenta tu contenedor de aplicaciones y configura DD_AGENT_HOST en la dirección IP privada de EC2.

Validación

Ejecuta el subcomando de estado del Agent y busca elastic en la sección Checks:

Datos recopilados

De manera predeterminada, el Agent no envía todas las siguientes métricas. Para enviar todas las métricas, configura indicadores en elastic.yaml como se muestra arriba.

  • pshard_stats envía las métricas elasticsearch.primaries.* y elasticsearch.indices.count
  • index_stats envía la métrica elasticsearch.index.*
  • pending_task_stats envía la métrica elasticsearch.pending_*
  • slm_stats envía la métrica elasticsearch.slm.*

Métricas

Eventos

El check de Elasticsearch emite un evento a Datadog cada vez que cambia el estado general de tu clúster de Elasticsearch: rojo, amarillo o verde.

Checks de servicio

Solucionar problemas

Referencias adicionales

PREVIEWING: may/embedded-workflows