OceanBase
English日本語简体中文
ドキュメントホーム
製品
エコシステム
リリース

データベース

OceanBase CloudOceanBaseデータベース

データベース

OceanBase CloudOceanBaseデータベース
OceanBase CloudOceanBaseデータベース

OceanBaseデータベース

KV - V4.4.2
  • OBKVの概要
  • OBKVのアーキテクチャ
  • OBKV-Table
    • OBKV-Table概要
      • OBKV-Tableの概要
      • OBKV-Tableのコア機能
      • OBKV-Tableデプロイの概要
    • シンプルなKey-Valueストレージのクイックスタート(Java)
    • OBKV-Table Javaクライアントを使ったアプリケーション開発
      • OBKV-Table Java開発ガイド
      • OBKV-Table開発の準備
      • OBKV-Table Javaクライアントを使用してクラスタに接続する
      • OBKV-Table操作例
        • OBKV-Tableへのデータ書き込み
        • OBKV-Tableによるデータのクエリ
        • OBKV-Tableでのデータ更新
        • OBKV-Tableによるデータの削除
      • OBKV-Table Javaクライアントのパラメータ設定
    • OBKV-Table管理
      • OBKV-Table管理の概要
      • OBKV-Tableの高可用性
      • OBKV-Tableのセキュリティ権限
      • OBKV-Tableモニタリングメトリクス
    • OBKV-Tableリファレンス
      • OBKV-Tableのデータモデル
      • OBKV-Tableの操作タイプ
      • OBKV-Tableがサポートするデータ型
      • OBKV-Table全文インデックス
      • OBKV-Tableのグローバルインデックスの使用範囲と例
      • OBKV-Tableの期限切れデータ削除
      • OBKV-Tableのグループコミット
      • OBKV-Tableの弱い整合性読み取りと最寄りデータセンターからの読み取り
      • OBKV-Table関連ビュー
    • OBKV-Table よくある質問
  • OBKV-HBase
    • OBKV-HBaseの概要
    • OBKV-HBaseのコア機能
    • OBKV-HBaseのデプロイ
    • OBKV-HBaseによるアプリケーション開発
      • OBKV-HBase アプリケーション開発の概要
      • OBKV-HBase Javaクライアントを使用したクラスタへの接続
      • HBaseの業務コードをOBKV-HBaseに移行する
      • OBKV-HBase データ操作の例
    • OBKV-HBase 移行ガイド
    • OBKV-HBase管理
      • OBKV-HBase管理の概要
      • OBKV-HBaseの高可用性
      • OBKV-HBaseのセキュリティ権限
      • OBKV-HBaseモニタリングメトリクス
    • OBKV-HBaseクエリの最適化
    • OBKV-HBaseの性能テスト
    • OBKV-HBaseリファレンス
      • OBKV-HBaseデータモデル
      • OBKV-HBaseのデータスキーマ
      • HBaseとの互換インターフェース
      • HBaseと互換性のあるフィルター
      • OBKV-HBaseの自動パーティション分割
      • OBKV-HBaseにおける期限切れデータの削除
      • OBKV-HBaseの弱い整合性読み取りと最寄りデータセンターからの読み取り
      • OBKV-HBase関連ビュー
    • OBKV-HBaseエコシステム統合
      • Flink連携
        • Flinkコネクタを使用してOBKV-HBaseにデータを同期する
        • ネイティブFlinkによるOBKV-HBaseへのアクセス
      • HiveによるOBKV-HBaseへのアクセス
      • SparkによるOBKV-HBaseへのアクセス
  • OBKVリリースノート
    • OBKV Enterprise版

PDF をダウンロード

ドキュメントフィードバック
  1. ドキュメントセンター
  2. OceanBaseデータベース
  3. KV
  4. V4.4.2

OBKV-HBaseモニタリングメトリクス

最終更新:2026-09-30 06:35:08

サーバー側モニタリング指標
QPS/RT/ROWS関連指標
遅延HBaseリクエストの特定
P99などのパフォーマンス指標
クライアントモニタリングメトリクス
MetricsExporterを使用した対応する操作のモニタリングメトリクスの取得
JMXを使用したクライアント監視メトリクスの確認

本記事では、OBKV-HBaseのサーバー側およびクライアント側の監視指標と、その確認方法について説明します。

サーバー側モニタリング指標

以下のビューを参照することで、OBKV-HBaseに関連するサーバー側のモニタリング指標を確認できます。

ビュー
機能の説明
GV$SYSSTAT OBKV-HBaseのQPS/RT/ROWS関連指標を照会する
GV$OB_SQL_AUDIT OBKV-HBaseの処理の遅いリクエストを特定する
GV$OB_QUERY_RESPONSE_TIME_HISTOGRAM OBKV-HBaseのP99などのパフォーマンス指標を照会する

具体的には以下のとおりです:

QPS/RT/ROWS関連指標

QPS/RT/ROWS関連指標は、GV$SYSSTAT ビューからクエリできます。

すべてのモニタリング指標のクエリ

MySQL [oceanbase]> SELECT DISTINCT class,stat_id,name, value_type FROM GV$SYSSTAT WHERE name LIKE "hbase%";

戻り値のフィールド例は以下のとおりです(戻り値にはすべてのHBaseモニタリング指標が含まれます。完全なリストについては、以下のパラメータ説明表を参照してください)。

+-------+---------+------------------------------+------------+
| class | stat_id | name                         | value_type |
+-------+---------+------------------------------+------------+
|  4096 |  191001 | hbase scan count             | ADD_VALUE  |
+-------+---------+------------------------------+------------+

(推奨) テナントごとに特定の監視指標を照会する

クエリ例:

# checkAndMutateの指標を照会する
MySQL [oceanbase]> SELECT * FROM oceanbase.GV$SYSSTAT
    WHERE name LIKE '%hbase check_mutate%'
    AND con_id = (SELECT tenant_id FROM oceanbase.DBA_OB_TENANTS WHERE tenant_name = 'your_tenant_name'); -- テナント名を指定する

サポートされている name パラメータのリストと説明は以下のとおりです:

Name
説明
hbase scan count Scan操作の回数
hbase scan time Scan操作の実行総時間
hbase scan row count Scan操作でスキャンされたCell数
hbase put count Put操作の回数
hbase put time Put操作の実行総時間
hbase put row count Put操作のCell数
hbase delete count delete操作の回数
hbase delete time delete操作の実行総時間
hbase delete row count delete操作のCell数
hbase append count append操作の回数
hbase append time append操作の実行総時間
hbase append row count append操作のCell数
hbase increment count increment操作の回数
hbase increment time increment操作の実行総時間
hbase increment row count increment操作のCell数
hbase check_put count checkAndPut操作の回数
hbase check_put time checkAndPut操作の実行総時間
hbase check_put row count checkAndPut操作のCell数
hbase check_delete count checkAndDelete操作の回数
hbase check_delete time checkAndDelete操作の実行総時間
hbase check_delete row count checkAndDelete操作のCell数
hbase check_mutate checkAndMutate操作の回数。OBKV-Table V2.3.0とOBKV-HBase V1.5.0/V2.5.0以降のクライアントを同時に使用する必要があります
hbase scan scan操作の回数。OBKV-Table V2.3.0とOBKV-HBase V1.5.0/V2.5.0以降のクライアントを同時に使用する必要があります
hbase get get操作の回数。OBKV-Table V2.3.0とOBKV-HBase V1.5.0/V2.5.0以降のクライアントを同時に使用する必要があります
hbase batch put batch put操作の回数。OBKV-Table V2.3.0とOBKV-HBase V1.5.0/V2.5.0以降のクライアントを同時に使用する必要があります
hbase batch delete batch delete操作の回数。OBKV-Table V2.3.0とOBKV-HBase V1.5.0/V2.5.0以降のクライアントを同時に使用する必要があります
hbase batch get batch get操作の回数。OBKV-Table V2.3.0とOBKV-HBase V1.5.0/V2.5.0以降のクライアントを同時に使用する必要があります
obkv failed operation OBKV失敗操作の回数。OBKV-Table V2.3.0とOBKV-HBase V1.5.0/V2.5.0以降のクライアントを同時に使用する必要があります

