Este tópico descreve como monitorar o Cassandra usando o Managed Service for Prometheus.
Pré-requisitos
Crie uma instância do Prometheus. Para mais informações, consulte:
Etapa 1: Implante o agente JMX do Cassandra
-
Baixe o agente JMX do Cassandra correspondente à sua versão para a instância ECS que executa o Cassandra.
-
Descompacte o pacote do agente baixado no diretório
MCAC_ROOTe adicione o seguinte conteúdo ao arquivo cassandra-env.sh.MCAC_ROOT=/path/to/directory JVM_OPTS="$JVM_OPTS -javaagent:${MCAC_ROOT}/lib/datastax-mcac-agent.jar"ImportanteO agente JMX do Cassandra expõe a porta 9103 para coleta de dados pelo Prometheus. Para alterar essa porta, modifique o valor no arquivo ${MCAC_ROOT}/config/collectd.conf.tmpl para a porta desejada.
LoadPlugin write_prometheus <Plugin write_prometheus> Port "9103" </Plugin> -
Após concluir a configuração, reinicie a aplicação Cassandra. No servidor ECS, execute o comando
curl localhost:{jmx_port}/metrics. Uma instalação bem-sucedida retorna dados.# 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
Etapa 2: Integre o Cassandra
Faça login no console do ARMS.
Acesse o console do Cloud Monitor.
No painel de navegação à esquerda, clique em Access Center.
Na página Access Center, na seção Database, clique em Cassandra.
-
Na aba Start Integration do painel Cassandra, configure os parâmetros e clique em OK.
Parâmetro
Descrição
Select environment type
Selecione o tipo de ambiente:
-
Ambiente Container Service
-
ECS (Virtual Private Cloud (VPC))
Select cluster
Selecione o cluster de destino.
Pod label
Rótulo do pod que executa o serviço Cassandra. Recomenda-se usar um rótulo exclusivo.
Service port
Porta usada pelo agente JMX do Cassandra instalado na Etapa 1. A porta padrão é preenchida automaticamente.
Metrics path
Endpoint de métricas do agente JMX do Cassandra instalado na Etapa 1. O caminho padrão é preenchido automaticamente.
Scrape interval (seconds)
Intervalo, em segundos, para coleta de métricas. O padrão é 30.
-
Etapa 3: Visualize painéis do Cassandra
Acesse o console do Cloud Monitor.
Faça login no console do ARMS.
No painel de navegação à esquerda, clique em Data Import Management.
Na página Data Import Management, clique na aba Installed. Localize o ambiente desejado e clique no nome dele para abrir a página de detalhes.
-
Na aba Component Management, clique em Cassandra na seção Component Type e, em seguida, clique na aba Dashboards para visualizar todos os nomes dos painéis.
A página exibe dois painéis: Cassandra Detail e Cassandra Summary.
Clique no nome de um painel para visualizá-lo no Grafana.
Etapa 4: Configure alertas do Cassandra
-
Na aba Component Management, clique em Cassandra na seção Component Type e, em seguida, clique na aba Alert Rules para visualizar as regras de alerta padrão.
As regras de alerta padrão incluem:
Timeouts de requisição
Requisições com falha
Total de mensagens
Uso de disco
Uso de memória
Uso de CPU
Conexões de cliente
Também é possível criar regras de alerta personalizadas. Para mais informações, consulte Create a Prometheus alert rule.
Métricas principais
Informações de cluster e nó
|
Métrica |
Nível |
Descrição |
Explicação |
|
mcac_client_connected_native_clients |
Principal |
Número de conexões CQL |
Um número excessivo de conexões consome recursos do sistema e aumenta a latência do cliente. |
|
mcac_table_live_disk_space_used_total |
Principal |
Espaço em disco usado pelo Cassandra |
Um valor alto pode causar insuficiência de espaço em disco e aumentar a latência de acesso aos dados. |
|
mcac_table_snapshots_size |
Recomendado |
Tamanho do arquivo de snapshot do Cassandra |
Snapshots são usados para recuperação de dados. Um valor alto pode levar à insuficiência de espaço em disco, impedindo o armazenamento de snapshots completos. |
|
collectd_uptime |
Principal |
Tempo de atividade do nó |
Um valor alto indica que o sistema não foi reiniciado por muito tempo. Se o sistema tiver vulnerabilidades conhecidas, isso pode aumentar os riscos de segurança. |
Métricas de desempenho principais
|
Métrica |
Nível |
Descrição |
Explicação |
|
mcac_table_read_latency |
Crítico |
Latência de leitura do cliente |
Um valor alto torna as leituras da aplicação mais lentas e impacta a experiência do usuário. |
|
mcac_table_write_latency |
Crítico |
Latência de gravação do cliente |
Um valor alto torna as gravações da aplicação mais lentas e impacta a experiência do usuário. |
Exceções e erros
|
Métrica |
Nível |
Descrição |
Explicação |
|
mcac_client_request_timeouts_total |
Crítico |
Requisições de cliente com timeout |
Um valor alto indica carga pesada no sistema, o que afeta gravemente a experiência do usuário. |
|
mcac_client_request_failures_total |
Crítico |
Requisições de cliente com exceções |
Um valor alto indica carga pesada no sistema, o que afeta gravemente a experiência do usuário. |
|
mcac_dropped_message_dropped_total |
Crítico |
Mensagens descartadas |
Um valor alto indica carga pesada no sistema, o que afeta gravemente a experiência do usuário. |
Cache e filtros Bloom
|
Métrica |
Nível |
Descrição |
Explicação |
|
mcac_table_key_cache_hit_rate |
Principal |
Taxa de acerto do cache de chave |
Um valor baixo pode diminuir o desempenho de leitura da aplicação e afetar a experiência do usuário. |
|
mcac_table_row_cache_hit_total |
Principal |
Número de acertos no cache de linha |
Um valor baixo pode diminuir o desempenho de leitura da aplicação e afetar a experiência do usuário. |
|
mcac_table_row_cache_miss_total |
Recomendado |
Número de falhas no cache de linha |
Um valor alto pode diminuir o desempenho de leitura da aplicação e afetar a experiência do usuário. |
|
mcac_table_row_cache_hit_out_of_range_total |
Recomendado |
Número de acertos no cache de linha que ainda exigiram acesso ao disco. |
Um valor alto pode diminuir o desempenho de leitura da aplicação e afetar a experiência do usuário. |
|
mcac_table_bloom_filter_false_ratio |
Principal |
Taxa de falsos positivos do filtro Bloom |
Uma taxa alta de falsos positivos no filtro Bloom faz com que muitos elementos inexistentes sejam identificados incorretamente como existentes. Isso desperdiça tempo e recursos de consulta, degradando o desempenho e aumentando custos. |
Uso de CPU, memória e disco
|
Métrica |
Nível |
Descrição |
Explicação |
|
collectd_cpu_total |
Crítico |
Utilização da CPU |
Um valor alto indica carga elevada no sistema, o que aumenta a latência das requisições do cliente e afeta gravemente a experiência do usuário. |
|
collectd_memory |
Crítico |
Uso de memória |
Um valor alto indica carga elevada no sistema, o que aumenta a latência das requisições do cliente e afeta gravemente a experiência do usuário. |
|
collectd_df_df_complex |
Crítico |
Uso de disco |
Um valor alto indica espaço disponível em disco insuficiente, o que pode impedir a persistência de dados e causar risco de indisponibilidade do sistema. |
Compactação de SSTable
|
Métrica |
Nível |
Descrição |
Explicação |
|
mcac_table_pending_compactions |
Principal |
Tarefas de compactação de SSTable em andamento |
Um valor alto indica carga elevada no sistema, o que aumenta a latência das requisições do cliente. Configure um intervalo de compactação adequado para SSTables. |
|
mcac_table_compaction_bytes_written_total |
Principal |
Taxa de compactação de SSTable |
Um valor baixo indica uma taxa de compactação lenta, o que pode causar acúmulo de tarefas. Considere atualizar as especificações do nó. |
|
mcac_table_compression_ratio |
Principal |
Taxa de compressão de SSTable |
Um valor alto indica que os arquivos compactados ainda são muito grandes e a compressão é ineficaz. |
Arquivos de disco
|
Métrica |
Nível |
Descrição |
Explicação |
|
mcac_table_live_ss_table_count |
Principal |
Número de SSTables |
Um valor alto aumenta o uso de disco e a latência de leitura/gravação. Configure uma estratégia adequada de compactação de SSTable. |
|
mcac_table_live_disk_space_used_total |
Principal |
Espaço em disco usado por SSTables |
Um valor alto aumenta o uso de disco e a latência de leitura/gravação. Configure uma estratégia adequada de compactação de SSTable. |
|
mcac_table_ss_tables_per_read_histogram |
Principal |
Número de SSTables lidos por operação de leitura |
Um valor alto aumenta a latência de leitura do cliente. |
|
mcac_commit_log_total_commit_log_size |
Principal |
Espaço em disco usado pelo log de commit |
Um valor alto pode causar insuficiência de espaço em disco, degradação do desempenho de leitura/gravação e maior tempo de recuperação de dados. |
|
mcac_table_memtable_live_data_size |
Principal |
Espaço usado pela MemTable |
Um valor alto pode degradar o desempenho de gravação de dados e a estabilidade do nó. |
|
mcac_table_waiting_on_free_memtable_space |
Principal |
Tempo gasto aguardando liberação de espaço na MemTable |
Um valor alto pode degradar o desempenho de gravação de dados e a estabilidade do nó. |
Status do pool de threads
|
Métrica |
Nível |
Descrição |
Explicação |
|
mcac_thread_pools_active_tasks |
Crítico |
Número de tarefas ativas no pool de threads |
Muitas tarefas bloqueadas consomem recursos do sistema, tornam as respostas mais lentas e podem até travar o sistema. |
|
mcac_thread_pools_total_blocked_tasks_total |
Crítico |
Número de tarefas bloqueadas no pool de threads |
Muitas tarefas bloqueadas consomem recursos do sistema, tornam as respostas mais lentas e podem até travar o sistema. |
|
mcac_thread_pools_pending_tasks |
Crítico |
Número de tarefas pendentes no pool de threads |
Muitas tarefas pendentes consomem recursos excessivos do sistema, causam timeout nas requisições correspondentes e podem até travar o sistema. |
|
mcac_thread_pools_completed_tasks |
Principal |
Número de tarefas concluídas no pool de threads |
Esta métrica reflete o throughput do sistema. Um valor mais alto indica melhor desempenho do sistema. |
Métricas da JVM
|
Métrica |
Nível |
Descrição |
Explicação |
|
mcac_jvm_memory_used |
Crítico |
Memória heap da JVM utilizada |
Um valor alto pode causar insuficiência de memória, o que dispara coleta de lixo frequente e reduz o throughput da aplicação. |
|
mcac_jvm_gc_time |
Crítico |
Tempo gasto em coleta de lixo (GC) |
Um valor alto indica GC frequente. O sistema tem menos tempo para executar cargas de trabalho do usuário, o que pode causar timeouts de requisição ou até travamentos do sistema. |