A integração do Apache Cassandra coleta métricas de solicitação, tarefa e armazenamento que destacam a carga em uma instância. Opcionalmente, a integração também pode coletar métricas gerais da JVM relacionadas à coleta de memória e lixo. A integração também coleta registros de sistema, depuração e coleta de lixo. Esses registros são analisados em um payload JSON, que inclui campos de mensagem, classe Java e número de linha.
Para mais informações sobre o Cassandra, consulte a documentação do Apache Cassandra.
Pré-requisitos
Para coletar a telemetria do ActiveMQ, instale o Agente de operações:
- Para métricas, instale a versão 2.6.0 ou mais recente.
- Para registros, instale a versão 2.5.0 ou mais recente.
Essa integração é compatível com o Cassandra versões 3.11 e 4.0.
Configurar a instância do Cassandra
Para expor um endpoint JMX, você precisa definir a propriedade do sistema com.sun.management.jmxremote.port
ao iniciar a JVM. Também recomendamos configurar a propriedade do sistema com.sun.management.jmxremote.rmi.port
para a mesma porta. Para
expor um endpoint JMX remotamente, você também precisa definir
a propriedade do sistema java.rmi.server.hostname
.
Por padrão, essas propriedades são definidas em um arquivo cassandra-env.sh
da implantação
do Cassandra.
Para definir as propriedades do sistema usando argumentos de linha de comando, adicione -D
ao nome da propriedade ao iniciar a JVM. Por exemplo, para definir
com.sun.management.jmxremote.port
na porta 7199
, especifique o seguinte ao iniciar a
JVM:
-Dcom.sun.management.jmxremote.port=7199
Configure o agente de operações para Cassandra
Seguindo o guia para Configurar o Agente de operações, adicione os elementos necessários para coletar registros das instâncias do Cassandra e reinicie o agente.
Exemplo de configuração
Os comandos a seguir criam a configuração para coletar e ingerir telemetria para o Cassandra e reinicia o agente de operações.
# 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
Neste exemplo, as propriedades do sistema com.sun.management.jmxremote.port
e com.sun.management.jmxremote.rmi.port
foram definidas como 7199
, e a propriedade do sistema java.rmi.server.hostname
foi definida como 127.0.0.1
. Para mais informações, consulte Configurar a coleta de métricas.
Configurar a coleta de registros
Para ingerir registros do Cassandra, é preciso criar receptores para os registros que o Cassandra produz e criar um pipeline para os novos receptores.
cassandra_system
Para configurar um receptor para os registros , especifique os seguintes campos:
Campo | Padrão | Descrição |
---|---|---|
exclude_paths |
Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths . |
|
include_paths |
[/var/log/cassandra/system*.log] |
Uma lista de caminhos do sistema de arquivos a serem lidos acompanhando cada
arquivo. Um caractere curinga (* ) pode ser usado nos caminhos. por exemplo, /var/log/cassandra/system*.log . |
record_log_file_path |
false |
Se definido como true , o caminho para o arquivo específico de que a gravação de registro foi recebida aparecerá na entrada de registro de saída como o valor do rótulo agent.googleapis.com/log_file_path . Ao usar um caractere curinga, apenas o caminho do arquivo de que o registro foi recebido é gravado. |
type |
O valor precisa ser cassandra_system . |
|
wildcard_refresh_interval |
60s |
O intervalo em que os caminhos de arquivos curinga no include_paths são atualizados. Determinado como uma duração analisável por time.ParseDuration , por exemplo, 30s ou 2m . Essa propriedade pode ser útil com capacidades de registro altas em que os arquivos de registro são alternados mais rapidamente do que o intervalo padrão. |
cassandra_debug
Para configurar um receptor para os registros , especifique os seguintes campos:
Campo | Padrão | Descrição |
---|---|---|
exclude_paths |
[] |
Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths . |
include_paths |
[/var/log/cassandra/debug*.log] |
Uma lista de caminhos do sistema de arquivos a serem lidos acompanhando cada
arquivo. Um caractere curinga (* ) pode ser usado nos caminhos. por exemplo, /var/log/cassandra/system*.log . |
record_log_file_path |
false |
Se definido como true , o caminho para o arquivo específico de que a gravação de registro foi recebida aparecerá na entrada de registro de saída como o valor do rótulo agent.googleapis.com/log_file_path . Ao usar um caractere curinga, apenas o caminho do arquivo de que o registro foi recebido é gravado. |
type |
O valor precisa ser cassandra_debug . |
|
wildcard_refresh_interval |
60s |
O intervalo em que os caminhos de arquivos curinga no include_paths são atualizados. Determinado como uma duração analisável por time.ParseDuration , por exemplo, 30s ou 2m . Essa propriedade pode ser útil com capacidades de registro altas em que os arquivos de registro são alternados mais rapidamente do que o intervalo padrão. |
cassandra_gc
Para configurar um receptor para os registros , especifique os seguintes campos:
Campo | Padrão | Descrição |
---|---|---|
exclude_paths |
[] |
Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths . |
include_paths |
[/var/log/cassandra/gc.log.*.current] |
Uma lista de caminhos do sistema de arquivos a serem lidos acompanhando cada
arquivo. Um caractere curinga (* ) pode ser usado nos caminhos. por exemplo, /var/log/cassandra/system*.log . |
record_log_file_path |
false |
Se definido como true , o caminho para o arquivo específico de que a gravação de registro foi recebida aparecerá na entrada de registro de saída como o valor do rótulo agent.googleapis.com/log_file_path . Ao usar um caractere curinga, apenas o caminho do arquivo de que o registro foi recebido é gravado. |
type |
O valor precisa ser cassandra_gc . |
|
wildcard_refresh_interval |
60s |
O intervalo em que os caminhos de arquivos curinga no include_paths são atualizados. Determinado como uma duração analisável por time.ParseDuration , por exemplo, 30s ou 2m . Essa propriedade pode ser útil com capacidades de registro altas em que os arquivos de registro são alternados mais rapidamente do que o intervalo padrão. |
O que é registrado
O logName
é derivado dos
IDs do receptor especificados na configuração. Os campos
detalhados dentro de LogEntry
são os seguintes.
As entradas de registro não contêm campos em branco ou ausentes.
Os registros cassandra_system
contêm os seguintes campos no LogEntry
:
Campo | Tipo | Descrição |
---|---|---|
jsonPayload.javaClass |
string | Classe Java em que o registro foi originado |
jsonPayload.level |
string | Nível de entrada de registro |
jsonPayload.lineNumber |
string | Número da linha do arquivo de origem em que o registro foi originado |
jsonPayload.message |
string | Mensagem de registro, incluindo stacktrace detalhado, quando fornecido |
jsonPayload.module |
string | Módulo do Cassandra em que o registro foi originado |
severity |
string (LogSeverity ) |
Nível de entrada de registro (traduzido) |
Os registros cassandra_debug
contêm os seguintes campos no LogEntry
:
Campo | Tipo | Descrição |
---|---|---|
jsonPayload.javaClass |
string | Classe Java em que o registro foi originado |
jsonPayload.level |
string | Nível de entrada de registro |
jsonPayload.lineNumber |
string | Número da linha do arquivo de origem em que o registro foi originado |
jsonPayload.message |
string | Mensagem de registro |
jsonPayload.module |
string | Módulo do Cassandra em que o registro foi originado |
severity |
string (LogSeverity ) |
Nível de entrada de registro (traduzido) |
Os registros cassandra_gc
contêm os seguintes campos no LogEntry
:
Campo | Tipo | Descrição |
---|---|---|
jsonPayload.message |
string | Mensagem de registro |
jsonPayload.timeStopped |
string | Segundos em que a JVM foi interrompida para coleta de lixo |
jsonPayload.timeStopping |
string | Segundos que a JVM levou para interromper linhas de execução antes da coleta de lixo |
jsonPayload.uptime |
string | Segundos de atividade da JVM |
severity |
string (LogSeverity ) |
Nível de entrada de registro (traduzido) |
Configurar a coleta de métricas
Para ingerir métricas do Cassandra, crie um receptor para as métricas produzidas pelo Cassandra e, em seguida, crie um pipeline para o novo receptor.
Esse receptor não aceita o uso de várias instâncias na configuração, por exemplo, para monitorar vários endpoints. Todas essas instâncias gravam na mesma série temporal, e o Cloud Monitoring não tem como diferenciá-las.
Para configurar um receptor para suas
métricas do cassandra
, especifique os campos
a seguir:
Campo | Padrão | Descrição |
---|---|---|
collect_jvm_metrics |
true |
Configura o receptor para coletar as métricas do JVM compatíveis. |
collection_interval |
60s |
Um valor de time.Duration, como 30s ou 5m . |
endpoint |
localhost:7199 |
O URL do serviço JMX ou o host e a porta usados para criar o URL do serviço. Esse valor precisa estar na forma de service:jmx:<protocol>:<sap> ou host:port . Os valores no formato host:port são usados para criar um URL de serviço de service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi . |
password |
Senha configurada se o JMX estiver configurado para exigir autenticação. | |
type |
O valor precisa ser cassandra . |
|
username |
O nome de usuário configurado se o JMX estiver configurado para exigir autenticação. |
O que é monitorado?
A tabela a seguir fornece a lista de métricas que o agente de operações coleta da instância do Cassandra.
Tipo de métrica | |
---|---|
Tipo, tipo Recursos monitorados |
Rótulos |
workload.googleapis.com/cassandra.client.request.count
|
|
CUMULATIVE , INT64 gce_instance |
operation
|
workload.googleapis.com/cassandra.client.request.error.count
|
|
CUMULATIVE , INT64 gce_instance |
operation
status
|
workload.googleapis.com/cassandra.client.request.range_slice.latency.50p
|
|
GAUGE , DOUBLE gce_instance |
|
workload.googleapis.com/cassandra.client.request.range_slice.latency.99p
|
|
GAUGE , DOUBLE gce_instance |
|
workload.googleapis.com/cassandra.client.request.range_slice.latency.max
|
|
GAUGE , DOUBLE gce_instance |
|
workload.googleapis.com/cassandra.client.request.read.latency.50p
|
|
GAUGE , DOUBLE gce_instance |
|
workload.googleapis.com/cassandra.client.request.read.latency.99p
|
|
GAUGE , DOUBLE gce_instance |
|
workload.googleapis.com/cassandra.client.request.read.latency.max
|
|
GAUGE , DOUBLE gce_instance |
|
workload.googleapis.com/cassandra.client.request.write.latency.50p
|
|
GAUGE , DOUBLE gce_instance |
|
workload.googleapis.com/cassandra.client.request.write.latency.99p
|
|
GAUGE , DOUBLE gce_instance |
|
workload.googleapis.com/cassandra.client.request.write.latency.max
|
|
GAUGE , DOUBLE gce_instance |
|
workload.googleapis.com/cassandra.compaction.tasks.completed
|
|
CUMULATIVE , INT64 gce_instance |
|
workload.googleapis.com/cassandra.compaction.tasks.pending
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/cassandra.storage.load.count
|
|
GAUGE , INT64 gce_instance |
|
workload.googleapis.com/cassandra.storage.total_hints.count
|
|
CUMULATIVE , INT64 gce_instance |
|
workload.googleapis.com/cassandra.storage.total_hints.in_progress.count
|
|
GAUGE , INT64 gce_instance |
Verificar a configuração
Nesta seção, descrevemos como verificar se você configurou corretamente o receptor do Cassandra. Pode levar um ou dois minutos para que o agente de operações comece a coletar telemetria.
Para verificar se os registros do Cassandra estão sendo enviados para o Cloud Logging, faça o seguinte:
-
No console do Google Cloud, acesse a página do Análise de registros.
Acessar a Análise de registros
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Geração de registros.
- Digite a consulta a seguir no Editor e clique em Executar consulta:
resource.type="gce_instance" (log_id("cassandra_system") OR log_id("cassandra_debug") OR log_id("cassandra_gc"))
Para verificar se as métricas do Cassandra estão sendo enviadas para o Cloud Monitoring, faça o seguinte:
-
No Console do Google Cloud, acesse a página do leaderboard Metrics Explorer:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
- Na barra de ferramentas do painel do criador de consultas, selecione o botão code MQL ou code PromQL.
- Verifique se MQL está selecionado na opção de ativar/desativar Idioma. A alternância de idiomas está na mesma barra de ferramentas que permite formatar sua consulta.
- Digite a consulta a seguir no Editor e clique em Executar consulta:
fetch gce_instance | metric 'workload.googleapis.com/cassandra.client.request.count' | every 1m
Ver painel
Para visualizar as métricas do Cassandra, é necessário ter um gráfico ou painel configurado. A integração do Cassandra inclui um ou mais painéis para você. Todos os painéis são instalados automaticamente depois que você configura a integração e o Agente de operações começa a coletar dados de métricas.
Também é possível ver visualizações estáticas de painéis sem instalar a integração.
Para ver um painel instalado, faça o seguinte:
-
No console do Google Cloud, acesse a página Painéis:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
- Selecione a guia Lista de painéis e escolha a categoria Integrações.
- Clique no nome do painel que você quer visualizar.
Se você configurou uma integração, mas o painel não foi instalado, verifique se o agente de operações está em execução. Quando não há dados de métricas para um gráfico no painel, a instalação do painel falha. Depois que o Agente de operações começar a coletar métricas, o painel será instalado para você.
Para acessar uma visualização estática do painel, faça o seguinte:
-
No console do Google Cloud, acesse a página Integrações:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
- Clique no filtro de plataforma de implantação do Compute Engine.
- Localize a entrada para Cassandra e clique em Ver detalhes.
- Selecione a guia Painéis para uma visualização estática. Se o painel estiver instalado, navegue até ele clicando em Ver painel.
Para mais informações sobre painéis no Cloud Monitoring, consulte Painéis e gráficos.
Para mais informações sobre como usar a página Integrações, consulte Gerenciar integrações.
Instalar políticas de alertas
As políticas de alertas orientam o Cloud Monitoring a notificar você quando ocorrerem condições especificadas. A integração do Cassandra inclui uma ou mais políticas de alertas para você usar. É possível ver e instalar essas políticas de alertas na página Integrações no Monitoring.
Para visualizar e descrever as descrições de políticas de alertas disponíveis, faça o seguinte:
-
No console do Google Cloud, acesse a página Integrações:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoramento.
- Localize a entrada para Cassandra e clique em Ver detalhes.
- Selecione a guia Alertas. Essa guia apresenta descrições das políticas de alertas disponíveis e mostra uma interface para instalá-las.
- Instalar políticas de alertas. As políticas de alertas precisam
saber para onde enviar as notificações de que o alerta foi
acionado. Portanto, elas exigem informações para instalação.
Para instalar políticas de alertas, faça o seguinte:
- Na lista de políticas de alertas disponíveis, selecione aquelas que você quer instalar.
Na seção Configurar notificações, selecione um ou mais canais de notificação. Você pode desativar o uso dos canais de notificação, mas, se isso acontecer, as políticas de alertas vão ser disparadas silenciosamente. É possível verificar o status no Monitoring, mas não receber notificações.
Para saber mais sobre canais de notificação, consulte Gerenciar canais de notificação.
- Clique em Criar políticas.
Para mais informações sobre políticas de alertas no Cloud Monitoring, consulte Introdução a alertas.
Para mais informações sobre como usar a página Integrações, consulte Gerenciar integrações.
A seguir
Para ver um tutorial sobre como usar o Ansible para instalar o agente de operações, configurar um aplicativo de terceiros e instalar um painel de amostra, consulte o vídeo Instalação do agente de operações para resolver problemas de aplicativos de terceiros.