PITR モニタリングとアラート

PITR は、監視メトリックを収集するためにプロメテウスを使用することをサポートしています。現在、すべての監視メトリクスは TiKV に組み込まれています。

監視構成

  • TiUP を使用してデプロイされたクラスターの場合、 プロメテウスはモニタリング メトリックを自動的に収集します。
  • 手動でデプロイされたクラスターの場合、 TiDBクラスタ監視の展開の手順に従って、TiKV 関連のジョブを Prometheus 構成ファイルのscrape_configsセクションに追加します。

指標のモニタリング

指標タイプ説明
tikv_log_backup_interal_actor_acting_duration_secヒストグラムすべての内部メッセージとイベントを処理する期間。
message :: TaskType
tikv_log_backup_initial_scan_reasonカウンター初期スキャンがトリガーされた理由の統計。主な理由は、リーダーの移動またはリージョンのバージョンの変更です。
reason :: {"leader-changed", "region-changed", "retry"}
tikv_log_backup_event_handle_duration_secヒストグラムKV イベントの処理期間。 tikv_log_backup_on_event_duration_secondsと比較すると、このメトリックには内部コンバージョンの期間も含まれます。
stage :: {"to_stream_event", "save_to_temp_file"}
tikv_log_backup_handle_kv_batchヒストグラムRaftstore によって送信された KV ペア バッチのサイズのリージョン レベルの統計。
tikv_log_backup_initial_scan_disk_readカウンター初期スキャン中にディスクから読み取られたデータのサイズ。 Linux では、この情報はブロック デバイスから実際に読み取られたデータのサイズである procfs からのものです。構成項目initial-scan-rate-limitがこのメトリックに適用されます。
tikv_log_backup_incremental_scan_bytesヒストグラム初期スキャン中に実際に生成された KV ペアのサイズ。圧縮と読み取り増幅のため、この値はtikv_log_backup_initial_scan_disk_readの値とは異なる場合があります。
tikv_log_backup_skip_kv_countカウンターバックアップに役立たないため、ログ バックアップ中にスキップされたRaftイベントの数。
tikv_log_backup_errorsカウンターログ バックアップ中に再試行または無視できるエラー。
type :: ErrorType
tikv_log_backup_fatal_errorsカウンターログ バックアップ中に再試行または無視できないエラー。このタイプのエラーが発生すると、ログ バックアップは一時停止されます。
type :: ErrorType
tikv_log_backup_heap_memoryゲージログ バックアップ中に初期スキャンで検出された未使用のイベントが占めるメモリ。
tikv_log_backup_on_event_duration_secondsヒストグラムKV イベントを一時ファイルに保存する期間。
stage :: {"write_to_tempfile", "syscall_write"}
tikv_log_backup_store_checkpoint_tsゲージ非推奨のストア レベル チェックポイント TS。現店舗が登録しているGCセーフポイントに近いです。
task :: string
tikv_log_backup_flush_duration_secヒストグラムローカルの一時ファイルを外部ストレージに移動する期間。
stage :: {"generate_metadata", "save_files", "clear_temp_files"}
tikv_log_backup_flush_file_sizeヒストグラムバックアップ中に生成されたファイルのサイズの統計。
tikv_log_backup_initial_scan_duration_secヒストグラム初期スキャンの全体的な期間の統計。
tikv_log_backup_skip_retry_observeカウンターログ バックアップ中に無視できるエラーの統計、または再試行がスキップされた理由。
reason :: {"region-absent", "not-leader", "stale-command"}
tikv_log_backup_initial_scan_operationsカウンター初期スキャン中の RocksDB 関連操作の統計。
cf :: {"default", "write", "lock"}, op :: RocksDBOP
tikv_log_backup_enabledカウンターログのバックアップを有効にするかどうか。値が0より大きい場合、ログ バックアップは有効です。
tikv_log_backup_observed_regionゲージリッスンされているリージョンの数。
tikv_log_backup_task_statusゲージログ バックアップ タスクのステータス。 0は実行中を意味します。 1は一時停止を意味します。 2はエラーを意味します。
task :: string
tikv_log_backup_pending_initial_scanゲージ保留中の初期スキャンの統計。
stage :: {"queuing", "executing"}

グラファナ構成

  • TiUP を使用してデプロイされたクラスターの場合、 グラファナダッシュボードには PITR パネルが含まれます。 TiKV-Details ダッシュボードのBackup Logパネルは PITR パネルです。
  • 手動でデプロイされたクラスターの場合は、 Grafana ダッシュボードをインポートするを参照し、 tikv_details JSON ファイルを Grafana にアップロードします。次に、TiKV-Details ダッシュボードで[Backup Log]パネルを見つけます。

