TiDB 監視メトリクス
TiUPを使用してTiDBクラスターをデプロイする場合、監視システム(PrometheusとGrafana)も同時にデプロイされます。監視アーキテクチャについては、 TiDB 監視フレームワークの概要参照してください。
Grafanaダッシュボードは、概要、PD、TiDB、TiKV、Node_exporter、ディスクパフォーマンス、パフォーマンス概要を含む一連のサブダッシュボードに分かれています。TiDBダッシュボードは、TiDBパネルとTiDBサマリーパネルで構成されています。2つのパネルの違いは以下のとおりです。
- TiDB パネル: クラスターの異常のトラブルシューティングに役立つ、可能な限り包括的な情報を提供します。
- TiDBサマリーパネル:TiDBパネル情報のうち、ユーザーが最も関心のある部分を抽出し、若干の修正を加えています。日々のデータベース運用においてユーザーが特に関心を持つデータ(QPS、TPS、応答遅延など)を提供し、表示またはレポートする監視情報として機能します。
このドキュメントでは、TiDB ダッシュボードに表示されるいくつかの主要な監視メトリックについて説明します。
主要な指標の説明
TiDB ダッシュボードに表示される主要なメトリックを理解するには、次のセクションを確認してください。
クエリの概要
- 所要時間: 実行時間
- クライアントのネットワーク要求がTiDBに送信されてから、TiDBが要求を実行した後にクライアント
COM_SEND_LONG_DATA返されるまでの時間。通常、クライアント要求COM_STMT_FETCHSQL文の形式で送信されますが、COM_PINGなどのコマンドの実行時間も含まれる場合がありますCOM_SLEEP - TiDBはマルチクエリをサポートしているため、
select 1; select 1; select 1;ような複数のSQL文を一度に送信できます。この場合、このクエリの合計実行時間には、すべてのSQL文の実行時間が含まれます。
- クライアントのネットワーク要求がTiDBに送信されてから、TiDBが要求を実行した後にクライアント
- 1秒あたりのコマンド数: コマンド実行結果の成功または失敗に応じて分類される、TiDBによって1秒あたりに処理されるコマンドの数
- QPS: すべての TiDB インスタンスで 1 秒あたりに実行される SQL ステートメントの数
SELECTUPDATEおよびその他のタイプのステートメントに従ってカウントされますINSERT - インスタンス別CPS: コマンド実行結果の成功または失敗に応じて分類された、各TiDBインスタンスのコマンド統計
- 失敗したクエリOPM:各TiDBインスタンスで1分あたりにSQL文を実行した際に発生したエラー数に基づく、エラーの種類(構文エラーや主キーの競合など)の統計情報。エラーが発生したモジュールとエラーコードが含まれます。
- スロークエリ:スロークエリの処理時間の統計(スロークエリ全体の時間コスト、コプロセッサーの時間コスト、コプロセッサーのスケジューリングの待機時間)。スロークエリは、内部SQL文と一般SQL文に分類されます。
- 接続アイドル期間: アイドル接続の期間
- 999/99/95/80 実行時間: 異なるタイプのSQL文の実行時間の統計(異なるパーセンタイル)
クエリの詳細
- 期間 80/95/99/999 インスタンス別: 各 TiDB インスタンスでの SQL 文の実行時間の統計 (異なるパーセンタイル)
- 失敗したクエリ OPM の詳細: 各 TiDB インスタンスで 1 分あたりに SQL ステートメントを実行したときに発生したエラーに応じたエラーの種類 (構文エラーや主キーの競合など) の統計
- 内部SQL OPS: TiDBクラスタ全体で1秒あたりに実行される内部SQL文の数。内部SQL文は内部的に実行され、通常はユーザーのSQL文または内部的にスケジュールされたタスクによってトリガーされます。
サーバ
- 稼働時間: 各 TiDB インスタンスの実行時間
- メモリ使用量: 各 TiDB インスタンスのメモリ使用量の統計。プロセスが占有するメモリと、ヒープ上のGolangによって適用されたメモリに分かれています。
- CPU使用率: 各TiDBインスタンスのCPU使用率の統計
- 接続数: 各 TiDB インスタンスに接続されているクライアントの数
- オープンFDカウント: 各TiDBインスタンスのオープンファイル記述子の統計
- 切断数: 各 TiDB インスタンスから切断されたクライアントの数
- イベント OPM: 「開始」、「終了」、「正常シャットダウン」、「強制終了」、「ハング」などの主要なイベントの統計
- Goroutine 数: 各 TiDB インスタンス上の Goroutine の数
- 準備ステートメント数: 各 TiDB インスタンスで実行される
Prepareステートメントの数とその合計数 - Keep Alive OPM: 各TiDBインスタンスで毎分メトリクスが更新される回数。通常は注意する必要はありません。
- パニックと重大なエラー: TiDB で発生したパニックと重大なエラーの数
- Time Jump Back OPS: 各 TiDB インスタンスでオペレーティングシステムが毎秒巻き戻す回数
- トークン取得期間: 各接続でトークンを取得するのにかかる時間コスト
- スキップBinlogカウント: TiDB のbinlog書き込み失敗の数。v8.4.0 以降、TiDBBinlogは削除され、このメトリックには値がありません。
- クライアントデータトラフィック: TiDBとクライアントのデータトラフィック統計
トランザクション
- トランザクションOPS: 1秒あたりに実行されるトランザクションの数
- 期間: トランザクションの実行期間
- トランザクションステートメント数: トランザクション内のSQLステートメントの数
- トランザクション再試行回数: トランザクションが再試行される回数
- セッション再試行エラーOPS: トランザクション再試行中に発生したエラーの数(1秒あたり)。この指標には、再試行失敗と再試行回数の上限超過という2種類のエラーが含まれます。
- コミットトークン待機時間: トランザクションのコミット中にフロー制御キューで待機する時間です。待機時間が長い場合、コミットするトランザクションが大きすぎてフローが制御されていることを意味します。システムにまだ利用可能なリソースがある場合は、システム変数
tidb_committer_concurrency増やすことでコミットプロセスを高速化できます。 - KVトランザクションOPS: 各 TiDB インスタンス内で 1 秒あたりに実行されるトランザクションの数
- ユーザートランザクションは、内部メタデータの読み取りやユーザートランザクションのアトミック再試行など、TiDB内で複数のトランザクション実行をトリガーする可能性があります。
- TiDBの内部的にスケジュールされたタスクは、トランザクションを通じてデータベース上でも実行され、このパネルにも含まれています。
- KVトランザクション期間: 各TiDB内でトランザクションを実行するのに費やされた時間
- トランザクションリージョン数: トランザクションで操作されるリージョンの数
- トランザクション書き込みKV数レートと合計: トランザクション内でKVが書き込まれるレートと書き込まれたKVの合計
- トランザクション書き込みKV数: トランザクションで操作されたKVの数
- ステートメントロックキー: 1つのステートメントのロックの数
- ハートビート送信期間: トランザクションがハートビートを送信する期間
- トランザクション書き込みサイズバイトレートと合計: トランザクション内で書き込まれるバイト数と書き込まれたバイト数の合計
- トランザクション書き込みサイズバイト: トランザクションで書き込まれたデータのサイズ
- 悲観的ロックの取得期間: ロックの追加にかかる時間
- TTL 寿命到達カウンタ: TTL の上限に達したトランザクションの数。TTL 上限のデフォルト値は 1 時間です。これは、悲観的トランザクションの最初のロック、または楽観的トランザクションの最初の事前書き込みから 1 時間が経過したことを意味します。TTL 上限のデフォルト値は 1 時間です。TTL 寿命の上限は、TiDB 設定ファイルで
max-txn-TTL変更することで変更できます。 - ロードセーフポイントOPS:
Safepointがロードされる回数。3Safepoint、トランザクションがデータを読み取る際にSafepointより前のデータが読み込まれないようにすることで、データの安全性を確保するためのものです。7Safepoint前のデータはGCによってクリーンアップされる可能性があります。 - 悲観的ステートメント再試行回数(OPS):悲観的ステートメントの再試行回数。ステートメントがロックを追加しようとすると、書き込み競合が発生する可能性があります。この場合、ステートメントは新しいスナップショットを取得し、再度ロックを追加します。
- 1秒あたりのトランザクションタイプ: 2相コミット(2PC)、非同期コミット、1相コミット(1PC)メカニズムを使用して1秒あたりにコミットされたトランザクションの数(成功トランザクションと失敗トランザクションの両方を含む)
執行者
- 解析時間: SQL文の解析時間の統計
- コンパイル時間: 解析されたSQL ASTを実行プランにコンパイルする時間の統計
- 実行時間: SQL文の実行時間の統計
Stream AggなエグゼキュータOPS: 1秒あたりに多くのシステムリソースTopN消費するオペレータのSortHash JoinMerge JoinHash AggIndex Look Up Join- プランキャッシュOPSを使用するクエリ: プランキャッシュを使用するクエリの1秒あたりの統計
- プラン キャッシュ ミス OPS: 1 秒あたりにプラン キャッシュがミスされた回数の統計
- プランキャッシュメモリ使用量: 各 TiDB インスタンスにキャッシュされた実行プランによって消費されるメモリの合計
- プランキャッシュプラン数: 各 TiDB インスタンスにキャッシュされた実行プランの総数
ディストリビューションSQL
- Distsql 実行時間: Distsql ステートメントの処理時間
- Distsql QPS: Distsql ステートメントの統計
- Distsql 部分 QPS: 1 秒あたりの部分結果の数
- スキャンキー数: 各クエリがスキャンするキーの数
- スキャンキー部分数: 各部分結果がスキャンするキーの数
- 部分数: 各SQL文の部分結果の数
KVエラー
- KVバックオフ期間: KV再試行リクエストの合計継続時間。TiDBはTiKVへのリクエスト送信時にエラーが発生する可能性があります。TiDBはTiKVへのすべてのリクエストに対して再試行メカニズムを備えています。この
KV Backoff Duration項目は、リクエストの再試行の合計時間を記録します。 - TiClientリージョンエラー OPS: TiKV によって返されたリージョン関連のエラー メッセージの数
- KVバックオフOPS: TiKVによって返されたエラーメッセージの数
- ロック解決OPS: ロックを解決するためのTiDB操作の数。TiDBの読み取りまたは書き込み要求がロックに遭遇すると、ロックを解決しようとする。
- その他のエラー OPS: ロックのクリアや更新など、その他の種類のエラーの数
SafePoint
KVリクエスト
以下のメトリックは、TiKV に送信されたリクエストに関連します。再試行リクエストは複数回カウントされます。
- KVリクエストOPS: TiKVに従って表示されるKVリクエストの実行時間
- KVリクエスト期間 99(店舗別):TiKVに従って表示されるKVリクエストの実行時間
- KVリクエスト期間 99 (タイプ別): リクエストタイプに応じて表示されるKVリクエストの実行時間
- ステイル読み取りヒット/ミスオペレーション
- ヒット: 古い読み取りを正常に実行した 1 秒あたりのリクエスト数
- ミス: 古いデータを読み取ろうとしたが失敗したリクエストの1秒あたりの数
- ステイル読み取り要求操作:
- クロスゾーン: リモートゾーンで古いデータの読み取りを試みる 1 秒あたりのリクエスト数
- ローカル: ローカルゾーンで古いデータの読み取りを試みるリクエストの数(1秒あたり)
- ステイル読み取り要求トラフィック:
- クロスゾーンイン: リモートゾーンで古いデータの読み取りを試みる要求に対する応答の着信トラフィック
- クロスゾーンアウト: リモートゾーンで古いデータの読み取りを試みる要求の送信トラフィック
- local-in : ローカルゾーンで古い読み取りを試みる要求に対する応答の着信トラフィック
- local-out : ローカルゾーンで古いデータの読み取りを試みる要求の送信トラフィック
PDクライアント
- PD クライアント CMD OPS: PD クライアントが 1 秒あたりに実行したコマンドの統計
- PDクライアントCMD実行時間:PDクライアントがコマンドを実行するのにかかる時間
- PD クライアント CMD 失敗 OPS: PD クライアントによって 1 秒あたりに実行された失敗したコマンドの統計
- PD TSO OPS: TiDBがPDに送信する1秒あたりのgRPCリクエスト数(cmd)とTSOリクエスト数(request)。各gRPCリクエストには、TSOリクエストのバッチが含まれます。
- PD TSO 待機時間: TiDB が PD から TSO が返されるまで待機する時間
- PD TSO RPC 期間: TiDB が TSO を取得するために PD に gRPC 要求を送信してから、TiDB が PD から gRPC 応答を受信するまでの期間
- 非同期TSO期間: TiDBがTSOを取得する準備をする時間から、TiDBがPDがTSOを返すのを実際に待ち始める時間までの期間
スキーマロード
- スキーマのロード時間: TiDBがTiKVからスキーマを取得するのにかかる時間
- ロードスキーマOPS: TiDBがTiKVから1秒あたりに取得するスキーマの統計
- スキーマ リース エラー OPM: スキーマ リース エラーには、
changeとoutdate2 つのタイプがあります。changeスキーマが変更されたことを意味し、outdateスキーマを更新できないことを意味します。これはより重大なエラーであり、アラートをトリガーします。 - Load Privilege OPS: TiDBがTiKVから1秒あたりに取得した権限情報の件数の統計
DDL
- DDL 実行時間 95: DDL ステートメントの処理時間の 95% 分位値
- バッチ追加インデックス期間 100: 各バッチがインデックス作成に費やした最大時間の統計
- DDL待機ジョブ数: 待機中のDDLタスクの数
- DDL META OPM: DDLが1分間にMETAを取得する回数
- DDL ワーカー実行時間 99: 各 DDL ワーカーの実行時間の 99% 分位値
- デプロイ Syncer 所要時間: Schema Version Syncer の初期化、再起動、およびクリア操作にかかる時間
- 所有者ハンドル同期所要時間: DDL所有者がスキーマバージョンを更新、取得、および確認するのにかかる時間
- 自己バージョン更新所要時間: Schema Version Syncerのバージョン情報の更新にかかる時間
- DDL OPM: 1秒あたりのDDL実行回数
- DDL バックフィルの進行状況(パーセント):DDL タスクのバックフィルの進行状況
統計
- 自動分析期間 95: 自動分析にかかる時間
ANALYZE - 自動分析QPS:自動
ANALYZEの統計 - 統計不正確率: 統計不正確率の情報
- 疑似推定OPS: 疑似統計を使用して最適化されたSQL文の数
- ダンプフィードバックOPS: 保存された統計フィードバックの数
- ストアクエリフィードバックQPS: TiDBメモリで実行されるユニオンクエリのフィードバック情報を保存するための1秒あたりの操作数
- 重要なフィードバック: 統計情報を更新する重要なフィードバックの数
- 統計更新OPS: フィードバックによる統計更新操作の数
所有者
- 新しいETCDセッション時間 95: 新しいetcdセッションの作成にかかる時間。TiDBはetcdクライアントを介してPD内のetcdに接続し、メタデータ情報を保存/読み取ります。これはセッションの作成に要した時間を記録します。
- オーナーウォッチャー OPS: DDL オーナーウォッチ PD の etcd メタデータの 1 秒あたりの Goroutine 操作の数
メタ
- AutoID QPS: 3 つの操作 (グローバル ID 割り当て、単一テーブルの AutoID 割り当て、単一テーブルの AutoID リベース) を含む AutoID 関連の統計
- AutoID 期間: AutoID 関連の操作に要した時間
- リージョンキャッシュエラーOPS: TiDBにキャッシュされたリージョン情報で1秒あたりに発生したエラーの数
- メタ操作期間 99: メタ操作のレイテンシー
GC
- 作業者アクションOPM:
run_jobresolve_lock含むGCdelete_range操作の数 - 期間99: GC関連の操作に費やされた時間
- 設定: GCデータの有効期間とGC実行間隔の設定
- GC失敗OPM: 失敗したGC関連操作の数
- 削除範囲失敗OPM:
Delete Rangeが失敗した回数 - ロックが多すぎるエラー OPM: GCがロックをクリアしすぎたエラーの数
- アクション結果OPM: GC関連操作の結果の数
- 削除範囲タスクステータス:
Delete Rangeのタスクステータス(完了、失敗を含む) - プッシュタスク期間 95: GC サブタスクを GC ワーカーにプッシュするのにかかった時間
バッチクライアント
- TiKVによる保留リクエスト数: 処理が保留中のバッチメッセージの数
- バッチクライアント利用不可期間 95: バッチクライアントが利用できない時間
- 利用可能な接続カウンタなし: バッチクライアントが利用可能なリンクを見つけられなかった回数
TTL
- TiDB CPU 使用率: 各 TiDB インスタンスの CPU 使用率。
- TiKV IO MBps: 各 TiKV インスタンスの I/O の合計バイト数。
- TiKV CPU: 各 TiKV インスタンスの CPU 使用率。
- タイプ別の TTL QPS: TTL ジョブによって生成されたさまざまなタイプのステートメントの QPS 情報。
- 1 秒あたりの TTL 挿入行数: 1 秒あたりに TTL テーブルに挿入される行数。
- 1 秒あたりの TTL 処理行数: 1 秒あたりに TTL ジョブによって処理された期限切れの行数。
- 1 時間あたりの TTL 挿入行数: 1 時間ごとに TTL テーブルに挿入される行数。
- 1 時間あたりの TTL 削除行数: TTL ジョブによって 1 時間ごとに削除される期限切れの行数。
- TTL スキャン/削除クエリ期間: TTL スキャン/削除ステートメントの実行時間。
- TTL スキャン/削除ワーカー時間 (フェーズ別): TTL 内部ワーカー スレッドのさまざまなフェーズで消費された時間。
- ステータス別の TTL ジョブ数: 現在実行中の TTL ジョブの数。
- ステータス別の TTL タスク数: 現在実行中の TTL タスクの数。