Apache HBase

A integração do Apache HBase coleta métricas de cluster de servidores master e de região. As métricas do servidor da região estão relacionadas ao armazenamento, à solicitação e à latência. A integração também coleta registros de servidor de região e master e os analisa em um payload JSON. O resultado inclui campos para origem, nível e mensagem.

Para mais informações sobre o HBase, consulte hbase.apache.org/.

Pré-requisitos

Para coletar e ingerir registros e métricas do HBase, você precisa instalar o agente de operações versão 2.11.0 ou mais recente.

Esse receptor suporta as versões 1.7.x, 2.3.x e 2.4.x do Apache HBase.

Configurar a instância do HBase

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 hbase-env.sh da implantação do HBase.

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 10101, especifique o seguinte ao iniciar a JVM:

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

Configurar o agente de operações para HBase

Seguindo o guia para configurar o agente de operações, adicione os elementos necessários para coletar registros e métricas das instâncias do HBase e reiniciar o agente.

Exemplo de configuração

O comando a seguir cria o arquivo de configuração para coletar e ingerir registros e métricas do HBase e reiniciar o agente de operações no Linux.

sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
logging:
  receivers:
    hbase_system:
      type: hbase_system
  service:
    pipelines:
      hbase:
        receivers:
          - hbase_system
metrics:
   receivers:
      hbase:
         type: hbase
   service:
      pipelines:
         hbase:
            receivers:
               - hbase
EOF
sudo service google-cloud-ops-agent restart

Configurar a coleta de registros

Para ingerir registros do HBase, é preciso criar receptores para os registros que o HBase produz e criar um pipeline para os novos receptores.

Para configurar um receptor para os registros hbase_system, especifique os seguintes campos:

Campo Padrão Descrição
type Este valor precisa ser hbase_system.
include_paths [/opt/hbase/logs/hbase-*-regionserver-*.log, /opt/hbase/logs/hbase-*-master-*.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/hbase*/*.log.
collect_jvm_metrics true Configura o receptor para coletar as métricas do JVM compatíveis.
exclude_paths [] Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths.
wildcard_refresh_interval 60s O intervalo em que os caminhos de arquivos curinga em include_paths são atualizados. Especificado como um intervalo de tempo analisável por time.ParseDuration. Precisa ser múltiplo de 1s.

O que é registrado

Os registros logName de hbase_system são derivados dos IDs do receptor especificados na configuração. Os campos detalhados dentro de LogEntry são os seguintes.

Campo Tipo Descrição
timestamp string (Timestamp) Hora em que a solicitação foi recebida.
jsonPayload.module string Módulo do HBase em que o registro foi originado.
jsonPayload.source string Origem da origem do registro.
jsonPayload.message string Mensagem de registro, incluindo stack trace detalhado, quando fornecido.
severity string (LogSeverity) Nível de entrada de registro (traduzido).

Configurar a coleta de métricas

Para coletar métricas do HBase, é preciso criar um receptor para as métricas do HBase e, em seguida, criar um pipeline para o novo receptor. Para configurar um receptor para suas métricas do HBase, especifique os campos a seguir:

Campo Padrão Descrição
type Este valor precisa ser hbase.
endpoint localhost:10101 O URL do serviço JMX ou o host e a porta usados para criar o URL do serviço. Precisa estar na forma de service:jmx:<protocol>:<sap> ou host:port. Os valores no formulário host:port serão usados para criar um URL de serviço de service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi.
collect_jvm_metrics true Configura o receptor para coletar as métricas do JVM compatíveis.
username O nome de usuário configurado se o JMX estiver configurado para exigir autenticação.
password Senha configurada se o JMX estiver configurado para exigir autenticação.
collection_interval 60s Um valor de time.Duration, como 30s ou 5m.

O que é monitorado?

A tabela a seguir fornece a lista de métricas que o agente de operações coleta da instância do HBase.

Tipo de métrica 
Tipo, tipo
Recursos monitorados
Rótulos
workload.googleapis.com/hbase.master.region_server.count
GAUGEINT64
gce_instance
state
workload.googleapis.com/hbase.master.regions_in_transition.count
GAUGEINT64
gce_instance
 
workload.googleapis.com/hbase.master.regions_in_transition.oldest_age
GAUGEINT64
gce_instance
 
workload.googleapis.com/hbase.master.regions_in_transition.over_threshold
GAUGEINT64
gce_instance
 
workload.googleapis.com/hbase.region_server.active_handler.count
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.authentication.count
GAUGEINT64
gce_instance
state
region_server
workload.googleapis.com/hbase.region_server.block_cache.operation.count
GAUGEINT64
gce_instance
state
region_server
workload.googleapis.com/hbase.region_server.blocked_update.time
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.disk.store_file.count
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.disk.store_file.size
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.files.local
GAUGEDOUBLE
gce_instance
region_server
workload.googleapis.com/hbase.region_server.gc.old_gen.time
CUMULATIVEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.gc.time
CUMULATIVEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.gc.young_gen.time
CUMULATIVEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.open_connection.count
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.append.latency.max
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.append.latency.mean
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.append.latency.median
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.append.latency.min
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.append.latency.p99
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.delete.latency.max
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.delete.latency.mean
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.delete.latency.median
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.delete.latency.min
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.delete.latency.p99
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.get.latency.max
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.get.latency.mean
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.get.latency.median
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.get.latency.min
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.get.latency.p99
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.increment.latency.max
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.increment.latency.mean
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.increment.latency.median
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.increment.latency.min
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.increment.latency.p99
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.put.latency.max
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.put.latency.mean
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.put.latency.median
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.put.latency.min
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.put.latency.p99
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.replay.latency.max
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.replay.latency.mean
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.replay.latency.median
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.replay.latency.min
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operation.replay.latency.p99
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.operations.slow
GAUGEINT64
gce_instance
operation
region_server
workload.googleapis.com/hbase.region_server.queue.length
GAUGEINT64
gce_instance
state
region_server
workload.googleapis.com/hbase.region_server.queue.request.count
GAUGEINT64
gce_instance
state
region_server
workload.googleapis.com/hbase.region_server.region.count
GAUGEINT64
gce_instance
region_server
workload.googleapis.com/hbase.region_server.request.count
GAUGEINT64
gce_instance
state
region_server
workload.googleapis.com/hbase.region_server.write_ahead_log.count
GAUGEINT64
gce_instance
region_server

Verificar a configuração

Use o Explorador de registros e o Metrics Explorer para verificar se você configurou corretamente o receptor do HBase. Pode levar um ou dois minutos para o agente de operações começar a coletar registros e métricas.

Para verificar se os registros são ingeridos, acesse o Explorador de registros e execute a seguinte consulta para ver os registros do HBase:

resource.type="gce_instance"
logName=("projects/PROJECT_ID/logs/hbase_system")


Para verificar se as métricas são ingeridas, acesse o Metrics Explorer e execute a seguinte consulta na guia do MQL.

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

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.