Este tema describe cómo supervisar Cassandra mediante Managed Service for Prometheus.
Requisitos previos
Debe haber creado una instancia de Prometheus. Para obtener más información, consulte:
Paso 1: Desplegar el agente JMX de Cassandra
-
Descargue el agente JMX de Cassandra que corresponda a su versión en la instancia de ECS donde se ejecuta Cassandra.
-
Descomprima el paquete del agente descargado en el directorio
MCAC_ROOTy agregue a continuación el siguiente contenido al archivo cassandra-env.sh.MCAC_ROOT=/path/to/directory JVM_OPTS="$JVM_OPTS -javaagent:${MCAC_ROOT}/lib/datastax-mcac-agent.jar"ImportanteEl agente JMX de Cassandra expone el puerto 9103 para que Prometheus extraiga los datos. Si desea cambiar este puerto, modifique el valor en el archivo ${MCAC_ROOT}/config/collectd.conf.tmpl por el puerto que prefiera.
LoadPlugin write_prometheus <Plugin write_prometheus> Port "9103" </Plugin> -
Una vez completada la configuración, reinicie la aplicación de Cassandra. En el servidor de ECS, ejecute el comando
curl localhost:{jmx_port}/metrics. Una instalación exitosa devuelve datos.# HELP collectd_collectd_cache_size write_prometheus plugin: 'collectd' Type: 'cache_size', Dstype: 'gauge', Dsname: 'value' # TYPE collectd_collectd_cache_size gauge collectd_collectd_cache_size{collectd="cache",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1"} 6985 16 # HELP collectd_collectd_derive_total write_prometheus plugin: 'collectd' Type: 'derive', Dstype: 'derive', Dsname: 'value' # TYPE collectd_collectd_derive_total counter collectd_collectd_derive_total{collectd="write_queue",type="dropped",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1"} 0 168768 # HELP collectd_collectd_queue_length write_prometheus plugin: 'collectd' Type: 'queue_length', Dstype: 'gauge', Dsname: 'value' # TYPE collectd_collectd_queue_length gauge collectd_collectd_queue_length{collectd="write_queue",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1"} 144 168 # HELP collectd_contextswitch_total write_prometheus plugin: 'contextswitch' Type: 'contextswitch', Dstype: 'derive', Dsname: 'value' # TYPE collectd_contextswitch_total counter collectd_contextswitch_total{instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1"} 3... 168768 # HELP collectd_cpu_total write_prometheus plugin: 'cpu' Type: 'cpu', Dstype: 'derive', Dsname: 'value' # TYPE collectd_cpu_total counter collectd_cpu_total{cpu="0",type="idle",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 50160255 16876 collectd_cpu_total{cpu="0",type="interrupt",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 1687686 collectd_cpu_total{cpu="0",type="nice",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 226 1687686335 collectd_cpu_total{cpu="0",type="softirq",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 13644 16876 collectd_cpu_total{cpu="0",type="steal",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 16876863350 collectd_cpu_total{cpu="0",type="system",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 231356 16876 collectd_cpu_total{cpu="0",type="user",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 1519742 168768 collectd_cpu_total{cpu="0",type="wait",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 585 1687686335 collectd_cpu_total{cpu="1",type="idle",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 50596353 16876 collectd_cpu_total{cpu="1",type="interrupt",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 1687686 collectd_cpu_total{cpu="1",type="nice",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 219 1687686335 collectd_cpu_total{cpu="1",type="softirq",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 9320 168768 collectd_cpu_total{cpu="1",type="steal",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 16876863350 collectd_cpu_total{cpu="1",type="system",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 129114 16876 collectd_cpu_total{cpu="1",type="user",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 1504382 168768 collectd_cpu_total{cpu="1",type="wait",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 50115892 16876 collectd_cpu_total{cpu="2",type="softirq",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 4906 168768 collectd_cpu_total{cpu="2",type="steal",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 16876863350 collectd_cpu_total{cpu="2",type="system",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 230256 16876 collectd_cpu_total{cpu="2",type="user",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 1562142 168768 collectd_cpu_total{cpu="2",type="wait",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 8267 16876863 collectd_cpu_total{cpu="3",type="idle",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 50612210 16876 collectd_cpu_total{cpu="3",type="interrupt",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 1687686 collectd_cpu_total{cpu="3",type="nice",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 218 1687686335 collectd_cpu_total{cpu="3",type="softirq",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 2815 168768 collectd_cpu_total{cpu="3",type="steal",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 0 16876863350 collectd_cpu_total{cpu="3",type="system",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 129656 16876 collectd_cpu_total{cpu="3",type="user",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 1506299 168768 collectd_cpu_total{cpu="3",type="wait",instance="172.16.x.x",cluster="Test Cluster",dc="datacenter1",rack="rack1",insight_series="1"} 183 1687686335
Paso 2: Integrar Cassandra
Inicie sesión en la consola de ARMS.
Inicie sesión en la consola de Cloud Monitor.
En el panel de navegación izquierdo, haga clic en Access Center.
En la página Access Center, dentro de la sección Database, haga clic en Cassandra.
-
En la pestaña Start Integration del panel Cassandra, configure los parámetros y luego haga clic en OK.
Parámetro
Descripción
Select environment type
Seleccione el tipo de entorno:
-
Container Service environment
-
ECS (Virtual Private Cloud (VPC))
Select cluster
Seleccione el clúster de destino.
Pod label
La etiqueta del pod que ejecuta el servicio de Cassandra. Se recomienda usar una etiqueta única.
Service port
El puerto que utiliza el agente JMX de Cassandra instalado en el paso 1. El puerto predeterminado se introduce automáticamente.
Metrics path
El endpoint de métricas del agente JMX de Cassandra instalado en el paso 1. La ruta predeterminada se introduce automáticamente.
Scrape interval (seconds)
El intervalo, en segundos, para extraer las métricas. El valor predeterminado es 30.
-
Paso 3: Consultar los paneles de Cassandra
Inicie sesión en la consola de Cloud Monitor.
Inicie sesión en la consola de ARMS.
En el panel de navegación izquierdo, haga clic en Data Import Management.
En la página Data Import Management, haga clic en la pestaña Installed. Busque el entorno deseado y haga clic en su nombre para abrir la página de detalles.
-
En la pestaña Component Management, haga clic en Cassandra dentro de la sección Component Type y luego seleccione la pestaña Dashboards para consultar todos los nombres de los paneles.
La página muestra dos paneles: Cassandra Detail y Cassandra Summary.
Haga clic en el nombre de un panel para consultar el panel de Grafana.
Paso 4: Configurar alertas de Cassandra
-
En la pestaña Component Management, haga clic en Cassandra dentro de la sección Component Type y luego seleccione la pestaña Alert Rules para consultar las reglas de alerta predeterminadas.
Las reglas de alerta predeterminadas incluyen:
Tiempos de espera de solicitudes agotados
Solicitudes con errores
Total de mensajes
Uso de disco
Uso de memoria
Uso de CPU
Conexiones de clientes
También puede crear reglas de alerta personalizadas. Para obtener más información, consulte Create a Prometheus alert rule.
Métricas clave
Información del clúster y de los nodos
|
Métrica |
Nivel |
Descripción |
Explicación |
|
mcac_client_connected_native_clients |
Importante |
Número de conexiones CQL |
Un número excesivo de conexiones consume recursos del sistema y aumenta la latencia del cliente. |
|
mcac_table_live_disk_space_used_total |
Importante |
Espacio en disco utilizado por Cassandra |
Un valor alto puede provocar falta de espacio en disco y aumentar la latencia de acceso a los datos. |
|
mcac_table_snapshots_size |
Recomendado |
Tamaño del archivo de instantánea de Cassandra |
Las instantáneas se utilizan para recuperar datos. Un valor alto puede generar falta de espacio en disco e impedir almacenar instantáneas completas. |
|
collectd_uptime |
Importante |
Tiempo de actividad del nodo |
Un valor alto indica que el sistema no se ha reiniciado durante mucho tiempo. Si el sistema tiene vulnerabilidades conocidas, esto puede aumentar los riesgos de seguridad. |
Métricas de rendimiento clave
|
Métrica |
Nivel |
Descripción |
Explicación |
|
mcac_table_read_latency |
Crítico |
Latencia de lectura del cliente |
Un valor alto ralentiza las lecturas de la aplicación y afecta la experiencia del usuario. |
|
mcac_table_write_latency |
Crítico |
Latencia de escritura del cliente |
Un valor alto ralentiza las escrituras de la aplicación y afecta la experiencia del usuario. |
Excepciones y errores
|
Métrica |
Nivel |
Descripción |
Explicación |
|
mcac_client_request_timeouts_total |
Crítico |
Solicitudes de cliente con tiempo de espera agotado |
Un valor alto indica una carga pesada del sistema, lo cual afecta gravemente la experiencia del usuario. |
|
mcac_client_request_failures_total |
Crítico |
Solicitudes de cliente con excepciones |
Un valor alto indica una carga pesada del sistema, lo cual afecta gravemente la experiencia del usuario. |
|
mcac_dropped_message_dropped_total |
Crítico |
Mensajes descartados |
Un valor alto indica una carga pesada del sistema, lo cual afecta gravemente la experiencia del usuario. |
Caché y filtros de Bloom
|
Métrica |
Nivel |
Descripción |
Explicación |
|
mcac_table_key_cache_hit_rate |
Importante |
Tasa de aciertos de la caché de claves |
Un valor bajo puede reducir el rendimiento de lectura de la aplicación y afectar la experiencia del usuario. |
|
mcac_table_row_cache_hit_total |
Importante |
Número de aciertos en la caché de filas |
Un valor bajo puede reducir el rendimiento de lectura de la aplicación y afectar la experiencia del usuario. |
|
mcac_table_row_cache_miss_total |
Recomendado |
Número de fallos en la caché de filas |
Un valor alto puede reducir el rendimiento de lectura de la aplicación y afectar la experiencia del usuario. |
|
mcac_table_row_cache_hit_out_of_range_total |
Recomendado |
Número de aciertos en la caché de filas que aun así requirieron acceso al disco. |
Un valor alto puede reducir el rendimiento de lectura de la aplicación y afectar la experiencia del usuario. |
|
mcac_table_bloom_filter_false_ratio |
Importante |
Proporción de falsos positivos del filtro de Bloom |
Una proporción alta de falsos positivos en el filtro de Bloom provoca que muchos elementos inexistentes se identifiquen erróneamente como existentes. Esto desperdicia tiempo y recursos de consulta, lo que degrada el rendimiento y aumenta los costos. |
Uso de CPU, memoria y disco
|
Métrica |
Nivel |
Descripción |
Explicación |
|
collectd_cpu_total |
Crítico |
Utilización de CPU |
Un valor alto indica una carga elevada del sistema, lo que aumenta la latencia de las solicitudes del cliente y afecta gravemente la experiencia del usuario. |
|
collectd_memory |
Crítico |
Uso de memoria |
Un valor alto indica una carga elevada del sistema, lo que aumenta la latencia de las solicitudes del cliente y afecta gravemente la experiencia del usuario. |
|
collectd_df_df_complex |
Crítico |
Uso de disco |
Un valor alto indica que hay poco espacio disponible en disco, lo cual puede impedir la persistencia de datos y provocar caídas del sistema. |
Compactación de SSTable
|
Métrica |
Nivel |
Descripción |
Explicación |
|
mcac_table_pending_compactions |
Importante |
Tareas de compactación de SSTable en curso |
Un valor alto indica una carga elevada del sistema, lo que aumenta la latencia de las solicitudes del cliente. Configure un intervalo de compactación adecuado para las SSTables. |
|
mcac_table_compaction_bytes_written_total |
Importante |
Tasa de compactación de SSTable |
Un valor bajo indica una tasa de compactación lenta, lo que puede provocar acumulación de tareas. Considere actualizar las especificaciones del nodo. |
|
mcac_table_compression_ratio |
Importante |
Relación de compresión de SSTable |
Un valor alto indica que los archivos comprimidos siguen siendo demasiado grandes y que la compresión no es eficaz. |
Archivos en disco
|
Métrica |
Nivel |
Descripción |
Explicación |
|
mcac_table_live_ss_table_count |
Importante |
Número de SSTables |
Un valor alto incrementa el uso de disco y la latencia de lectura y escritura. Configure una estrategia de compactación de SSTable adecuada. |
|
mcac_table_live_disk_space_used_total |
Importante |
Espacio en disco utilizado por las SSTables |
Un valor alto incrementa el uso de disco y la latencia de lectura y escritura. Configure una estrategia de compactación de SSTable adecuada. |
|
mcac_table_ss_tables_per_read_histogram |
Importante |
Número de SSTables leídas por cada operación de lectura |
Un valor alto incrementa la latencia de lectura del cliente. |
|
mcac_commit_log_total_commit_log_size |
Importante |
Espacio en disco utilizado por el registro de confirmación (commit log) |
Un valor alto puede provocar falta de espacio en disco, degradar el rendimiento de lectura y escritura, y alargar el tiempo de recuperación de datos. |
|
mcac_table_memtable_live_data_size |
Importante |
Espacio utilizado por MemTable |
Un valor alto puede degradar el rendimiento de escritura de datos y la estabilidad del nodo. |
|
mcac_table_waiting_on_free_memtable_space |
Importante |
Tiempo dedicado a esperar que se libere espacio en MemTable |
Un valor alto puede degradar el rendimiento de escritura de datos y la estabilidad del nodo. |
Estado del pool de hilos
|
Métrica |
Nivel |
Descripción |
Explicación |
|
mcac_thread_pools_active_tasks |
Crítico |
Número de tareas activas en el pool de hilos |
Demasiadas tareas bloqueadas consumen recursos del sistema, ralentizan las respuestas e incluso pueden provocar la caída del sistema. |
|
mcac_thread_pools_total_blocked_tasks_total |
Crítico |
Número de tareas bloqueadas en el pool de hilos |
Demasiadas tareas bloqueadas consumen recursos del sistema, ralentizan las respuestas e incluso pueden provocar la caída del sistema. |
|
mcac_thread_pools_pending_tasks |
Crítico |
Número de tareas pendientes en el pool de hilos |
Demasiadas tareas pendientes consumen recursos excesivos del sistema, provocan tiempos de espera agotados en las solicitudes correspondientes e incluso pueden causar la caída del sistema. |
|
mcac_thread_pools_completed_tasks |
Importante |
Número de tareas completadas en el pool de hilos |
Esta métrica refleja el rendimiento general del sistema. Un valor más alto indica un mejor desempeño del sistema. |
Métricas de JVM
|
Métrica |
Nivel |
Descripción |
Explicación |
|
mcac_jvm_memory_used |
Crítico |
Memoria heap de JVM utilizada |
Un valor alto puede provocar falta de memoria, lo que desencadena recolecciones de basura frecuentes y reduce el rendimiento de la aplicación. |
|
mcac_jvm_gc_time |
Crítico |
Tiempo dedicado a la recolección de basura (GC) |
Un valor alto indica que la GC ocurre con frecuencia. El sistema dispone de menos tiempo para ejecutar las cargas de trabajo del usuario, lo que puede causar tiempos de espera agotados en las solicitudes o incluso caídas del sistema. |