その他の監視指標の詳細については、GV$SYSSTATを参照してください。

遅延HBaseリクエストの特定

SQL Auditは、OceanBaseデータベースにおける重要な診断ツールであり、各リクエストのキャッシュヒット率、MemTable/SSTableなどのスキャン行数、実行時間などが記録されています。これにより、遅延リクエストのボトルネックポイントを容易に特定できます。OBKV-HBaseはSQL Auditの機能に対応しており、ユーザーは以下のクエリステートメントを使用してOBKV-HBase関連の診断レコードをフィルタリングできます。

MySQL [oceanbase]> SELECT * FROM v$OB_SQL_AUDIT WHERE query_sql LIKE "table api: hbase%" \G;

実行結果の例は次のとおりです:

*************************** 1. row ***************************
                         SVR_IP: 11.xxx.xxx.xxx
                       SVR_PORT: 54302
                     REQUEST_ID: 13841
                    SQL_EXEC_ID: 0
                       TRACE_ID: Y1EB2D1EB6D984-0000000000000002-0-0
                            SID: 0
                      CLIENT_IP: 30.xxx.xxx.xxx
                    CLIENT_PORT: 60205
                      TENANT_ID: 1
                    TENANT_NAME: sys
            EFFECTIVE_TENANT_ID: 1
                        USER_ID: 200001
                      USER_NAME: root
                     USER_GROUP: 0
                 USER_CLIENT_IP: 30.xxx.xxx.xxx
                          DB_ID: 500001
                        DB_NAME: test
                         SQL_ID: TABLEAPI0x1103vv00000000CB87E8C9
                      QUERY_SQL: table api: hbase_put,
request: {credential:0193808080000101C19A0CA1C21E00FABAF9E6C0B589AEDB01, table_name:"htable1$family", table_id:500014, tablet_id:{id:200055}, entity_type:2, batch_operation:{is_readonly:false, is_same_type:true, is_same_properties_names:true, operatiton_count:1, table_operations:[{operation_type:4, entity:"{rowkey_names:[]rowkey:[{"VARCHAR":"testKey0", collation:"utf8mb4_general_ci", coercibility:"EXPLICIT"}, {"VARCHAR":"column", collation:"utf8mb4_general_ci", coercibility:"EXPLICIT"}, {"BIGINT":-9223372036854775807}], properties:{V:{"VARCHAR":"putValue", collation:"utf8mb4_general_ci", coercibility:"EXPLICIT"}}}"}]}, consistency_level:0, option_flag:0, returning_affected_entity:false, returning_affected_rows:true, batch_operation_as_atomic:false}

その他の遅延リクエストの特定の詳細については、GV$OB_SQL_AUDITを参照してください。

P99などのパフォーマンス指標

OBKV-HBaseは各操作の実行時間をヒストグラムで集計しており、ユーザーはV$OB_QUERY_RESPONSE_TIME_HISTOGRAMビューを利用して、Prometheusと連携して各操作のP95、P99などのパフォーマンス指標を確認できます。

クエリ例:

# checkAndMutateのメトリクスを照会する
MySQL [oceanbase]> SELECT * FROM oceanbase.GV$OB_QUERY_RESPONSE_TIME_HISTOGRAM
    WHERE sql_type LIKE '%HBASE CHECK AND MUTATE%'; -- 操作タイプを指定する

サポートされているsql_typeおよびその他の詳細については、GV$OB_QUERY_RESPONSE_TIME_HISTOGRAMを参照してください。

クライアントモニタリングメトリクス

このセクションでは、OBKV-HBase MetricsExporterとjconsoleを使用してクライアント操作のモニタリングメトリクスを確認する方法について説明します。

MetricsExporterを使用した対応する操作のモニタリングメトリクスの取得

