Apache Cassandra

La integración de Apache Cassandra recopila métricas de solicitudes, tareas y almacenamiento que destacan la carga en una instancia. De forma opcional, la integración también puede recopilar métricas generales de JVM relacionadas con la memoria y la recolección de elementos no utilizados. La integración también recopila registros de sistemas, depuraciones y recolección de elementos no utilizados. Estos registros se analizan en una carga útil de JSON, que incluye campos para el mensaje, la clase Java y el número de línea.

Para obtener más información sobre Cassandra, consulta la documentación de Apache Cassandra.

Requisitos previos

Para recopilar la telemetría de Cassandra, debes instalar el agente de operaciones:

  • Para las métricas, instala la versión 2.6.0 o una posterior.
  • Para los registros, instala la versión 2.5.0 o una posterior.

Esta integración es compatible con las versiones 3.11 y 4.0 de Cassandra.

Configura tu instancia de Cassandra

Para exponer un extremo de JMX, debes configurar la propiedad del sistema com.sun.management.jmxremote.port cuando inicies la JVM. También te recomendamos configurar la propiedad del sistema com.sun.management.jmxremote.rmi.port en el mismo puerto. Para exponer un extremo JMX de forma remota, también debes configurar la propiedad del sistema java.rmi.server.hostname.

De forma predeterminada, estas propiedades se establecen en el archivo cassandra-env.sh de una implementación de Cassandra.

Para configurar las propiedades del sistema a través de argumentos de la línea de comandos, agrega el nombre de la propiedad con -D cuando inicies la JVM. Por ejemplo, para configurar com.sun.management.jmxremote.port en el puerto 7199, especifica lo siguiente cuando inicies la JVM:

-Dcom.sun.management.jmxremote.port=7199

Configura el agente de operaciones para Cassandra

A través de la guía Configura el Agente de operaciones, agrega los elementos necesarios para recopilar la telemetría de las instancias de Cassandra y reinicia el agente.

Configuración de ejemplo

Los siguientes comandos crean la configuración para recopilar y transferir la telemetría de Cassandra y reinician el Agente de operaciones.

# Configures Ops Agent to collect telemetry from the app and restart Ops Agent.

set -e

# 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:
    cassandra:
      type: cassandra
      endpoint: service:jmx:rmi:///jndi/rmi://127.0.0.1:7199/jmxrmi
  service:
    pipelines:
      cassandra:
        receivers:
          - cassandra
logging:
  receivers:
    cassandra_system:
      type: cassandra_system
    cassandra_debug:
      type: cassandra_debug
    cassandra_gc:
      type: cassandra_gc
  service:
    pipelines:
      cassandra:
        receivers:
          - cassandra_system
          - cassandra_debug
          - cassandra_gc
EOF

sudo service google-cloud-ops-agent restart
sleep 60

En este ejemplo, las propiedades del sistema com.sun.management.jmxremote.port y com.sun.management.jmxremote.rmi.port se configuraron como 7199, y la propiedad del sistema java.rmi.server.hostname como 127.0.0.1. Para obtener más información, consulta Configura la recopilación de métricas.

Configura la recopilación de registros

Para transferir registros desde Cassandra, debes crear receptores para los registros que Cassandra produce y, luego, crear una canalización para los receptores nuevos.

Para configurar un receptor para tus registros cassandra_system, especifica los siguientes campos:

Campo Predeterminada Descripción
exclude_paths Una lista de patrones de ruta de acceso del sistema de archivos que se excluirán del conjunto que coincide con include_paths.
include_paths [/var/log/cassandra/system*.log] Una lista de rutas de acceso del sistema de archivos que se leerán con la visualización del final de cada archivo. Se puede usar un comodín (*) en las rutas. Por ejemplo, /var/log/cassandra/system*.log.
record_log_file_path false Si se configura como true, la ruta al archivo específico desde el que se obtuvo el registro aparece en la entrada de registro de salida como el valor de la etiqueta agent.googleapis.com/log_file_path. Cuando se usa un comodín, solo se registra la ruta de acceso del archivo del que se obtuvo el registro.
type El valor debe ser cassandra_system.
wildcard_refresh_interval 60s El intervalo en el que se actualizan las rutas de acceso de archivos comodín en include_paths. Se proporciona como una duración de tiempo que se puede analizar a través de time.ParseDuration, por ejemplo, 30s o 2m. Esta propiedad puede ser útil en el caso de una capacidad de procesamiento de registro alta en la que los archivos de registro se rotan más rápido que el intervalo predeterminado.

