TiDB Lightningモニタリング

tidb-lightningプロメテウスを介したメトリクス コレクションをサポートします。このドキュメントでは、 TiDB Lightningの監視構成と監視メトリクスを紹介します。

モニター構成

TiDB Lightningを手動でインストールする場合は、以下の手順に従ってください。

tidb-lightningのメトリックは、Prometheus が検出される限り、Prometheus によって直接収集できます。 tidb-lightning.tomlでメトリクス ポートを設定できます。

[lightning] # HTTP port for debugging and Prometheus metrics pulling (0 to disable) pprof-port = 8289 ...

そしてtikv-importer.tomlで:

# Listening address of the status server. status-server-address = '0.0.0.0:8286'

サーバーを検出するように Prometheus を構成する必要があります。たとえば、サーバーアドレスをscrape_configsセクションに直接追加できます。

... scrape_configs: - job_name: 'tidb-lightning' static_configs: - targets: ['192.168.20.10:8289'] - job_name: 'tikv-importer' static_configs: - targets: ['192.168.20.9:8286']

Grafana ダッシュボード

グラファナは、Prometheus メトリクスをダッシュボードとして視覚化するための Web インターフェイスです。

行 1: 速度

Panels in first row

パネルシリーズ説明
インポート速度TiDB Lightningから書き込む各テーブルの複雑さに依存する、 TiDB Lightningから TiKV Importer への KV の送信速度
インポート速度tikvにアップロードTiKV Importer からすべての TiKV レプリカへの合計アップロード速度
Chunk処理時間1 つのデータ ファイルを完全にエンコードするのに必要な平均時間

場合によっては、インポート速度がゼロになり、他のパーツが追いつくことがあります。これは正常です。

行 2: 進行状況

Panels in second row

パネル説明
インポートの進行状況これまでにエンコードされたデータ ファイルの割合
チェックサムの進行状況正常にインポートされたことが確認されたテーブルの割合
失敗失敗したテーブルの数とその障害点 (通常は空)

行 3: リソース

Panels in third row

パネル説明
メモリ使用量各サービスが占有するメモリ量
TiDB Lightningゴルーチンの数TiDB Lightningで使用される実行中のゴルーチンの数
CPU%各サービスで使用される論理 CPU コアの数

行 4: クォータ

Panels in fourth row

パネルシリーズ説明
アイドル労働者いお未使用の数io-concurrency 、通常は設定値 (デフォルト 5) に近く、0 に近い場合はディスクが遅すぎることを意味します
アイドル労働者クローズドエンジン閉じられているがまだクリーンアップされていないエンジンの数。通常はインデックス + テーブル同時実行数 (デフォルト 8) に近く、0 に近い場合はTiDB Lightningが TiKV Importer よりも高速であることを意味し、 TiDB Lightningが停止する原因となります
アイドル労働者テーブル未使用数table-concurrency 、通常は処理終了まで 0
アイドル労働者索引未使用数index-concurrency 、通常は処理終了まで 0
アイドル労働者領域未使用数region-concurrency 、通常は処理終了まで 0
外部リソースKVエンコーダーアクティブな KV エンコーダーをカウントします。通常、プロセスの終了まではregion-concurrencyと同じです。
外部リソースインポーター エンジン開いているエンジン ファイルをカウントしますmax-open-enginesの設定を超えてはいけません

行 5: 読み取り速度

Panels in fifth row

パネルシリーズ説明
Chunkパーサー読み取りブロック期間ブロックを読む解析の準備のために 1 ブロックのバイトを読み取るのにかかった時間
Chunkパーサー読み取りブロック期間労働者を適用するアイドル状態の io-concurrency を待機するために経過した時間
SQL プロセスの所要時間行エンコード1 行の解析とエンコードにかかった時間
SQL プロセスの所要時間ブロック配信KV ペアのブロックを TiKV Importer に送信するのにかかった時間

いずれかの期間が長すぎる場合は、 TiDB Lightningが使用するディスクが遅すぎるか、I/O でビジーであることを示しています。

行 6: ストレージ

Panels in sixth row

パネルシリーズ説明
SQL 処理速度データ配信率データ KV ペアの TiKV インポーターへの配信速度
SQL 処理速度インデックス配信率インデックス KV ペアの TiKV インポーターへの配信速度
SQL 処理速度合計配信率上記の 2 つのレートの合計
合計バイト数パーサー読み取りサイズTiDB Lightningが読み取っているバイト数
合計バイト数データ配信サイズTiKV Importer に既に配信されたデータ KV ペアのバイト数
合計バイト数インデックス配信サイズTiKV Importer に既に配信されたインデックス KV ペアのバイト数
合計バイト数storage_size / 3TiKV クラスターが占める合計サイズを 3 で割った値 (レプリカのデフォルト数)

