TiDBBinlog監視

TiDB Binlogを正常にデプロイしたら、Grafana Web (デフォルトのアドレス: http://grafana_ip:3000 、デフォルトのアカウント: admin、パスワード: admin) にアクセスして、 PumpとDrainerの状態を確認できます。

指標のモニタリング

TiDB Binlog は、 PumpとDrainerの 2 つのコンポーネントで構成されています。このセクションでは、 PumpとDrainerの監視メトリクスを示します。

Pump監視指標

Pumpモニタリング メトリックを理解するには、次の表を確認してください。

Pump監視指標説明
収納サイズ合計ディスク容量 (容量) と使用可能なディスク容量 (使用可能) を記録します。
メタデータ各Pumpノードが削除できるbinlogの最大の TSO ( gc_tso ) と、保存されたbinlogの最大のコミット TSO ( max_commit_tso ) を記録します。
インスタンスごとにBinlog QPS を書き込む各Pumpノードが受信したbinlogリクエストの書き込みの QPS を表示します
Binlogレイテンシーの書き込みbinlogを書き込む各Pumpノードのレイテンシーを記録します。
ストレージ書き込みBinlogサイズPumpによって書き込まれたbinlogデータのサイズを表示します
ストレージ書き込みBinlogレイテンシPumpstorageモジュールのbinlog書き込みのレイテンシーを記録します
タイプ別Pump保管エラーエラーの種類に基づいてカウントされた、 Pumpで発生したエラーの数を記録します
TiKV のクエリPump がTiKV を介してトランザクション ステータスを照会する回数

Drainerモニタリング指標

Drainerモニタリング メトリックを理解するには、次の表を確認してください。

Drainerモニタリング指標説明
チェックポイント TSODrainer がすでにダウンストリームにレプリケートしたbinlogの最大 TSO 時間を示します。現在の時刻を使用してbinlogのタイムスタンプを差し引くことで、ラグを取得できます。ただし、タイムスタンプはマスター クラスタの PD によって割り当てられ、PD の時刻によって決定されることに注意してください。
Pumpハンドル TSODrainer が各Pumpノードから取得したbinlogファイルの中で最大の TSO 時間を記録します
Pump NodeID によるBinlog QPS のプルDrainer が各Pumpノードからbinlog を取得したときの QPS を表示します
Pumpによる 95% のBinlogリーチ期間binlogがPumpに書き込まれてからDrainerがbinlogを取得するまでの遅延を記録します。
タイプ別エラーDrainerで発生したエラーの数を、エラーの種類に基づいてカウントして表示します
SQL クエリ時間Drainerがダウンストリームで SQL ステートメントを実行するのにかかる時間を記録します
Drainerイベント「ddl」、「insert」、「delete」、「update」、「flush」、「savepoint」など、さまざまなタイプのイベントの数を表示します
実行時間binlog をダウンストリーム同期モジュールに書き込むのにかかる時間を記録します
95% のBinlogサイズDrainer が各Pumpノードから取得するbinlogデータのサイズを表示します
DDL ジョブ数Drainerによって処理された DDL ステートメントの数を記録します
キューサイズワーク キューのサイズをDrainerに記録する

アラート ルール

このセクションでは、TiDB Binlogのアラート ルールを示します。重大度レベルに応じて、TiDB Binlogアラート ルールは 3 つのカテゴリ (高から低) に分類されます: 緊急レベル、重大レベル、警告レベルです。

緊急レベルのアラート

緊急レベルのアラートは、多くの場合、サービスまたはノードの障害によって発生します。手動による介入がすぐに必要です。

binlog_pump_storage_error_count

  • アラート ルール:

    changes(binlog_pump_storage_error_count[1m]) > 0

  • 説明:

    Pumpはbinlogデータをローカルstorageに書き込むことができません。

  • 解決:

    pump_storage_error監視に異常がないか確認し、 Pump のログを確認して原因を突き止めてください。

重大レベルのアラート

重大レベルのアラートについては、異常なメトリックを注意深く監視する必要があります。

binlog_drainer_checkpoint_high_delay

  • アラート ルール:

    (time() - binlog_drainer_checkpoint_tso / 1000) > 3600

  • 説明:

    Drainerレプリケーションの遅延が 1 時間を超えています。

  • 解決:

    • Pumpからデータを取得するのが遅すぎるかどうかを確認します。

      Pumpのhandle tsoをチェックして、各Pumpの最新メッセージの時刻を取得できます。Pumpのレイテンシーが大きいかどうかを確認し、対応するPumpが正常に動作していることを確認します。

    • Drainer eventとDrainer execute latencyに基づいて、ダウンストリームでデータをレプリケートするのが遅すぎるかどうかを確認します。

      • Drainer execute timeが大きすぎる場合は、Drainer がDrainerされたマシンとターゲット データベースがデプロイされたマシンの間のネットワーク帯域幅とレイテンシー、およびターゲット データベースの状態を確認します。
      • Drainerexecute timeが大きすぎず、Drainereventが小さすぎる場合は、 work countbatchを追加して再試行します。
    • 上記の 2 つの解決策が機能しない場合は、PingCAP またはコミュニティから支持を得ます

警告レベルのアラート

警告レベルのアラートは、問題またはエラーのリマインダーです。

binlog_pump_write_binlog_rpc_duration_seconds_bucket

  • アラート ルール:

    histogram_quantile(0.9, rate(binlog_pump_rpc_duration_seconds_bucket{method="WriteBinlog"}[5m])) > 1

  • 説明:

    Pump がbinlogを書き込む TiDB 要求を処理するには時間がかかりすぎます。

  • 解決:

    • ディスク パフォーマンスのプレッシャーを確認し、 node exportedでディスク パフォーマンスの監視を確認します。
    • disk latencyutil両方が低い場合、PingCAP またはコミュニティからの支持を得ます

binlog_pump_storage_write_binlog_duration_time_bucket

  • アラート ルール:

    histogram_quantile(0.9, rate(binlog_pump_storage_write_binlog_duration_time_bucket{type="batch"}[5m])) > 1

  • 説明:

    Pump がローカルbinlog をローカル ディスクに書き込むのにかかる時間。

  • 解決:

    Pumpのローカルディスクの状態を確認し、問題を修正してください。

binlog_pump_storage_available_size_less_than_20G

  • アラート ルール:

    binlog_pump_storage_storage_size_bytes{type="available"} < 20 * 1024 * 1024 * 1024

  • 説明:

    Pumpの使用可能なディスク容量は 20 GB 未満です。

  • 解決:

    Pumpgc_tsoが正常かどうかを確認します。そうでない場合は、 Pumpの GC 時間構成を調整するか、対応するPump をオフラインにします。

binlog_drainer_checkpoint_tso_no_change_for_1m

  • アラート ルール:

    changes(binlog_drainer_checkpoint_tso[1m]) < 1

  • 説明:

    Drainer checkpointは 1 分間更新されていません。

  • 解決:

    オフラインになっていないすべてのポンプが正常に動作しているかどうかを確認します。

binlog_drainer_execute_duration_time_more_than_10s

  • アラート ルール:

    histogram_quantile(0.9, rate(binlog_drainer_execute_duration_time_bucket[1m])) > 10

  • 説明:

    Drainer がデータを TiDB にレプリケートするのにかかるトランザクション時間。大きすぎると、データのDrainerレプリケーションが影響を受けます。

  • 解決:

    • TiDB クラスターの状態を確認します。
    • Drainerログまたはモニターを確認してください。 DDL 操作がこの問題の原因である場合は、無視してかまいません。

このページは役に立ちましたか?