Elasticsearch

Elasticsearch es un servidor de búsqueda de código abierto, basado en la biblioteca de búsqueda de Lucene . Se ejecuta en una máquina virtual Java sobre varios sistemas operativos. El receptor elasticsearch recopila telemetría a nivel de nodo y clúster de sus instancias de Elasticsearch.

Para obtener más información sobre Elasticsearch, consulte la documentación de Elasticsearch .

Requisitos previos

Para recopilar la telemetría de Elasticsearch, debe instalar Ops Agent :

  • Para métricas, instale la versión 2.21.0 o superior.
  • Para registros, instale la versión 2.9.0 o superior.

Esta integración es compatible con Elasticsearch versión 7.9+.

Configura tu instancia de Elasticsearch

Si habilita las características de seguridad de Elasticsearch , debe configurar un usuario con el privilegio monitor o manage el clúster.

Configurar el agente de operaciones para Elasticsearch

Siguiendo la guía para Configurar el Agente de Operaciones , agregue los elementos necesarios para recopilar telemetría de las instancias de Elasticsearch y reinicie el agente .

Configuración de ejemplo

Los siguientes comandos crean la configuración para recopilar e ingerir telemetría para Elasticsearch:

# Configures Ops Agent to collect telemetry from the app. You must restart the agent for the configuration to take effect.

set -e

# Check if the file exists
if [ ! -f /etc/google-cloud-ops-agent/config.yaml ]; then
  # Create the file if it doesn't exist.
  sudo mkdir -p /etc/google-cloud-ops-agent
  sudo touch /etc/google-cloud-ops-agent/config.yaml
fi

# Create a back up of the existing file so existing configurations are not lost.
sudo cp /etc/google-cloud-ops-agent/config.yaml /etc/google-cloud-ops-agent/config.yaml.bak

# Configure the Ops Agent.
sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
metrics:
  receivers:
    elasticsearch:
      type: elasticsearch
  service:
    pipelines:
      elasticsearch:
        receivers:
          - elasticsearch

logging:
  receivers:
    elasticsearch_json:
      type: elasticsearch_json
    elasticsearch_gc:
      type: elasticsearch_gc
  service:
    pipelines:
      elasticsearch:
        receivers:
          - elasticsearch_json
          - elasticsearch_gc
EOF

Para que estos cambios surtan efecto, debe reiniciar Ops Agent:

linux

  1. Para reiniciar el agente, ejecute el siguiente comando en su instancia:
    sudo systemctl restart google-cloud-ops-agent
    
  2. Para confirmar que el agente se reinició, ejecute el siguiente comando y verifique que se hayan iniciado los componentes "Metrics Agent" y "Logging Agent":
    sudo systemctl status "google-cloud-ops-agent*"
    

ventanas

  1. Conéctese a su instancia usando RDP o una herramienta similar e inicie sesión en Windows.
  2. Abra una terminal PowerShell con privilegios de administrador haciendo clic derecho en el icono de PowerShell y seleccionando Ejecutar como administrador
  3. Para reiniciar el agente, ejecute el siguiente comando de PowerShell:
    Restart-Service google-cloud-ops-agent -Force
    
  4. Para confirmar que el agente se reinició, ejecute el siguiente comando y verifique que se hayan iniciado los componentes "Metrics Agent" y "Logging Agent":
    Get-Service google-cloud-ops-agent*
    

Configurar la recopilación de registros

Para ingerir registros de Elasticsearch, debe crear un receptor para los registros que produce Elasticsearch y luego crear una canalización para el nuevo receptor.

Para configurar un receptor para sus registros elasticsearch_json , especifique los siguientes campos:

Campo Por defecto Descripción
exclude_paths Una lista de patrones de ruta del sistema de archivos para excluir del conjunto que coincide con include_paths .
include_paths [/var/log/elasticsearch/*_server.json, /var/log/elasticsearch/*_deprecation.json, /var/log/elasticsearch/*_index_search_slowlog.json, /var/log/elasticsearch/*_index_indexing_slowlog.json, /var/log/elasticsearch/*_audit.json] Una lista de rutas del sistema de archivos para leer siguiendo cada archivo. Se puede utilizar un comodín ( * ) en las rutas.
record_log_file_path false Si se establece en true , la ruta al archivo específico del que se obtuvo el registro aparece en la entrada del registro de salida como el valor de la etiqueta agent.googleapis.com/log_file_path . Cuando se utiliza un comodín, sólo se registra la ruta del archivo del que se obtuvo el registro.
type Este valor debe ser elasticsearch_json .
wildcard_refresh_interval 60s El intervalo en el que se actualizan las rutas de archivo comodín en include_paths . Dado como una duración de tiempo , por ejemplo 30s o 2m . Esta propiedad puede resultar útil en entornos de alto rendimiento de registro en los que los archivos de registro se rotan más rápido que el intervalo predeterminado.

Para configurar un receptor para sus registros de elasticsearch_gc , especifique los siguientes campos:

Campo Por defecto Descripción
exclude_paths Una lista de patrones de ruta del sistema de archivos para excluir del conjunto que coincide con include_paths .
include_paths [/var/log/elasticsearch/gc.log] Una lista de rutas del sistema de archivos para leer siguiendo cada archivo. Se puede utilizar un comodín ( * ) en las rutas.
record_log_file_path false Si se establece en true , la ruta al archivo específico del que se obtuvo el registro aparece en la entrada del registro de salida como el valor de la etiqueta agent.googleapis.com/log_file_path . Cuando se utiliza un comodín, sólo se registra la ruta del archivo del que se obtuvo el registro.
type Este valor debe ser elasticsearch_gc .
wildcard_refresh_interval 60s El intervalo en el que se actualizan las rutas de archivo comodín en include_paths . Dado como una duración de tiempo , por ejemplo 30s o 2m . Esta propiedad puede resultar útil en entornos de alto rendimiento de registro en los que los archivos de registro se rotan más rápido que el intervalo predeterminado.

que esta registrado

El logName se deriva de los ID del receptor especificados en la configuración. Los campos detallados dentro de LogEntry son los siguientes.

Los registros de elasticsearch_json contienen los siguientes campos en LogEntry :

Campo Tipo Descripción
jsonPayload.cluster cadena El clúster que emite el registro
jsonPayload.cluster.name cadena El nombre del clúster que emite el registro.
jsonPayload.cluster.uuid cadena El UUID del clúster que emite el registro.
jsonPayload.component cadena El componente de Elasticsearch que emitió el registro.
jsonPayload.level cadena Nivel de entrada de registro
jsonPayload.message cadena Mensaje de registro
jsonPayload.node cadena El nodo que emite el registro
jsonPayload.node.name cadena El nombre del nodo que emite el registro.
jsonPayload.node.uuid cadena El UUID del nodo que emite el registro.
jsonPayload.type cadena El tipo de registro, que indica de qué registro proviene el registro (por ejemplo, el servidor indica que este LogEntry proviene del registro del servidor)
severity cadena ( LogSeverity ) Nivel de entrada de registro (traducido).

Los registros de elasticsearch_gc contienen los siguientes campos en LogEntry :

Campo Tipo Descripción
jsonPayload.gc_run número La carrera del recolector de basura.
jsonPayload.message cadena Mensaje de registro
jsonPayload.type cadena El tipo de registro
severity cadena ( LogSeverity ) Nivel de entrada de registro (traducido).

Configurar la colección de métricas

Para ingerir métricas de Elasticsearch, debe crear un receptor para las métricas que produce Elasticsearch y luego crear una canalización para el nuevo receptor.

Este receptor no admite el uso de múltiples instancias en la configuración, por ejemplo, para monitorear múltiples puntos finales. Todas estas instancias escriben en la misma serie temporal y Cloud Monitoring no tiene forma de distinguirlas.

Para configurar un receptor para sus métricas elasticsearch , especifique los siguientes campos:

Campo Por defecto Descripción
ca_file Ruta al certificado de CA. Como cliente, esto verifica el certificado del servidor. Si está vacío, el receptor utiliza la CA raíz del sistema.
cert_file Ruta al certificado TLS que se utilizará para las conexiones requeridas por mTLS.
collection_interval 60s Un valor de duración de tiempo , como 30s o 5m .
endpoint http://localhost:92002 La URL base para la API REST de Elasticsearch.
insecure true Establece si se utilizará o no una conexión TLS segura. Si se establece en false , entonces TLS está habilitado.
insecure_skip_verify false Establece si se omitirá o no la verificación del certificado. Si insecure se establece en true , entonces no se utiliza el valor insecure_skip_verify .
key_file Ruta a la clave TLS que se utilizará para las conexiones requeridas por mTLS.
password Contraseña para autenticación con Elasticsearch. Requerido si se establece username .
type Este valor debe ser elasticsearch .
username Nombre de usuario para autenticación con Elasticsearch. Requerido si se establece password .

que se monitorea

La siguiente tabla proporciona la lista de métricas que el agente de operaciones recopila de la instancia de Elasticsearch.

Tipo de métrica
amable, tipo
Recursos monitoreados
Etiquetas
workload.googleapis.com/elasticsearch.breaker.memory.estimated
GAUGE , INT64
instancia_gce
name
workload.googleapis.com/elasticsearch.breaker.memory.limit
GAUGE , INT64
instancia_gce
name
workload.googleapis.com/elasticsearch.breaker.tripped
CUMULATIVE , INT64
instancia_gce
name
workload.googleapis.com/elasticsearch.cluster.data_nodes
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.cluster.health
GAUGE , INT64
instancia_gce
status
workload.googleapis.com/elasticsearch.cluster.in_flight_fetch
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.cluster.nodes
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.cluster.pending_tasks
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.cluster.published_states.differences
GAUGE , INT64
instancia_gce
state
workload.googleapis.com/elasticsearch.cluster.published_states.full
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.cluster.shards
GAUGE , INT64
instancia_gce
state
workload.googleapis.com/elasticsearch.cluster.state_queue
GAUGE , INT64
instancia_gce
state
workload.googleapis.com/elasticsearch.cluster.state_update.count
CUMULATIVE , INT64
instancia_gce
state
workload.googleapis.com/elasticsearch.cluster.state_update.time
CUMULATIVE , INT64
instancia_gce
state
type
workload.googleapis.com/elasticsearch.indexing_pressure.memory.limit
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.indexing_pressure.memory.total.primary_rejections
CUMULATIVE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.indexing_pressure.memory.total.replica_rejections
CUMULATIVE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.memory.indexing_pressure
GAUGE , INT64
instancia_gce
stage
workload.googleapis.com/elasticsearch.node.cache.count
GAUGE , INT64
instancia_gce
type
workload.googleapis.com/elasticsearch.node.cache.evictions
CUMULATIVE , INT64
instancia_gce
cache_name
workload.googleapis.com/elasticsearch.node.cache.memory.usage
GAUGE , INT64
instancia_gce
cache_name
workload.googleapis.com/elasticsearch.node.cluster.connections
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.cluster.io
CUMULATIVE , INT64
instancia_gce
direction
workload.googleapis.com/elasticsearch.node.disk.io.read
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.disk.io.write
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.documents
GAUGE , INT64
instancia_gce
state
workload.googleapis.com/elasticsearch.node.fs.disk.available
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.fs.disk.free
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.fs.disk.total
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.http.connections
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.ingest.documents
CUMULATIVE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.ingest.documents.current
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.ingest.operations.failed
CUMULATIVE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.open_files
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.operations.completed
CUMULATIVE , INT64
instancia_gce
operation
workload.googleapis.com/elasticsearch.node.operations.time
CUMULATIVE , INT64
instancia_gce
operation
workload.googleapis.com/elasticsearch.node.pipeline.ingest.documents.current
GAUGE , INT64
instancia_gce
name
workload.googleapis.com/elasticsearch.node.pipeline.ingest.documents.preprocessed
GAUGE , INT64
instancia_gce
name
workload.googleapis.com/elasticsearch.node.pipeline.ingest.operations.failed
CUMULATIVE , INT64
instancia_gce
name
workload.googleapis.com/elasticsearch.node.script.cache_evictions
CUMULATIVE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.script.compilation_limit_triggered
CUMULATIVE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.script.compilations
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.shards.data_set.size
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.shards.reserved.size
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.shards.size
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.thread_pool.tasks.finished
CUMULATIVE , INT64
instancia_gce
state
thread_pool_name
workload.googleapis.com/elasticsearch.node.thread_pool.tasks.queued
GAUGE , INT64
instancia_gce
thread_pool_name
workload.googleapis.com/elasticsearch.node.thread_pool.threads
GAUGE , INT64
instancia_gce
state
thread_pool_name
workload.googleapis.com/elasticsearch.node.translog.operations
CUMULATIVE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.translog.size
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.node.translog.uncommitted.size
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.os.cpu.load_avg.15m
GAUGE , DOUBLE
instancia_gce
workload.googleapis.com/elasticsearch.os.cpu.load_avg.1m
GAUGE , DOUBLE
instancia_gce
workload.googleapis.com/elasticsearch.os.cpu.load_avg.5m
GAUGE , DOUBLE
instancia_gce
workload.googleapis.com/elasticsearch.os.cpu.usage
GAUGE , INT64
instancia_gce
workload.googleapis.com/elasticsearch.os.memory
GAUGE , INT64
instancia_gce
state

Verificar la configuración

Esta sección describe cómo verificar que configuró correctamente el receptor Elasticsearch. Es posible que el agente de operaciones tarde uno o dos minutos en comenzar a recopilar telemetría.

Para verificar que los registros de Elasticsearch se envíen a Cloud Logging, haga lo siguiente:

  1. En el Google Cloud consola, vaya a la página del Explorador de registros :

    Ir al Explorador de registros

    Si utiliza la barra de búsqueda para encontrar esta página, seleccione el resultado cuyo subtítulo sea Registro .

  2. Ingrese la siguiente consulta en el editor y luego haga clic en Ejecutar consulta :
    resource.type="gce_instance"
    (log_id("elasticsearch_json") OR log_id("elasticsearch_gc"))
    

Para verificar que las métricas de Elasticsearch se envíen a Cloud Monitoring, haga lo siguiente:

  1. En el Google Cloud consola, vaya a la página del explorador de métricas :

    Ir al explorador de métricas

    Si utiliza la barra de búsqueda para encontrar esta página, seleccione el resultado cuyo subtítulo es Monitoreo .

  2. En la barra de herramientas del panel del generador de consultas, seleccione el botón cuyo nombre es MQL o PromQL .
  3. Verifique que MQL esté seleccionado en el interruptor de Idioma . El cambio de idioma se encuentra en la misma barra de herramientas que le permite formatear su consulta.
  4. Ingrese la siguiente consulta en el editor y luego haga clic en Ejecutar consulta :
    fetch gce_instance
    | metric 'workload.googleapis.com/elasticsearch.node.open_files'
    | every 1m
    

Ver panel

Para ver sus métricas de Elasticsearch, debe tener un gráfico o panel configurado. La integración de Elasticsearch incluye uno o más paneles para usted. Todos los paneles se instalan automáticamente después de configurar la integración y el agente de operaciones ha comenzado a recopilar datos métricos.

También puede ver vistas previas estáticas de paneles sin instalar la integración.

Para ver un panel instalado, haga lo siguiente:

  1. En el Google Cloud consola, vaya a la Página de paneles :

    Ir a paneles

    Si utiliza la barra de búsqueda para encontrar esta página, seleccione el resultado cuyo subtítulo es Monitoreo .

  2. Seleccione la pestaña Lista de paneles y luego elija la categoría Integraciones .
  3. Haga clic en el nombre del panel que desea ver.

Si ha configurado una integración pero el panel no se ha instalado, verifique que Ops Agent se esté ejecutando. Cuando no hay datos de métricas para un gráfico en el panel, la instalación del panel falla. Una vez que el agente de operaciones comienza a recopilar métricas, el panel se instala automáticamente.

Para ver una vista previa estática del panel, haga lo siguiente:

  1. En el Google Cloud consola, vaya a la Página de integraciones :

    Ir a Integraciones

    Si utiliza la barra de búsqueda para encontrar esta página, seleccione el resultado cuyo subtítulo es Monitoreo .

  2. Haz clic en el filtro de plataforma de implementación de Compute Engine .
  3. Localice la entrada de Elasticsearch y haga clic en Ver detalles .
  4. Seleccione la pestaña Paneles para ver una vista previa estática. Si el panel está instalado, puede navegar hasta él haciendo clic en Ver panel .

Para obtener más información sobre los paneles en Cloud Monitoring, consulte Paneles y gráficos .

Para obtener más información sobre el uso de la página Integraciones , consulte Administrar integraciones .

Instalar políticas de alerta

Las políticas de alerta indican a Cloud Monitoring que le notifique cuando se produzcan condiciones específicas. La integración de Elasticsearch incluye una o más políticas de alertas para su uso. Puede ver e instalar estas políticas de alertas desde la página Integraciones en Monitoreo.

Para ver las descripciones de las políticas de alertas disponibles e instalarlas, haga lo siguiente:

  1. En el Google Cloud consola, vaya a la Página de integraciones :

    Ir a Integraciones

    Si utiliza la barra de búsqueda para encontrar esta página, seleccione el resultado cuyo subtítulo es Monitoreo .

  2. Localice la entrada de Elasticsearch y haga clic en Ver detalles .
  3. Seleccione la pestaña Alertas . Esta pestaña proporciona descripciones de las políticas de alertas disponibles y proporciona una interfaz para instalarlas.
  4. Instalar políticas de alertas. Las políticas de alerta necesitan saber dónde enviar notificaciones de que se ha activado la alerta, por lo que requieren información suya para su instalación. Para instalar políticas de alertas, haga lo siguiente:
    1. De la lista de políticas de alertas disponibles, seleccione aquellas que desee instalar.
    2. En la sección Configurar notificaciones , seleccione uno o más canales de notificación. Tiene la opción de desactivar el uso de canales de notificación, pero si lo hace, sus políticas de alerta se activan silenciosamente. Puedes verificar su estado en Monitoreo, pero no recibes notificaciones.

      Para obtener más información sobre los canales de notificación, consulte Administrar canales de notificación .

    3. Haga clic en Crear políticas .

Para obtener más información sobre las políticas de alertas en Cloud Monitoring, consulte Introducción a las alertas .

Para obtener más información sobre el uso de la página Integraciones , consulte Administrar integraciones .

¿Qué sigue?

Para obtener un tutorial sobre cómo usar Ansible para instalar Ops Agent, configurar una aplicación de terceros e instalar un panel de muestra, consulte el video Instalar Ops Agent para solucionar problemas de aplicaciones de terceros .