行 7: インポート速度

Panels in seventh row

パネルシリーズ説明
納期範囲配達一連の KV ペアを TiKV クラスターにアップロードするのにかかった時間
納期SST 配信SST ファイルを TiKV クラスターにアップロードするのにかかった時間
SST プロセス期間スプリット SSTKV ペアのストリームを SST ファイルに分割するのにかかった時間
SST プロセス期間SSTアップロードSST ファイルのアップロードにかかった時間
SST プロセス期間SST 摂取アップロードされた SST ファイルの取り込みにかかった時間
SST プロセス期間SSTサイズSSTファイルのファイルサイズ

指標のモニタリング

このセクションでは、デフォルトの Grafana ダッシュボードでカバーされていない他のメトリックを監視する必要がある場合に、 tikv-importertidb-lightningの監視メトリックについて説明します。

tikv-importer

tikv-importerによって提供されるメトリックは、名前空間tikv_import_*の下にリストされます。

  • tikv_import_rpc_duration (ヒストグラム)

    RPC アクションの期間のバケット化されたヒストグラム。ラベル:

    • request : 実行される RPC の種類
      • switch_mode — TiKV ノードをインポート/通常モードに切り替えました
      • open_engine — エンジン ファイルを開きました
      • write_engine — データを受信し、エンジンに書き込みました
      • close_engine — エンジン ファイルを閉じました
      • import_engine — エンジン ファイルを TiKV クラスターにインポートしました
      • cleanup_engine — エンジン ファイルを削除しました
      • compact_cluster — TiKV クラスターを明示的に圧縮
      • upload — SST ファイルをアップロードしました
      • ingest — SST ファイルを取り込んだ
      • compact — TiKV ノードを明示的に圧縮
    • result : RPC の実行結果
      • ok
      • error
  • tikv_import_write_chunk_bytes (ヒストグラム)

    TiDB TiDB Lightningから受信した KV ペアのブロックの圧縮されていないサイズのバケット化されたヒストグラム。

  • tikv_import_write_chunk_duration (ヒストグラム)

    TiDB TiDB Lightningから KV ペアのブロックを受信するのに必要な時間のバケット化されたヒストグラム。

  • tikv_import_upload_chunk_bytes (ヒストグラム)

    TiKV にアップロードされた SST ファイルのチャンクの圧縮サイズのバケット化されたヒストグラム。

  • tikv_import_upload_chunk_duration (ヒストグラム)

    SST ファイルのチャンクを TiKV にアップロードするのに必要な時間のバケット化されたヒストグラム。

  • tikv_import_range_delivery_duration (ヒストグラム)

    KV ペアの範囲をdispatch-jobに配信するのに必要な時間のバケット化されたヒストグラム。

  • tikv_import_split_sst_duration (ヒストグラム)

    エンジン ファイルの範囲を 1 つの SST ファイルに分割するのに必要な時間のバケット化されたヒストグラム。

  • tikv_import_sst_delivery_duration (ヒストグラム)

    SST ファイルをdispatch-jobからImportSSTJobに配信するのに必要な時間のバケット化されたヒストグラム。

  • tikv_import_sst_recv_duration (ヒストグラム)

    dispatch-job in a ImportSSTJobから SST ファイルを受信するのに必要な時間のバケット化されたヒストグラム。

  • tikv_import_sst_upload_duration (ヒストグラム)

    ImportSSTJobから TiKV ノードに SST ファイルをアップロードするのに必要な時間のバケット化されたヒストグラム。

  • tikv_import_sst_chunk_bytes (ヒストグラム)

    TiKV ノードにアップロードされた SST ファイルの圧縮サイズのバケット化されたヒストグラム。

  • tikv_import_sst_ingest_duration (ヒストグラム)

    SST ファイルを TiKV に取り込むのに必要な時間のバケット化されたヒストグラム。

  • tikv_import_each_phase (ゲージ)

    実行フェーズを示します。可能な値は、フェーズ内で実行中を意味する 1 と、フェーズ外で実行中を意味する 0 です。ラベル:

    • フェーズ: prepare / import
  • tikv_import_wait_store_available_count (カウンター)

    SST ファイルのアップロード時に、TiKV ノードに十分なスペースがないことが判明した回数をカウントします。ラベル:

    • store_id : TiKV ストア ID。

tidb-lightning

