重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

TiDB Lightning監視

tidb-lightningは、 プロメテウスを介したメトリック収集をサポートします。このドキュメントでは、 TiDB Lightningのモニター構成とモニターメトリックを紹介します。

構成の監視

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

tidb-lightningのメトリックは、発見されている限り、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ダッシュボード

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

行1:速度

Panels in first row

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

インポート速度がゼロに低下し、他のパーツが追いつくことがあります。これは正常です。

行2:進捗状況

Panels in second row

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

行3:リソース

Panels in third row

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

行4:クォータ

Panels in fourth row

パネルシリーズ説明
アイドル労働者io未使用のio-concurrencyの数、通常は構成された値(デフォルトは5)に近く、0に近い場合は、ディスクが遅すぎることを意味します
アイドル労働者クローズドエンジン閉じているがまだクリーンアップされておらず、通常はインデックス+テーブル同時実行(デフォルトは8)に近く、0に近いエンジンの数は、 TiDB LightningがTiKVImporterよりも高速であることを意味します。これにより、 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プロセス期間行エンコード単一行の解析とエンコードにかかる時間
SQLプロセス期間ブロック配信KVペアのブロックをTiKVインポーターに送信するのにかかる時間

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

行6:ストレージ

Panels in sixth row

パネルシリーズ説明
SQLプロセスレートデータ配信率TiKVインポーターへのデータKVペアの配信速度
SQLプロセスレートインデックス配信率TiKVインポーターへのインデックスKVペアの配信速度
SQLプロセスレート総配信率上記の2つのレートの合計
合計バイト数パーサーの読み取りサイズTiDB Lightningによって読み取られているバイト数
合計バイト数データ配信サイズTiKVインポーターにすでに配信されているデータKVペアのバイト数
合計バイト数インデックス配信サイズTiKVインポーターにすでに配信されているインデックス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アクションの期間中のバケット化されたヒストグラム。ラベル:

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

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

  • tikv_import_write_chunk_duration (ヒストグラム)

    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 (ヒストグラム)

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

  • tikv_import_sst_delivery_duration (ヒストグラム)

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

  • tikv_import_sst_recv_duration (ヒストグラム)

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

  • tikv_import_sst_upload_duration (ヒストグラム)

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

  • tikv_import_sst_chunk_bytes (ヒストグラム)

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

  • tikv_import_sst_ingest_duration (ヒストグラム)

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

  • tikv_import_each_phase (ゲージ)

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

    • フェーズimport prepare
  • 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 —閉じられているがまだクリーンアップされていないエンジンの数。通常はインデックス+テーブルの同時実行性に近い(デフォルトは8)。 0に近い値は、 TiDB LightningがTiKVImporterよりも高速であることを意味します。これにより、 TiDB Lightningが停止する可能性があります。
  • lightning_kv_encoder (カウンター)

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

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

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

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

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

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

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

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

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

  • lightning_row_read_bytes (ヒストグラム)

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

  • lightning_row_encode_seconds (ヒストグラム)

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

  • lightning_row_kv_deliver_seconds (ヒストグラム)

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

  • lightning_block_deliver_seconds (ヒストグラム)

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

  • 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