Para configurar un receptor para tus registros cassandra_debug, especifica los siguientes campos:

Campo Predeterminada Descripción
exclude_paths [] Una lista de patrones de ruta de acceso del sistema de archivos que se excluirán del conjunto que coincide con include_paths.
include_paths [/var/log/cassandra/debug*.log] Una lista de rutas de acceso del sistema de archivos que se leerán con la visualización del final de cada archivo. Se puede usar un comodín (*) en las rutas. Por ejemplo, /var/log/cassandra/system*.log.
record_log_file_path false Si se configura como true, la ruta al archivo específico desde el que se obtuvo el registro aparece en la entrada de registro de salida como el valor de la etiqueta agent.googleapis.com/log_file_path. Cuando se usa un comodín, solo se registra la ruta de acceso del archivo del que se obtuvo el registro.
type El valor debe ser cassandra_debug.
wildcard_refresh_interval 60s El intervalo en el que se actualizan las rutas de acceso de archivos comodín en include_paths. Se proporciona como una duración de tiempo que se puede analizar a través de time.ParseDuration, por ejemplo, 30s o 2m. Esta propiedad puede ser útil en el caso de una capacidad de procesamiento de registro alta en la que los archivos de registro se rotan más rápido que el intervalo predeterminado.

Para configurar un receptor para tus registros cassandra_gc, especifica los siguientes campos:

Campo Predeterminada Descripción
exclude_paths [] Una lista de patrones de ruta de acceso del sistema de archivos que se excluirán del conjunto que coincide con include_paths.
include_paths [/var/log/cassandra/gc.log.*.current] Una lista de rutas de acceso del sistema de archivos que se leerán con la visualización del final de cada archivo. Se puede usar un comodín (*) en las rutas. Por ejemplo, /var/log/cassandra/system*.log.
record_log_file_path false Si se configura como true, la ruta al archivo específico desde el que se obtuvo el registro aparece en la entrada de registro de salida como el valor de la etiqueta agent.googleapis.com/log_file_path. Cuando se usa un comodín, solo se registra la ruta de acceso del archivo del que se obtuvo el registro.
type El valor debe ser cassandra_gc.
wildcard_refresh_interval 60s El intervalo en el que se actualizan las rutas de acceso de archivos comodín en include_paths. Se proporciona como una duración de tiempo que se puede analizar a través de time.ParseDuration, por ejemplo, 30s o 2m. Esta propiedad puede ser útil en el caso de una capacidad de procesamiento de registro alta en la que los archivos de registro se rotan más rápido que el intervalo predeterminado.

¿Qué se registra?

logName se deriva de los IDs de receptor especificados en la configuración. Los campos detallados dentro de LogEntry son los siguientes. Las entradas de registro no contienen ningún campo en blanco o faltante.

Los registros cassandra_system contienen los siguientes campos en LogEntry:

Campo Tipo Descripción
jsonPayload.javaClass string Clase Java en la que se originó el registro
jsonPayload.level string Nivel de entrada de registro
jsonPayload.lineNumber string Número de línea del archivo de origen donde se originó el registro
jsonPayload.message string Mensaje de registro, incluido el seguimiento de pila detallado cuando se proporciona
jsonPayload.module string Módulo de Cassandra en el que se originó el registro
severity string (LogSeverity) Nivel de entrada de registro (traducido)

Los registros cassandra_debug contienen los siguientes campos en LogEntry:

Campo Tipo Descripción
jsonPayload.javaClass string Clase Java en la que se originó el registro
jsonPayload.level string Nivel de entrada de registro
jsonPayload.lineNumber string Número de línea del archivo de origen donde se originó el registro
jsonPayload.message string Mensaje del registro
jsonPayload.module string Módulo de Cassandra en el que se originó el registro
severity string (LogSeverity) Nivel de entrada de registro (traducido)

Los registros cassandra_gc contienen los siguientes campos en LogEntry:

Campo Tipo Descripción
jsonPayload.message string Mensaje del registro
jsonPayload.timeStopped string Segundos en que la JVM se detuvo para la recolección de elementos no utilizados
jsonPayload.timeStopping string Segundos que la JVM tardó en detener los subprocesos antes de la recolección de elementos no utilizados
jsonPayload.uptime string Segundos en los que la JVM estuvo activa
severity string (LogSeverity) Nivel de entrada de registro (traducido)

Configura la recopilación de métricas

Para transferir métricas desde Cassandra, debes crear un receptor para las métricas que produce Cassandra y, luego, crear una canalización para el receptor nuevo.

Este receptor no admite el uso de varias instancias en la configuración, por ejemplo, para supervisar varios extremos. Todas estas instancias escriben en las mismas series temporales, y Cloud Monitoring no tiene forma de distinguirlas.

Para configurar un receptor para las métricas de cassandra, especifica los siguientes campos:

Campo Predeterminada Descripción
collect_jvm_metrics true Configura el receptor para que también recopile las métricas de JVM compatibles.
collection_interval 60s Un valor de duración de tiempo, como 30s o 5m.
endpoint localhost:7199 La URL de servicio de JMX, o el host y el puerto que se usan para construir la URL de servicio. Este valor debe tener el formato service:jmx:<protocol>:<sap> o host:port. Los valores en formato host:port se usan para crear una URL de servicio de service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi.
password La contraseña configurada si JMX está configurado para requerir autenticación.
type El valor debe ser cassandra.
username El nombre de usuario configurado si JMX está configurado para requerir autenticación.

Qué se supervisa

En la siguiente tabla, se proporciona una lista de métricas que el agente de operaciones recopila de la instancia de Cassandra.

Tipo de métrica 
Categoría, tipo
Recursos supervisados
Etiquetas
workload.googleapis.com/cassandra.client.request.count
CUMULATIVEINT64
gce_instance
operation
workload.googleapis.com/cassandra.client.request.error.count
CUMULATIVEINT64
gce_instance
operation
status
workload.googleapis.com/cassandra.client.request.range_slice.latency.50p
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.client.request.range_slice.latency.99p
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.client.request.range_slice.latency.max
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.client.request.read.latency.50p
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.client.request.read.latency.99p
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.client.request.read.latency.max
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.client.request.write.latency.50p
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.client.request.write.latency.99p
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.client.request.write.latency.max
GAUGEDOUBLE
gce_instance
 
workload.googleapis.com/cassandra.compaction.tasks.completed
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/cassandra.compaction.tasks.pending
GAUGEINT64
gce_instance
 
workload.googleapis.com/cassandra.storage.load.count
GAUGEINT64
gce_instance
 
workload.googleapis.com/cassandra.storage.total_hints.count
CUMULATIVEINT64
gce_instance
 
workload.googleapis.com/cassandra.storage.total_hints.in_progress.count
GAUGEINT64
gce_instance
 

Verifica la configuración

