> For the complete documentation index, see [llms.txt](https://docs.bindplane.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bindplane.com/integrations/sources/hbase.md).

# HBase

The Apache HBase source collects metrics and logs from an HBase deployment. Metrics are scraped over JMX from the HBase Master and Region Server JVMs using the OpenTelemetry JMX metrics JAR. Logs are tailed from the HBase Master, Region Server, and ZooKeeper log files on the collector host. Choose either or both signals with the Choose Telemetry Type parameter.

### Supported Telemetry

| Platform | Metrics | Logs | Traces |
| -------- | ------- | ---- | ------ |
| Linux    | ✓       | ✓    |        |
| Windows  | ✓       | ✓    |        |
| macOS    | ✓       | ✓    |        |

### Prerequisites

**For metrics (JMX):**

* HBase remote JMX enabled on the Master and Region Server JVMs. Set the JMX system properties (for example `com.sun.management.jmxremote.port`) in `hbase-env.sh` via `HBASE_MASTER_OPTS` and `HBASE_REGIONSERVER_OPTS`. See [Metrics & Monitoring](https://hbase.apache.org/docs/operational-management/metrics-and-monitoring/) in the Apache HBase documentation.
* Reachable JMX ports for each role (defaults: `10101` Master, `10102` Region Server) from the collector host.
* The OpenTelemetry JMX metrics JAR present on the collector host (default `/opt/opentelemetry-java-contrib-jmx-metrics.jar`) and a Java runtime available to execute it.

**For logs:**

* HBase writing the relevant log files (Master, Region Server, and optionally ZooKeeper) on the host running the collector.
* The collector having read access to the configured log file paths.

### Configuration

<figure><img src="/files/xeusWieG3KGb7ZmvkZdv" alt="Bindplane docs - Apache HBase - image 1"><figcaption></figcaption></figure>

**Telemetry Type**

| Parameter             | Type               | Required | Default               | Description                                            |
| --------------------- | ------------------ | -------- | --------------------- | ------------------------------------------------------ |
| Choose Telemetry Type | Telemetry Selector | No       | `["Logs", "Metrics"]` | Which signals to collect. Valid values: Logs, Metrics. |

**Logs**

These parameters apply when Metrics includes Logs.

| Parameter                  | Type    | Required | Default                                            | Description                                                                             |
| -------------------------- | ------- | -------- | -------------------------------------------------- | --------------------------------------------------------------------------------------- |
| Master Logs                | Boolean | No       | `true`                                             | Enable to read master logs.                                                             |
| Master File Path(s)        | Strings | No       | `/usr/local/hbase*/logs/hbase*-master-*.log`       | File paths to tail for master logs. Relevant when Master Logs is enabled.               |
| Region Server Logs         | Boolean | No       | `true`                                             | Enable to read region server logs.                                                      |
| Region Server File Path(s) | Strings | No       | `/usr/local/hbase*/logs/hbase*-regionserver-*.log` | File paths to tail for region server logs. Relevant when Region Server Logs is enabled. |
| Zookeeper Logs             | Boolean | No       | `false`                                            | Enable to read zookeeper logs.                                                          |
| Zookeeper File Path(s)     | Strings | No       | `/usr/local/hbase*/logs/hbase*-zookeeper-*.log`    | File paths to tail for zookeeper logs. Relevant when Zookeeper Logs is enabled.         |

**Metrics**

These parameters apply when Choose Telemetry Type includes Metrics.

| Parameter             | Type    | Required | Default     | Description                                                               |
| --------------------- | ------- | -------- | ----------- | ------------------------------------------------------------------------- |
| Address               | String  | No       | `localhost` | IP address or hostname to scrape for JMX metrics.                         |
| Master Metrics        | Boolean | No       | `true`      | Enable to scrape master server's JMX port.                                |
| Port (Master)         | Integer | No       | `10101`     | Master server's JMX port. Relevant when Master Metrics is enabled.        |
| Region Server Metrics | Boolean | No       | `true`      | Enable to scrape region server's JMX port.                                |
| Port (Region Server)  | Integer | No       | `10102`     | Region server's JMX port. Relevant when Region Server Metrics is enabled. |

**Advanced**

| Parameter                       | Type                 | Required | Default                                           | Description                                                              |
| ------------------------------- | -------------------- | -------- | ------------------------------------------------- | ------------------------------------------------------------------------ |
| Start At                        | Enum: beginning, end | No       | `end`                                             | Start reading logs from 'beginning' or 'end'. Applies to log collection. |
| Parse                           | Boolean              | No       | `true`                                            | Parses the log fields into structured data. Applies to log collection.   |
| JMX Metrics Collection Jar Path | String               | No       | `/opt/opentelemetry-java-contrib-jmx-metrics.jar` | Full path to the JMX metrics jar. Applies to metric collection.          |
| Collection Interval             | Integer              | No       | `60`                                              | How often (seconds) to scrape for metrics. Applies to metric collection. |

### Examples

#### Collect metrics and logs from a local HBase node

Scrape JMX metrics from the Master and Region Server on the local host and tail the Master and Region Server logs. ZooKeeper logs are left disabled.

```yaml
apiVersion: bindplane.observiq.com/v1
kind: Source
metadata:
  name: hbase
spec:
  type: hbase
  parameters:
    - name: telemetry_types
      value: ["Logs", "Metrics"]
    - name: address
      value: localhost
    - name: enable_master_jmx
      value: true
    - name: master_jmx_port
      value: 10101
    - name: enable_region_jmx
      value: true
    - name: region_jmx_port
      value: 10102
    - name: enable_master_log
      value: true
    - name: master_log_path
      value:
        - /usr/local/hbase*/logs/hbase*-master-*.log
    - name: enable_region_log
      value: true
    - name: region_log_path
      value:
        - /usr/local/hbase*/logs/hbase*-regionserver-*.log
```

#### Metrics only from a remote HBase host

Scrape JMX metrics from a remote host with a longer collection interval and no log collection.

```yaml
apiVersion: bindplane.observiq.com/v1
kind: Source
metadata:
  name: hbase
spec:
  type: hbase
  parameters:
    - name: telemetry_types
      value: ["Metrics"]
    - name: address
      value: hbase.internal.example.com
    - name: master_jmx_port
      value: 10101
    - name: region_jmx_port
      value: 10102
    - name: collection_interval
      value: 120
```

### Configuration Tips

* The default log paths use glob patterns rooted at `/usr/local/hbase*/logs/`. If HBase is installed elsewhere, override Master, Region Server, and Zookeeper file paths to match your deployment.
* The Address parameter is shared by both the Master and Region Server JMX scrapes. The collector must reach both JMX ports on that host.
* Set Start At to `beginning` to backfill existing log content on first run; the default `end` reads only new lines.

### Troubleshooting

#### JMX connection refused or no metrics

Symptoms: no HBase metrics appear, or the collector logs JMX connection errors.

Solutions:

1. Confirm remote JMX is enabled on the Master and Region Server JVMs and that the configured ports (`10101`, `10102` by default) are listening and reachable from the collector host.
2. Verify the JMX metrics JAR exists at the configured Jar Path and that a Java runtime is available to the collector.

#### No logs collected

Symptoms: log collection is enabled but no HBase log records arrive.

Solutions:

1. Confirm the configured file path globs match the actual HBase log file names and locations.
2. Verify the collector process has read access to the log files and directories.

### Standalone Source

```yaml
apiVersion: bindplane.observiq.com/v1
kind: Source
metadata:
  name: hbase
spec:
  type: hbase
  parameters:
    - name: telemetry_types
      value: ["Logs", "Metrics"]
    - name: address
      value: localhost
    - name: enable_master_jmx
      value: true
    - name: master_jmx_port
      value: 10101
    - name: enable_region_jmx
      value: true
    - name: region_jmx_port
      value: 10102
    - name: jar_path
      value: /opt/opentelemetry-java-contrib-jmx-metrics.jar
    - name: collection_interval
      value: 60
    - name: enable_master_log
      value: true
    - name: master_log_path
      value:
        - /usr/local/hbase*/logs/hbase*-master-*.log
    - name: enable_region_log
      value: true
    - name: region_log_path
      value:
        - /usr/local/hbase*/logs/hbase*-regionserver-*.log
    - name: enable_zookeeper_log
      value: false
    - name: zookeeper_log_path
      value:
        - /usr/local/hbase*/logs/hbase*-zookeeper-*.log
    - name: start_at
      value: end
    - name: parse
      value: true
```

### Related Resources

* [Apache HBase — Metrics & Monitoring](https://hbase.apache.org/docs/operational-management/metrics-and-monitoring/)
* [OpenTelemetry JMX Receiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/jmxreceiver)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.bindplane.com/integrations/sources/hbase.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