アラート構成

現在、PITR には組み込みのアラート項目がありません。このセクションでは、PITR でアラート項目を構成する方法と、いくつかの項目を推奨する方法を紹介します。

PITR でアラート アイテムを構成するには、次の手順に従います。

  1. Prometheus が配置されているノードで、アラート ルールの構成ファイル (たとえば、 pitr.rules.yml ) を作成します。ファイルには、 プロメテウスのドキュメント 、次の推奨されるアラート項目、および構成サンプルに従って、アラート ルールを入力します。
  2. Prometheus 構成ファイルのrule_filesフィールドに、アラート ルール ファイルのパスを追加します。
  3. Prometheus プロセスにSIGHUPシグナルを送信する ( kill -HUP pid ) か、HTTP POST リクエストをhttp://prometheus-addr/-/reloadに送信します (HTTP リクエストを送信する前に、Prometheus の起動時に--web.enable-lifecycleパラメーターを追加します)。

推奨されるアラート項目は次のとおりです。

LogBackupRunningRPO10m 以上

  • アラート項目: max(time() - tikv_log_backup_store_checkpoint_ts / 262144000) by (task) / 60 > 10 and max(tikv_log_backup_store_checkpoint_ts) by (task) > 0 and max(tikv_log_backup_task_status) by (task) == 0
  • アラート レベル: 警告
  • 説明: ログ データがストレージに 10 分以上保存されていません。このアラート項目はリマインダーです。ほとんどの場合、ログ バックアップには影響しません。

このアラート項目の構成例は次のとおりです。

groups: - name: PiTR rules: - alert: LogBackupRunningRPOMoreThan10m expr: max(time() - tikv_log_backup_store_checkpoint_ts / 262144000) by (task) / 60 > 10 and max(tikv_log_backup_store_checkpoint_ts) by (task) > 0 and max(tikv_log_backup_task_status) by (task) == 0 labels: severity: warning annotations: summary: RPO of log backup is high message: RPO of the log backup task {{ $labels.task }} is more than 10m

ログバックアップの実行中の RPO は 30 分以上

  • アラート項目: max(time() - tikv_log_backup_store_checkpoint_ts / 262144000) by (task) / 60 > 30 and max(tikv_log_backup_store_checkpoint_ts) by (task) > 0 and max(tikv_log_backup_task_status) by (task) == 0
  • 警告レベル: 重大
  • 説明: ログ データがストレージに 30 分以上保存されていません。このアラートは多くの場合、異常を示します。 TiKV ログをチェックして、原因を見つけることができます。

LogBackupPausingMoreThan2h

  • アラート項目: max(time() - tikv_log_backup_store_checkpoint_ts / 262144000) by (task) / 3600 > 2 and max(tikv_log_backup_store_checkpoint_ts) by (task) > 0 and max(tikv_log_backup_task_status) by (task) == 1
  • アラート レベル: 警告
  • 説明: ログ バックアップ タスクが 2 時間以上一時停止しています。この警告項目はリマインダーであり、できるだけ早くbr log resumeを実行する必要があります。

LogBackupPausingMoreThan12h

  • アラート項目: max(time() - tikv_log_backup_store_checkpoint_ts / 262144000) by (task) / 3600 > 12 and max(tikv_log_backup_store_checkpoint_ts) by (task) > 0 and max(tikv_log_backup_task_status) by (task) == 1
  • 警告レベル: 重大
  • 説明: ログ バックアップ タスクが 12 時間以上一時停止しています。タスクを再開するには、できるだけ早くbr log resumeを実行する必要があります。一時停止したログ タスクが長すぎると、データ損失のリスクがあります。

ログバックアップ失敗

  • アラート項目: max(tikv_log_backup_task_status) by (task) == 2 and max(tikv_log_backup_store_checkpoint_ts) by (task) > 0
  • 警告レベル: 重大
  • 説明: ログ バックアップ タスクが失敗します。失敗の理由を確認するには、 br log statusを実行する必要があります。必要に応じて、TiKV ログをさらに確認する必要があります。

LogBackupGCSafePointExceedsCheckpoint

  • アラート項目: min(tikv_log_backup_store_checkpoint_ts) by (instance) - max(tikv_gcworker_autogc_safe_point) by (instance) < 0
  • 警告レベル: 重大
  • 説明: 一部のデータは、バックアップの前にガベージ コレクションされました。これは、一部のデータが失われ、サービスに影響を与える可能性が非常に高いことを意味します。