Host
A fin de configurar este check para un Agent que se ejecuta en un host:
Recopilación de métricas
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
## @param username - string - optional
## The username to use if services are behind basic or digest auth.
#
# username: <USERNAME>
## @param password - string - optional
## The password to use if services are behind basic or NTLM auth.
#
# password: <PASSWORD>
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 utilizar los privilegios monitor
o manage
mientras utilizas la API para realizar las 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.
Reinicia el Agent.
Consultas personalizadas
La integración de Elasticsearch permite recopilar métricas personalizadas a través de consultas personalizadas utilizando la opción de configuración custom_queries
. Un endpoint de consulta personalizada puede recopilar múltiples métricas y etiquetas.
Cada consulta personalizada tiene los siguientes parámetros:
endpoint
(obligatorio): el endpoint de la API de Elasticsearch que se va a consultar.data_path
(obligatorio): la ruta JSON hasta (sin incluir) la métrica. No puede contener comodines. Por ejemplo: si estás consultando el tamaño de un disyuntor principal, y la ruta completa es breakers.parent.estimated_size_in_bytes
, entonces data_path
es breakers.parent
.columns
(obligatorio): una lista que representa los datos que se recopilarán de la consulta JSON. Cada elemento de esta lista incluye:value_path
(obligatorio): la ruta JSON desde data_path
a la métrica. Esta ruta puede incluir claves de cadena e índices de lista. Por ejemplo: si estás consultando el tamaño de un disyuntor principal, y la ruta completa es breakers.parent.estimated_size_in_bytes
, entonces el value_path
es estimated_size_in_bytes
.name
(obligatorio): El nombre completo de métrica enviado a Datadog. Si también estableces type
a tag
, entonces cada métrica recopilada por esta consulta se etiqueta con este nombre.type
(opcional): designa el tipo de datos enviados. Valores posibles: gauge
, monotonic_count
, rate
, tag
. Por defecto es gauge
.
payload
(opcional): si se declara, convierte la solicitud GET en una solicitud POST. Utiliza el formato YAML y un usuario de sólo lectura al escribir consultas personalizadas con una carga útil.
Nota: Cuando ejecutes consultas personalizadas, utiliza una cuenta de sólo lectura para asegurarte de que la instancia de Elasticsearch no cambia.
Ejemplos:
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:
- Habilita la recopilación de trazas en Datadog.
- Instrumenta tu aplicación que realiza solicitudes a Elasticsearch.
Recopilación de logs
Disponible para la versión 6.0 o posteriores del Agent
La recopilación de logs se encuentra deshabilitada de manera predeterminada en el Datadog Agent. Habilítala en el archivo datadog.yaml
con:
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ñ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>"
Reinicia el Agent.
Docker
Para configurar este check para un Agent que se ejecuta en un contenedor:
Recopilación de métricas
Configura plantillas de integraciones de Autodiscovery como etiquetas (labels) 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 integraciones de logs como etiquetas 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 v6 o posterior, pero requiere configuración adicional para empezar a recopilar trazas.
Variables de entorno requeridas en el contenedor del Agent:
Parámetro | Valor |
---|
<DD_API_KEY> | api_key |
<DD_APM_ENABLED> | verdadero |
<DD_APM_NON_LOCAL_TRAFFIC> | verdadero |
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
Para Configurar este check para un Agent que se ejecuta en Kubernetes:
Recopilación de métricas
Configura 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 ConfigMap o un almacén de clave-valor.
Anotaciones v1 (para el Datadog Agent v7.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 v7.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, configura las integraciones de logs 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 hosts que se ejecutan en la versión 6 o posteriores del Agent, pero requiere configuración adicional para empezar a recopilar trazas.
Variables de entorno requeridas en el contenedor del Agent:
Parámetro | Valor |
---|
<DD_API_KEY> | api_key |
<DD_APM_ENABLED> | verdadero |
<DD_APM_NON_LOCAL_TRAFFIC> | verdadero |
Para ver una lista completa de las variables de entorno y la configuración disponibles, consulta Rastreo de aplicaciones Kubernetes y la configuración del DaemonSet de Kubernetes.
Luego, instrumenta tu contenedor de aplicaciones y configura DD_AGENT_HOST
con el nombre del contenedor de tu Agent.
ECS
Para configurar este check para un Agent que se ejecuta en ECS:
Recopilación de métricas
Configura plantillas de integraciones de Autodiscovery como etiquetas (labels) 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 integraciones de logs como etiquetas 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 v6 o posterior, pero requiere configuración adicional para empezar a recopilar trazas.
Variables de entorno requeridas en el contenedor del Agent:
Parámetro | Valor |
---|
<DD_API_KEY> | api_key |
<DD_APM_ENABLED> | verdadero |
<DD_APM_NON_LOCAL_TRAFFIC> | verdadero |
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.