HBaseのリアルタイムモニタリングツール「hbtop」

この記事では、HBaseのリアルタイムモニタリングツール`hbtop`を紹介したいと思います。

# hbtopとは

`hbtop`は、Unixのtopコマンドライクなツールで、リアルタイムにHBaseのメトリクスを表示することができます。メトリクスは、Region/Namespace/Table/RegionServer単位で表示することができ、メトリクスの値によるソートやフィルタリングをすることもできます。また、ドリルダウン機能によりHot Regionを簡単に探すことができます。

hbtopは、HBase2系だと2.1.7、2.2.2のリリースから含まれており、hbase1系では1.3.6、1.4.11、1.5.0から含まれています。

以下のコマンドで、hbtopを起動することができます。

```
$ hbase hbtop
```

hbtopを起動すると、以下のような画面が表示されます。
![top_screen](https://hbase.apache.org/hbtop-images/top_screen.gif)
この画面は、上部のサマリ部分と下部のメトリクス部分で構成されています。サマリ部分ではHBaseのバージョンやクラスタID、RegionServer数などを見ることができます。また、メトリクス部分では、選んだモードによってRegion/Namespace/Table/RegionServer毎のメトリクスを見ることができます。そして、この画面はデフォルトで3秒ごとにリフレッシュされます。

また、以下のように、メトリクス部分をスクロールすることもできます。
![scrolling_metric_records](https://hbase.apache.org/hbtop-images/scrolling_metric_records.gif)

# コマンドライン引数

hbtopを起動するときに、以下のコマンドライン引数を指定することができます。

| Argument | Description |
|:--|:--|
| -d,--delay <arg> | リフレッシュ間隔。デフォルト3秒 |
| -h,--help | ヘルプを表示。|
| -m,--mode <arg> | 初期モード。`n` (Namespaceモード)、`t` (Tableモード)、`r` (Regionモード)、s (RegionServerモード), デフォルトは `r` (Regionモード)。 |

# モードの変更

以下のように、画面上で`m`キーを押すことでモードを変更することができます。
![changing_mode](https://hbase.apache.org/hbtop-images/changing_mode.gif)
NameSpace毎にメトリクスを表示するNamespaceモード、Table毎にメトリクスを表示するTableモード、Region毎にメトリクスを表示するRegionモード、RegionServer毎にメトリクスを表示するRegionServerモードがあります。

# リフレッシュ間隔の変更

以下のように、画面上で`d`キーを押すことでリフレッシュ間隔の変更をすることができます。
![changing_refresh_delay](https://hbase.apache.org/hbtop-images/changing_refresh_delay.gif)

# メトリクスの表示/非表示

表示するメトリクスの表示/非表示を選択することができます。以下のように、画面上で`f`キーを押し、表示/非表示を切り替えたいメトリクスを選択し`d`キーか`スペース`キーを押すことで切り替えることができます。
![changing_displayed_fields](https://hbase.apache.org/hbtop-images/changing_displayed_fields.gif)

# ソートするメトリクスの変更

ソートするメトリクスの変更するには、画面上で`f`キーを押し、ソートするメトリクスを選択し`s`キーを押します。また、画面上で`R`キーを押すことで昇順/降順を切り替えることができます。
![changing_sort_field](https://hbase.apache.org/hbtop-images/changing_sort_field.gif)

# 表示メトリクスの並び替え

表示しているメトリクスの順番を変えたい場合には、画面上で`f`キーを押し、順番を変えたいメトリクスを選択し`right`キーを押します。そして、順番を変えたい場所まで移動させ`left`キーを押します。
![changing_order_of_fields](https://hbase.apache.org/hbtop-images/changing_order_of_fields.gif)

# フィルタ

フィルタを追加することで、条件にマッチしたレコードだけを表示することができます。`o`キー(ignoring case)か`O`キー(case sensitive)を押すことでフィルタを追加できます。
![adding_filters](https://hbase.apache.org/hbtop-images/adding_filters.gif)
フィルタのシンタックスは以下のようになります。

```
<Field><Operator><Value>
```

例として以下のようなフィルタが指定できます。

```
NAMESPACE==default
REQ/S>1000
```

Operatorとしては、以下が指定できます。

| Operator | Description |
|:--|:--|
| = | Partial match |
| == | Exact match |
| > | Greater than |
| >= | Greater than or equal to |
| < | Less than |
| <= | Less than and equal to |

また、`Ctrl + o`キーを押すことで現在指定されているフィルタを表示することができ、`=`キーを押すことでフィルタをクリアすることができます。
![showing_and_clearing_filters](https://hbase.apache.org/hbtop-images/showing_and_clearing_filters.gif)

# ドリルダウン

ドリルダウン機能を使うためには、ドリルダウンしたいレコードを選択し、`i`キーを押します。
![driling_down](https://hbase.apache.org/hbtop-images/driling_down.gif)

Namespaceモードの場合はTableモードにドリルダウンされ、Tableモードの場合はRegionモードにドリルダウンされます。また、RegionServerモードの場合にはRegionモードにドリルダウンされます。

# ヘルプ画面の表示
最後に、画面上で`h`ボタンを押すとヘルプ画面が表示されます。
![help_screen](https://hbase.apache.org/hbtop-images/help_screen.gif)

# まとめ

今回は、HBaseのリアルタイムモニタリングツールであるhbtopを紹介しました。もっと詳細を知りたい方は、以下の参考資料をご覧ください。

* HBASE-11062 hbtop, https://issues.apache.org/jira/browse/HBASE-11062
* Introduction "hbtop", a real-time monitoring tool for HBase modeled after Unix's 'top' command, https://blogs.apache.org/hbase/entry/introduction-hbtop-a-real-time
* Apache HBase Reference Guide - hbtop, https://hbase.apache.org/book.html#hbtop