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 http://cassandra.apache.org/.

Requisitos previos

Para recopilar y transferir registros y métricas de Cassandra, debes instalar el Agente de operaciones versión 2.6.0 o posterior.

Este receptor es compatible con las versiones 3.11 y 4.0 de Apache 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 mediante 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

Sigue las instrucciones en Configura el agente de operaciones, agrega los elementos necesarios para recopilar registros de tus instancias de Cassandra y reinicia el agente.

Configuración de ejemplo

El siguiente comando crea el archivo de configuración para recopilar y transferir registros y métricas de Cassandra, y reiniciar el agente de operaciones en Linux.

sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
logging:
  receivers:
    cassandra_system:
      type: cassandra_system
    cassandra_debug:
      type: cassandra_debug
    cassandra_gc:
      type: cassandra_gc
  service:
    pipelines:
      apache:
        receivers:
          - cassandra_system
          - cassandra_debug
          - cassandra_gc
metrics:
  receivers:
    cassandra:
      type: cassandra
      endpoint: localhost:7199
  service:
    pipelines:
      cassandra:
        receivers:
          - cassandra
EOF
sudo service google-cloud-ops-agent restart

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

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

A fin de configurar un receptor para tus registros cassandra_system, especifica los siguientes campos:

Campo Predeterminada Descripción
type El valor debe ser cassandra_system.
include_paths [/var/log/cassandra/system*.log] Una lista de rutas de acceso del sistema de archivos que se leerán mediante la visualización del final de cada archivo. Se puede usar un comodín (*) en las rutas. Por ejemplo, /var/log/cassandra/system*.log.
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.
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.
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, 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.


A fin de configurar un receptor para tus registros cassandra_debug, especifica los siguientes campos:

Campo Predeterminada Descripción
type El valor debe ser cassandra_debug.
include_paths [/var/log/cassandra/debug*.log] Una lista de rutas de acceso del sistema de archivos que se leerán mediante la visualización del final de cada archivo. Se puede usar un comodín (*) en las rutas. Por ejemplo, /var/log/cassandra/system*.log.
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.
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.
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, 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.


A fin de configurar un receptor para los registros cassandra_gc, especifica los siguientes campos:

Campo Predeterminada Descripción
type El valor debe ser cassandra_gc.
include_paths [/var/log/cassandra/gc.log.*.current] Una lista de rutas de acceso del sistema de archivos que se leerán mediante la visualización del final de cada archivo. Se puede usar un comodín (*) en las rutas. Por ejemplo, /var/log/cassandra/system*.log.
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.
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.
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, 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?

El logName de los registros cassandra_system, cassandra_debug ycassandra_gc se deriva de los ID de receptor especificados en la configuración. Los campos detallados dentro de LogEntry son los siguientes.

cassandra_system, cassandra_debug
Estos registros contienen los siguientes campos en el LogEntry:

Campo Tipo Descripción
jsonPayload.level string Nivel de entrada de registro
jsonPayload.module string Módulo de Cassandra en el que se originó el registro
jsonPayload.javaClass string Clase Java en la que se originó el registro
jsonPayload.lineNumber número 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
severity string (LogSeverity) Nivel de entrada de registro (traducido)
timestamp string (Timestamp) Hora en que se recibió la solicitud

Las entradas de registro no contienen ningún campo en blanco o faltante.

cassandra_gc
Estos registros contienen los siguientes campos en LogEntry:

Campo Tipo Descripción
jsonPayload.uptime número Segundos en los que la JVM estuvo activa
jsonPayload.timeStopped número Segundos en que la JVM se detuvo para la recolección de elementos no utilizados
jsonPayload.timeStopping número Segundos que la JVM tardó en detener los subprocesos antes de la recolección de elementos no utilizados
jsonPayload.message string Mensaje del registro
timestamp string (Timestamp) Hora en la que se registró la entrada

Configura la recopilación de métricas

Si deseas recopilar métricas de un nodo de Cassandra, debes crear un receptor para las métricas de Cassandra y, luego, crear una canalización para el receptor nuevo. A fin de configurar un receptor para las métricas de Cassandra, especifica los siguientes campos:

Campo Predeterminada Descripción
type El valor debe ser cassandra.
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.
collect_jvm_metrics true Configura el receptor para que también recopile las métricas de JVM compatibles.
username El nombre de usuario configurado si JMX está configurado para requerir autenticación.
password La contraseña configurada si JMX está configurado para requerir autenticación.
collection_interval 60s Un valor time.Duration, como 30s o 5m.

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
 

Panel de muestra

Puedes ver las métricas de esta integración mediante un panel de Cloud Monitoring de muestra. Completa los procedimientos que se indican en Instala paneles de muestra para importar el panel Descripción general de Cassandra de la Biblioteca de muestra y ver los gráficos que muestran en sus métricas de Cassandra.

Verifica la configuración

Puedes usar el Explorador de registros y el Explorador de métricas para verificar que configuraste de forma correcta el receptor de Cassandra. El agente de operaciones puede tardar uno o dos minutos en comenzar a recopilar los registros y las métricas.

Para verificar que se transfieran los registros, ve a Explorador de registros y ejecuta la siguiente consulta a fin de ver los registros de Cassandra:

resource.type="gce_instance"
logName=("projects/PROJECT_ID/logs/cassandra_system" OR "projects/PROJECT_ID/logs/cassandra_debug" OR "projects/PROJECT_ID/logs/cassandra_gc")


Para verificar que las métricas se transfieran, ve a Explorador de métricas y ejecuta la siguiente consulta en la pestaña MQL.

fetch gce_instance
| metric 'workload.googleapis.com/cassandra.client.request.count'
| align rate(1m)
| every 1m

¿Qué sigue?

Para obtener una explicación sobre cómo usar Ansible a fin de 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.