Apache HBase

La integración de Apache HBase recopila métricas del clúster de los servidores regionales y master. Las métricas de servidor regional están relacionadas con el almacenamiento, la solicitud y la latencia. La integración también recopila registros de servidores regionales y master y los analiza en una carga útil de JSON. El resultado incluye campos para la fuente, el nivel y el mensaje.

Para obtener más información sobre HBase, consulta hbase.apache.org/.

Requisitos previos

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

Este receptor es compatible con las versiones 1.7.x, 2.3.x y 2.4.x de Apache HBase.

Configura tu instancia de HBase

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 hbase-env.sh de una implementación de HBase.

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 10101, especifica lo siguiente cuando inicies la JVM:

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

Configura el Agente de operaciones para HBase

Mediante la guía Configura el Agente de operaciones, agrega los elementos necesarios para recopilar registros y métricas de tus instancias de HBase y reinicia el agente.

Configuración de ejemplo

El siguiente comando crea el archivo de configuración a fin de recopilar y transferir registros y métricas para HBase, y reiniciar el Agente de operaciones en 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

Configura la recopilación de registros

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

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

Campo Predeterminada Descripción
type Este valor debe ser hbase_system.
include_paths [/opt/hbase/logs/hbase-*-regionserver-*.log, /opt/hbase/logs/hbase-*-master-*.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/hbase*/*.log.
collect_jvm_metrics true Configura el receptor para que también recopile las métricas de JVM compatibles.
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.
wildcard_refresh_interval 60s El intervalo en el que se actualizan las rutas de acceso de archivos comodín en include_paths. Se especifica como un intervalo de tiempo que se puede analizar mediante time.ParseDuration. Debe ser un múltiplo de 1 s.

¿Qué se registra?

Los logName de los registros hbase_system derivan de los ID de receptor especificados en la configuración. Los campos detallados dentro de LogEntry son los siguientes.

Campo Tipo Descripción
timestamp string (Timestamp) Hora en que se recibió la solicitud.
jsonPayload.module string Módulo de hbase en el que se originó el registro.
jsonPayload.source string Fuente en la que 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).

Configura la recopilación de métricas

A fin de recopilar métricas de HBase, debes crear un receptor para las métricas de HBase y, luego, crear una canalización destinada al receptor nuevo. A fin de configurar un receptor para las métricas de HBase, especifica los siguientes campos:

Campo Predeterminada Descripción
type Este valor debe ser hbase.
endpoint localhost:10101 La URL de servicio de JMX, o el host y el puerto que se usan para construir la URL de servicio. Debe tener el formato service:jmx:<protocol>:<sap> o host:port. Los valores en formato host:port se usarán 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 HBase.

Tipo de métrica 
Categoría, tipo
Recursos supervisados
Etiquetas
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

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 HBase. 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 HBase:

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


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/hbase.region_server.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.