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
...
Prometheus がサーバーを検出するように設定する必要があります。たとえば、 scrape_configsセクションにサーバーアドレスを直接追加できます。
...
scrape_configs:
  - job_name: 'tidb-lightning'
    static_configs:
      - targets: ['192.168.20.10:8289']
Grafanaダッシュボード
グラファナ Prometheus メトリックをダッシュボードとして視覚化するための Web インターフェースです。
1行目: 速度

| パネル | シリーズ | 説明 | 
|---|---|---|
| インポート速度 | TiDB Lightningから書き込む | TiDB Lightningから TiKV Importer への KV の送信速度は、各テーブルの複雑さによって異なります。 | 
| インポート速度 | TIKVにアップロード | TiKVインポーターからすべてのTiKVレプリカへの合計アップロード速度 | 
| Chunk処理期間 | 1つのデータファイルを完全にエンコードするのに必要な平均時間 | 
場合によっては、インポート速度がゼロに低下し、他の部分が追いつくことがあります。これは正常です。
2行目: 進捗状況

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

| パネル | 説明 | 
|---|---|
| メモリ使用量 | 各サービスが占有するメモリの量 | 
| TiDB Lightning Goroutine の数 | TiDB Lightningで使用される実行中の goroutine の数 | 
| CPU% | 各サービスで使用される論理 CPU コアの数 | 
4行目: 割り当て

| パネル | シリーズ | 説明 | 
|---|---|---|
| 怠け者の労働者 | io | 未使用の数は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行目: 読み取り速度

| パネル | シリーズ | 説明 | 
|---|---|---|
| Chunkパーサーの読み取りブロック期間 | ブロックを読み込む | 解析の準備のために1ブロックのバイトを読み取るのにかかる時間 | 
| Chunkパーサーの読み取りブロック期間 | 応募する労働者 | アイドル状態のIO同時実行を待機するのに経過した時間 | 
| SQL プロセス期間 | 行エンコード | 1行を解析してエンコードするのにかかる時間 | 
| SQL プロセス期間 | ブロック配信 | KV ペアのブロックを TiKV インポーターに送信するのにかかる時間 | 
いずれかの期間が長すぎる場合は、 TiDB Lightningが使用するディスクが遅すぎるか、I/O でビジー状態であることを示します。
6行目: ストレージ

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

| パネル | シリーズ | 説明 | 
|---|---|---|
| 配送期間 | レンジデリバリー | 一連の KV ペアを TiKV クラスターにアップロードするのにかかる時間 | 
| 配送期間 | SST 配信 | SST ファイルを TiKV クラスターにアップロードするのにかかる時間 | 
| SST プロセス期間 | スプリットSST | KV ペアのストリームを SST ファイルに分割するのにかかる時間 | 
| SST プロセス期間 | SSTアップロード | SST ファイルのアップロードにかかる時間 | 
| SST プロセス期間 | SST摂取 | アップロードされた SST ファイルの取り込みにかかる時間 | 
| SST プロセス期間 | SSTサイズ | SST ファイルのファイルサイズ | 
監視メトリクス
このセクションでは、 tidb-lightningの監視メトリックについて説明します。
tidb-lightningによって提供されるメトリックは、名前空間lightning_*の下にリストされます。
lightning_importer_engine(カウンター)開いているエンジン ファイルと閉じているエンジン ファイルをカウントします。ラベル:
- タイプ:
openclosed
 
- タイプ:
 lightning_idle_workers(ゲージ)アイドル状態のワーカーをカウントします。ラベル:
- 名前:
table:table-concurrencyの余り。通常はプロセス終了まで 0 です。index:index-concurrencyの余り。通常はプロセス終了まで 0 です。region:region-concurrencyの余り。通常はプロセス終了まで 0 です。io:io-concurrencyの余り。通常は設定された値(デフォルトは5)に近い。0に近い場合はディスクが遅すぎることを意味する。closed-engine: 閉じられたがまだクリーンアップされていないエンジンの数。通常はインデックス + テーブル同時実行数に近い値です (デフォルトは 8)。0 に近い値は、 TiDB Lightningが TiKV Importer よりも高速であることを意味し、 TiDB Lightning が停止する可能性があります。
 
- 名前:
 lightning_kv_encoder(カウンター)オープンおよびクローズされた KV エンコーダーをカウントします。KV エンコーダーは、SQL
INSERTステートメントを KV ペアに変換するメモリ内 TiDB インスタンスです。正常な状況では、ネット値が制限される必要があります。ラベル:- タイプ:
openclosed
 
- タイプ:
 
lightning_tables(カウンター)処理されたテーブルとそのステータスをカウントします。ラベル:
- 状態: テーブルの状態。どのフェーズを完了する必要があるかを示します。
pending: まだ処理されていませんwritten: すべてのデータがエンコードされて送信されましたclosed: 対応するエンジンファイルはすべて閉じられていますimported: すべてのエンジン ファイルがターゲット クラスターにインポートされましたaltered_auto_inc: AUTO_INCREMENT IDが変更されました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(ヒストグラム)インポーターに配信された KV ペアのブロックの非圧縮サイズのバケット化されたヒストグラム。
lightning_chunk_parser_read_block_seconds(ヒストグラム)データ ファイル パーサーがブロックを読み取るために必要な時間のバケット化されたヒストグラム。
lightning_checksum_seconds(ヒストグラム)テーブルのチェックサムを計算するために必要な時間のバケット化されたヒストグラム。
lightning_apply_worker_seconds(ヒストグラム)アイドル状態のワーカーを取得するのに必要な時間のバケット化されたヒストグラム (
lightning_idle_workersゲージも参照)。ラベル:- 名前:
tableindexregionioclosed-engine
 
- 名前: