Binlogバイナリログ監視

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

指標のモニタリング

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

Pump監視指標

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

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

Drainerモニタリング指標

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

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

アラート ルール

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

緊急レベルのアラート

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

binlog_pump_storage_error_count

  • アラート ルール:

    changes(binlog_pump_storage_error_count[1m]) > 0

  • 説明:

    Pumpはバイナリログ データをローカル ストレージに書き込むことができません。

  • 解決:

    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がデプロイされたマシンとターゲット データベースがデプロイされたマシンの間のネットワーク帯域幅とレイテンシー時間、およびターゲット データベースの状態を確認します。
      • Drainerexecute timeが大きすぎず、Drainereventが小さすぎる場合は、 work countbatchを追加して再試行します。
    • 上記の 2 つの解決策がうまくいかない場合は、 support@pingcap.comにお問い合わせください。

警告レベルのアラート

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

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の両方が低い場合は、 support@pingcap.comに連絡してください。

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 がデータをDrainerにレプリケートするのにかかるトランザクション時間。大きすぎると、データのDrainerレプリケーションが影響を受けます。

  • 解決:

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