tidb-lightningによって提供されるメトリックは、名前空間lightning_*の下にリストされます。

  • lightning_importer_engine (カウンター)

    開いているエンジン ファイルと閉じているエンジン ファイルをカウントします。ラベル:

    • タイプ:
      • open
      • closed
  • lightning_idle_workers (ゲージ)

    アイドル ワーカーをカウントします。ラベル:

    • 名前:
      • tabletable-concurrencyの余り、通常はプロセスが終了するまで 0
      • indexindex-concurrencyの余り、通常はプロセスが終了するまで 0
      • regionregion-concurrencyの余り、通常はプロセスが終了するまで 0
      • ioio-concurrencyの余り。通常は構成された値 (デフォルトの 5) に近く、0 に近い場合はディスクが遅すぎることを意味します。
      • closed-engine — クローズされたがまだクリーンアップされていないエンジンの数。通常は index + table-concurrency (デフォルト 8) に近い値です。 0 に近い値は、 TiDB Lightningが TiKV Importer よりも高速であることを意味し、 TiDB Lightningが停止する可能性があります
  • lightning_kv_encoder (カウンター)

    開いている KV エンコーダと閉じている KV エンコーダをカウントします。 KV エンコーダーは、SQL INSERTステートメントを KV ペアに変換するメモリ内の TiDB インスタンスです。正味の値は、健全な状況で制限する必要があります。ラベル:

    • タイプ:
      • open
      • closed
  • lightning_tables (カウンター)

    処理されたテーブルとそのステータスをカウントします。ラベル:

    • state : どのフェーズを完了する必要があるかを示す、テーブルのステータス
      • pending — まだ処理されていません
      • written — エンコードされて送信されたすべてのデータ
      • closed — 対応するすべてのエンジン ファイルが閉じられている
      • imported — すべてのエンジン ファイルがターゲット クラスタにインポートされました
      • altered_auto_inc — AUTO_INCREMENT ID が変更されました
      • checksum — チェックサムが実行されました
      • analyzed — 統計分析が実行されました
      • completed — テーブルは完全にインポートされ、検証されました
    • result : 現在のフェーズの結果
      • success — フェーズは正常に完了しました
      • failure — フェーズは失敗しました (完了しませんでした)
  • lightning_engines (カウンター)

    処理されたエンジン ファイルの数とそのステータスをカウントします。ラベル:

    • state : エンジンのステータス。どのフェーズを完了する必要があるかを示します
      • pending — まだ処理されていません
      • written — エンコードされて送信されたすべてのデータ
      • closed — エンジン ファイルが閉じられています
      • imported — エンジン ファイルがターゲット クラスタにインポートされました
      • completed — エンジンは完全にインポートされました
    • result : 現在のフェーズの結果
      • success — フェーズは正常に完了しました
      • failure — フェーズは失敗しました (完了しませんでした)
  • lightning_chunks (カウンター)

    処理されたチャンクの数とそのステータスをカウントします。ラベル:

    • state : チャンクのステータス。チャンクがどのフェーズにあるかを示します
      • estimated — (状態ではありません) この値は、現在のタスクのチャンクの総数を示します
      • pending — ロードされていますが、まだ処理されていません
      • running — データはエンコードされて送信されています
      • finished — チャンク全体が処理されました
      • failed — 処理中にエラーが発生しました
  • lightning_import_seconds (ヒストグラム)

    テーブルのインポートに必要な時間のバケット化されたヒストグラム。

  • lightning_row_read_bytes (ヒストグラム)

    単一の SQL 行のサイズのバケット化されたヒストグラム。

  • lightning_row_encode_seconds (ヒストグラム)

    1 つの SQL 行を KV ペアにエンコードするのに必要な時間のバケット化されたヒストグラム。

  • lightning_row_kv_deliver_seconds (ヒストグラム)

    1 つの SQL 行に対応する一連の KV ペアを配信するのに必要な時間のバケット化されたヒストグラム。

  • lightning_block_deliver_seconds (ヒストグラム)

    KV ペアのブロックを Importer に配信するのに必要な時間のバケット化されたヒストグラム。

  • lightning_block_deliver_bytes (ヒストグラム)

    Importer に配信される KV ペアのブロックの圧縮されていないサイズのバケット化されたヒストグラム。

  • lightning_chunk_parser_read_block_seconds (ヒストグラム)

    データ ファイル パーサーがブロックを読み取るのに必要な時間のバケット化されたヒストグラム。

  • lightning_checksum_seconds (ヒストグラム)

    テーブルのチェックサムの計算に必要な時間のバケット化されたヒストグラム。

  • lightning_apply_worker_seconds (ヒストグラム)

    アイドル状態のワーカーを取得するのに必要な時間のバケット化されたヒストグラム ( lightning_idle_workersゲージも参照)。ラベル:

    • 名前:
      • table
      • index
      • region
      • io
      • closed-engine