MetricsExporterには、以下のメトリクスが含まれています:

指標項目
説明
FailRate 対応インターフェースの平均失敗率
FailCount 対応インターフェースの失敗回数
TotalRuntime 対応インターフェースの総実行時間
AverageSingleOpCount 対応インターフェースに関連する操作数。バッチ操作の場合は、バッチ操作リストの長さ
Count 対応インターフェースの呼び出し回数
AverageOps 対応インターフェースの平均OPS
OneMinuteAverageOps 対応インターフェース1分間の平均OPS
FiveMinuteAverageOps 対応インターフェース5分間の平均OPS
FifteenMinuteAverageOps 対応インターフェース15分間の平均OPS
AverageLatency 対応インターフェースの平均RT
MaxLatency 対応インターフェースの最大RT
MinLatency 対応インターフェースの最小RT
MedianLatency 対応インターフェースの中央値RT
P75thPercentile 対応インターフェースのP75 RT
P95thPercentile 対応インターフェースのP95 RT
P98thPercentile 対応インターフェースのP98 RT
P99thPercentile 対応インターフェースのP99 RT
P999thPercentile 対応インターフェースのP999 RT

使用方法

# サンプルコード
Configuration conf = ObHTableTestUtil.newConfiguration();
// important!! enable metrics
conf.set(CLIENT_SIDE_METRICS_ENABLED_KEY, "true");
Connection connection = ConnectionFactory.createConnection(conf);
Table hTable = connection.getTable(TableName.valueOf("test_metrics"));
OHMetrics metrics = ((OHTable) hTable).getMetrics();
// GET_LIST metrics
MetricsExporter exporter = metrics.acquireMetrics(OHOperationType.GET_LIST);
System.out.println("AverageOps: " + exporter.getAverageOps());
System.out.println("99thPercentile: " + exporter.get99thPercentile());
System.out.println("AverageSingleOpCount: " + exporter.getAverageSingleOpCount());

JMXを使用したクライアント監視メトリクスの確認

クライアント監視メトリクスは、以下の2つの方法で確認できます:

  • MBeanServerを使用して確認する
  • jconsoleを使用して確認する

MBeanServerを使用した表示

MBeanServerを使用してクライアントのモニタリングメトリクスを表示するサンプルコードは以下のとおりです:

# サンプルコード
import javax.management.*;
import java.lang.management.ManagementFactory;

MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
/**
 * acquire the ObjectName of a specific attribute in JMX
 *
 * @param opType OHOperationType
 * @param metricsName metrics name
 * @param attributeName attribute name (latencyHistogram, failedOpCounter, totalSingleOpCount, totalRuntime)
 * @return ObjectName
 */
public ObjectName getObjectName(OHOperationType opType, String metricsName,
                                String attributeName) {
    try {
        // the format of JMX name: domain:name=metricName
        // example: com.alipay.oceanbase.hbase.util.OHMetrics.PUT.latencyHistogram.metricsName
        String name = String.format("%s.%s.%s.%s",
                OHMetrics.class.getName(),
                opType.name(),
                attributeName,
                metricsName);

        String objectNameStr = String.format("%s:name=%s",
            JMX_DOMAIN, name);
        return new ObjectName(objectNameStr);
    } catch (MalformedObjectNameException e) {
        throw new RuntimeException("Failed to create ObjectName", e);
    }
}

/**
 * acquire latency attribute
 * Timer attributes: Count, MeanRate, OneMinuteRate, FiveMinuteRate, FifteenMinuteRate
 * Min, Max, Mean, StdDev, 50thPercentile, 75thPercentile, 95thPercentile, 98thPercentile, 99thPercentile, 999thPercentile
 */
public Object getTimerAttribute(OHOperationType opType, String metricsName, String attributeName) {
    try {
        ObjectName objectName = getObjectName(opType, metricsName, "latencyHistogram");
        return mBeanServer.getAttribute(objectName, attributeName);
    } catch (Exception e) {
        throw new RuntimeException("Failed to get Timer attribute: " + attributeName, e);
    }
}