En esta sección, se describe cómo verificar que hayas configurado de forma correcta el receptor de Cassandra. El agente de operaciones puede tardar uno o dos minutos en comenzar a recopilar telemetría.

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

  1. En el panel de navegación de la consola de Google Cloud, selecciona Logging y, luego, Explorador de registros:

    Ir al Explorador de registros

  2. Ingresa la siguiente consulta en el editor y, luego, haz clic en Ejecutar consulta:
    resource.type="gce_instance"
    (log_id("cassandra_system") OR log_id("cassandra_debug") OR log_id("cassandra_gc"))
    

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

  1. En el panel de navegación de la consola de Google Cloud, elige Monitoring y, luego,  Explorador de métricas:

    Ir al Explorador de métricas

  2. En la barra de herramientas del panel del compilador de consultas, selecciona el botón cuyo nombre sea  MQL o  PromQL.
  3. Verifica que MQL esté seleccionado en el botón de activación Idioma. El botón de activación de lenguaje se encuentra en la misma barra de herramientas que te permite dar formato a tu consulta.
  4. Ingresa la siguiente consulta en el editor y, luego, haz clic en Ejecutar consulta:
    fetch gce_instance
    | metric 'workload.googleapis.com/cassandra.client.request.count'
    | every 1m
    

Ver panel

Para ver tus métricas de Cassandra, debes tener configurado un gráfico o un panel. La integración de Cassandra incluye uno o más paneles. Cualquier panel se instala de forma automática después de que configuras la integración y de que el agente de operaciones comienza a recopilar datos de métricas.

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

Para ver un panel instalado, haz lo siguiente:

  1. En el panel de navegación de la consola de Google Cloud, elige Monitoring y, luego,  Paneles:

    Ir a Paneles

  2. Selecciona la pestaña Lista de paneles y, luego, la categoría Integraciones.
  3. Haz clic en el nombre del panel que quiera ver.

Si configuraste una integración, pero el panel no se instaló, verifica que el agente de operaciones 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 instalará por ti.

Para obtener una vista previa estática del panel, haz lo siguiente:

  1. En el panel de navegación de la consola de Google Cloud, elige Monitoring y, luego,  Integraciones:

    Ir a Integraciones

  2. Haz clic en el filtro de la plataforma de implementación Compute Engine.
  3. Localiza la entrada de Cassandra y haz clic en Ver detalles.
  4. Selecciona la pestaña Paneles para ver una vista previa estática. Si el panel está instalado, haz clic en Ver panel para navegar a él.

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

Para obtener más información del uso de la página Integraciones, consulta Administra integraciones.

Instala políticas de alertas

Las políticas de alertas le indican a Cloud Monitoring que te notifique cuando ocurren condiciones especificadas. La integración de Cassandra incluye una o más políticas de alertas para que uses. Puedes ver y también instalar estas políticas de alertas desde la página Integraciones en Monitoring.

Para ver las descripciones de las políticas de alertas disponibles y, luego, instalarlas, haz lo siguiente:

  1. En el panel de navegación de la consola de Google Cloud, elige Monitoring y, luego,  Integraciones:

    Ir a Integraciones

  2. Localiza la entrada de Cassandra y haz clic en Ver detalles.
  3. Selecciona la pestaña Alertas. En esta pestaña, se proporcionan descripciones de las políticas de alertas disponibles y una interfaz para instalarlas.
  4. Instala las políticas de alertas. Las políticas de alertas deben saber a dónde enviar notificaciones que la alerta se activó, por lo que requieren información de ti para la instalación. Para instalar las políticas de alertas, haz lo siguiente:
    1. En la lista de políticas de alertas disponibles, elige las que deseas instalar.
    2. En la sección Configura notificaciones, elige uno o más canales de notificaciones. Tienes la opción de inhabilitar el uso de los canales de notificación, pero si lo haces, las políticas de alertas se activarán de forma silenciosa. Puedes verificar su estado en Monitoring, pero no recibirás notificaciones.

      Para obtener más información de los canales de notificaciones, consulta Administra canales de notificaciones.

    3. Haz clic en Crear políticas.

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

Para obtener más información del uso de la página Integraciones, consulta Administra integraciones.

¿Qué sigue?

Para obtener una explicación sobre cómo usar Ansible para instalar el agente de operaciones, configurar una aplicación de terceros y, luego, instalar un panel de muestra, consulta el video Instala el agente de operaciones para solucionar problemas de apps de terceros.