/**
 * acquire failed operations attribute
 * Meter attributes: Count, MeanRate, OneMinuteRate, FiveMinuteRate, FifteenMinuteRate
 */
public Object getMeterAttribute(OHOperationType opType, String metricsName, String attributeName) {
    try {
        ObjectName objectName = getObjectName(opType, metricsName, "failedOpCounter");
        return mBeanServer.getAttribute(objectName, attributeName);
    } catch (Exception e) {
        throw new RuntimeException("Failed to get Meter attribute: " + attributeName, e);
    }
}

/**
 * acquire Counter attribute
 * Counter attributes: Count
 */
public Object getCounterAttribute(OHOperationType opType, String metricsName,
                                 String counterName, String attributeName) {
    try {
        ObjectName objectName = getObjectName(opType, metricsName, counterName);
        return mBeanServer.getAttribute(objectName, attributeName);
    } catch (Exception e) {
        throw new RuntimeException("Failed to get Counter attribute: " + attributeName, e);
    }
}

Configuration config = ObHTableTestUtil.newConfiguration();
// important!! enable metrics
config.set(CLIENT_SIDE_METRICS_ENABLED_KEY, "true");
Connection connection = ConnectionFactory.createConnection(config);
Table hTable = connection.getTable(TableName.valueOf("test_multi_cf"));
String metricsName;
if (hTable instanceof OHTable) {
    OHMetrics metrics = ((OHTable) hTable).getMetrics();
    if (metrics != null) {
        metricsName = metrics.getMetricsName();
    }
}
// PUT metrics
// latency histogram
Long totalOpCount = (Long) getTimerAttribute(OHOperationType.PUT, metricsName, "Count");
Double meanOps = (Double) getTimerAttribute(OHOperationType.PUT, metricsName, "MeanRate");
Double oneMinuteRateOps = (Double) getTimerAttribute(OHOperationType.PUT, metricsName, "OneMinuteRate");
Double meanLatency = (Double) getTimerAttribute(OHOperationType.PUT, metricsName, "Mean");
Double minLatency = (Double) getTimerAttribute(OHOperationType.PUT, metricsName, "Min");
Double maxLatency = (Double) getTimerAttribute(OHOperationType.PUT, metricsName, "Max");
Double P99thPercentile = (Double) getTimerAttribute(OHOperationType.PUT, metricsName, "99thPercentile");

// failure operations
Long failedOpCount = (Long) getMeterAttribute(OHOperationType.PUT, metricsName, "Count");
Double meanFailRate = (Double) getMeterAttribute(OHOperationType.PUT, metricsName, "MeanRate");
Double oneMinuteFailRate = (Double) getMeterAttribute(OHOperationType.PUT, metricsName, "OneMinuteRate");

// Counter
Double totalSingleOpCount = (Long) getCounterAttribute(OHOperationType.PUT, metricsName, "totalSingleOpCount", "Count");
Double totalRuntime = (Long) getCounterAttribute(OHOperationType.PUT, metricsName, "totalRuntime", "Count");

jconsoleを使用した表示

Hadoop ConfigurationでCLIENT_SIDE_METRICS_ENABLED_KEYをtrueに設定します。OBKV-HBaseクライアントプロセスを起動し、ターミナルでps -ef | grep ideaを実行してプロセスのPIDを確認します。その後、ターミナルでjconsole $PIDを実行してJMXインターフェースを開きます。MBeanの下にはcom.oceanbase.hbase.metricsフォルダが表示され、その中にはすべてのインターフェース操作に関するモニタリング項目が含まれています。

前のトピック

OBKV-HBaseのセキュリティ権限
前へ

次のトピック

OBKV-HBaseクエリの最適化
次へ
このページの内容
サーバー側モニタリング指標
QPS/RT/ROWS関連指標
遅延HBaseリクエストの特定
P99などのパフォーマンス指標
クライアントモニタリングメトリクス
MetricsExporterを使用した対応する操作のモニタリングメトリクスの取得
JMXを使用したクライアント監視メトリクスの確認