- TiDBについて
- クイックスタート
- 発展させる
- 概要
- クイックスタート
- TiDB Cloud(開発者層) で TiDB クラスターを構築する
- TiDB の CRUD SQL
- TiDB でシンプルな CRUD アプリを構築する
- 応用例
- TiDB に接続する
- データベース スキーマの設計
- 書き込みデータ
- データの読み取り
- 取引
- 最適化
- トラブルシューティング
- 参照
- 書店のサンプル アプリケーション
- ガイドライン
- アーカイブされたドキュメント
- クラウドネイティブ開発環境
- サードパーティのサポート
- デプロイ
- 移行する
- 管理
- 監視と警告
- トラブルシューティング
- TiDB トラブルシューティング マップ
- 遅いクエリを特定する
- 遅いクエリを分析する
- SQL 診断
- Top SQLを使用して高価なクエリを特定する
- ログを使用して高価なクエリを特定する
- ステートメント要約表
- ホットスポットの問題のトラブルシューティング
- 増加した読み取りおよび書き込み遅延のトラブルシューティング
- クラスターのオンサイト情報の保存と復元
- クラスタ セットアップのトラブルシューティング
- 高いディスク I/O 使用率のトラブルシューティング
- ロック競合のトラブルシューティング
- TiFlash のトラブルシューティング
- オプティミスティック トランザクションでの書き込み競合のトラブルシューティング
- データとインデックス間の不一致のトラブルシューティング
- 性能チューニング
- チューニングガイド
- Configuration / コンフィグレーションのチューニング
- システムのチューニング
- ソフトウェアのチューニング
- Configuration / コンフィグレーション
- コプロセッサ キャッシュ
- SQL チューニング
- チュートリアル
- TiDB ツール
- 概要
- ユースケース
- ダウンロード
- TiUP
- ドキュメンテーション マップ
- 概要
- 用語と概念
- TiUP コンポーネントの管理
- FAQ
- トラブルシューティングガイド
- コマンドリファレンス
- 概要
- TiUP コマンド
- TiUP クラスタ コマンド
- 概要
- tiup cluster audit
- tiup cluster check
- tiup cluster clean
- tiup cluster deploy
- tiup cluster destroy
- tiup cluster disable
- tiup cluster display
- tiup cluster edit-config
- tiup cluster enable
- tiup cluster help
- tiup cluster import
- tiup cluster list
- tiup cluster patch
- tiup cluster prune
- tiup cluster reload
- tiup cluster rename
- tiup cluster replay
- tiup cluster restart
- tiup cluster scale-in
- tiup cluster scale-out
- tiup cluster start
- tiup cluster stop
- tiup cluster template
- tiup cluster upgrade
- TiUP DMコマンド
- TiDB クラスター トポロジ リファレンス
- DM クラスタ トポロジ リファレンス
- ミラー リファレンス ガイド
- TiUP コンポーネント
- PingCAPクリニック診断サービス
- TiDB Operator
- Dumpling
- TiDB Lightning
- TiDB データ移行
- バックアップと復元 (BR)
- Binlog
- TiCDC
- Dumpling
- 同期差分インスペクター
- ティスパーク
- 参照
- クラスタ アーキテクチャ
- 主な監視指標
- セキュリティ
- 権限
- SQL
- SQL 言語の構造と構文
- SQL ステートメント
ADD COLUMN
ADD INDEX
ADMIN
ADMIN CANCEL DDL
ADMIN CHECKSUM TABLE
ADMIN CHECK [TABLE|INDEX]
ADMIN SHOW DDL [JOBS|QUERIES]
ADMIN SHOW TELEMETRY
ALTER DATABASE
ALTER INDEX
ALTER INSTANCE
ALTER PLACEMENT POLICY
ALTER TABLE
ALTER TABLE COMPACT
ALTER USER
ANALYZE TABLE
BACKUP
BATCH
BEGIN
CHANGE COLUMN
COMMIT
CHANGE DRAINER
CHANGE PUMP
CREATE [GLOBAL|SESSION] BINDING
CREATE DATABASE
CREATE INDEX
CREATE PLACEMENT POLICY
CREATE ROLE
CREATE SEQUENCE
CREATE TABLE LIKE
CREATE TABLE
CREATE USER
CREATE VIEW
DEALLOCATE
DELETE
DESC
DESCRIBE
DO
DROP [GLOBAL|SESSION] BINDING
DROP COLUMN
DROP DATABASE
DROP INDEX
DROP PLACEMENT POLICY
DROP ROLE
DROP SEQUENCE
DROP STATS
DROP TABLE
DROP USER
DROP VIEW
EXECUTE
EXPLAIN ANALYZE
EXPLAIN
FLASHBACK TABLE
FLUSH PRIVILEGES
FLUSH STATUS
FLUSH TABLES
GRANT <privileges>
GRANT <role>
INSERT
KILL [TIDB]
LOAD DATA
LOAD STATS
MODIFY COLUMN
PREPARE
RECOVER TABLE
RENAME INDEX
RENAME TABLE
REPLACE
RESTORE
REVOKE <privileges>
REVOKE <role>
ROLLBACK
SELECT
SET DEFAULT ROLE
SET [NAMES|CHARACTER SET]
SET PASSWORD
SET ROLE
SET TRANSACTION
SET [GLOBAL|SESSION] <variable>
SHOW ANALYZE STATUS
SHOW [BACKUPS|RESTORES]
SHOW [GLOBAL|SESSION] BINDINGS
SHOW BUILTINS
SHOW CHARACTER SET
SHOW COLLATION
SHOW [FULL] COLUMNS FROM
SHOW CONFIG
SHOW CREATE PLACEMENT POLICY
SHOW CREATE SEQUENCE
SHOW CREATE TABLE
SHOW CREATE USER
SHOW DATABASES
SHOW DRAINER STATUS
SHOW ENGINES
SHOW ERRORS
SHOW [FULL] FIELDS FROM
SHOW GRANTS
SHOW INDEX [FROM|IN]
SHOW INDEXES [FROM|IN]
SHOW KEYS [FROM|IN]
SHOW MASTER STATUS
SHOW PLACEMENT
SHOW PLACEMENT FOR
SHOW PLACEMENT LABELS
SHOW PLUGINS
SHOW PRIVILEGES
SHOW [FULL] PROCESSSLIST
SHOW PROFILES
SHOW PUMP STATUS
SHOW SCHEMAS
SHOW STATS_HEALTHY
SHOW STATS_HISTOGRAMS
SHOW STATS_META
SHOW STATUS
SHOW TABLE NEXT_ROW_ID
SHOW TABLE REGIONS
SHOW TABLE STATUS
SHOW [FULL] TABLES
SHOW [GLOBAL|SESSION] VARIABLES
SHOW WARNINGS
SHUTDOWN
SPLIT REGION
START TRANSACTION
TABLE
TRACE
TRUNCATE
UPDATE
USE
WITH
- データ型
- 関数と演算子
- クラスタ化インデックス
- 制約
- 生成された列
- SQL モード
- テーブル属性
- 取引
- ガベージ コレクション (GC)
- ビュー
- パーティショニング
- 一時テーブル
- キャッシュされたテーブル
- 文字セットと照合順序
- SQL の配置規則
- システム テーブル
mysql
- 情報_スキーマ
- 概要
ANALYZE_STATUS
CLIENT_ERRORS_SUMMARY_BY_HOST
CLIENT_ERRORS_SUMMARY_BY_USER
CLIENT_ERRORS_SUMMARY_GLOBAL
CHARACTER_SETS
CLUSTER_CONFIG
CLUSTER_HARDWARE
CLUSTER_INFO
CLUSTER_LOAD
CLUSTER_LOG
CLUSTER_SYSTEMINFO
COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY
COLUMNS
DATA_LOCK_WAITS
DDL_JOBS
DEADLOCKS
ENGINES
INSPECTION_RESULT
INSPECTION_RULES
INSPECTION_SUMMARY
KEY_COLUMN_USAGE
METRICS_SUMMARY
METRICS_TABLES
PARTITIONS
PLACEMENT_POLICIES
PROCESSLIST
REFERENTIAL_CONSTRAINTS
SCHEMATA
SEQUENCES
SESSION_VARIABLES
SLOW_QUERY
STATISTICS
TABLES
TABLE_CONSTRAINTS
TABLE_STORAGE_STATS
TIDB_HOT_REGIONS
TIDB_HOT_REGIONS_HISTORY
TIDB_INDEXES
TIDB_SERVERS_INFO
TIDB_TRX
TIFLASH_REPLICA
TIKV_REGION_PEERS
TIKV_REGION_STATUS
TIKV_STORE_STATUS
USER_PRIVILEGES
VIEWS
METRICS_SCHEMA
- UI
- TiDB ダッシュボード
- 概要
- 管理
- アクセス
- 概要ページ
- クラスター情報ページ
- Top SQLページ
- キー ビジュアライザー ページ
- メトリクス関係グラフ
- SQL ステートメントの分析
- スロークエリページ
- クラスタ診断
- 検索ログ ページ
- インスタンスのプロファイリング
- セッションの管理とConfiguration / コンフィグレーション
- FAQ
- CLI
- コマンド ライン フラグ
- Configuration / コンフィグレーションファイルのパラメーター
- システム変数
- ストレージ エンジン
- テレメトリー
- エラーコード
- テーブル フィルター
- トポロジ ラベルごとにレプリカをスケジュールする
- よくある質問
- リリースノート
- すべてのリリース
- リリースのタイムライン
- TiDB のバージョニング
- v6.1
- v6.0
- v5.4
- v5.3
- v5.2
- v5.1
- v5.0
- v4.0
- v3.1
- v3.0
- v2.1
- v2.0
- v1.0
- 用語集
TiDBクラスターアラートルール
このドキュメントでは、TiDB、TiKV、PD、TiFlash、TiDB Binlog 、TiCDC、Node_exporter、Blackbox_exporterのアラート項目のルールの説明と解決策など、TiDBクラスタのさまざまなコンポーネントのアラートルールについて説明します。
重大度レベルに応じて、アラートルールは、緊急レベル、クリティカルレベル、および警告レベルの3つのカテゴリ(高から低)に分類されます。この重大度レベルの区分は、以下の各コンポーネントのすべてのアラート項目に適用されます。
重大度レベル | 説明 |
---|---|
緊急レベル | サービスが利用できない最高の重大度レベル。緊急レベルのアラートは、多くの場合、サービスまたはノードの障害によって発生します。すぐに手動による介入が必要です。 |
クリティカルレベル | サービスの可用性の低下。クリティカルレベルのアラートの場合、異常なメトリックを注意深く監視する必要があります。 |
警告レベル | 警告レベルのアラートは、問題またはエラーのリマインダーです。 |
TiDBアラートルール
このセクションでは、TiDBコンポーネントのアラートルールについて説明します。
緊急レベルのアラート
TiDB_schema_error
アラートルール:
increase(tidb_session_schema_lease_error_total{type="outdated"}[15m]) > 0
説明:
最新のスキーマ情報は、1つのリース内でTiDBに再ロードされません。 TiDBがサービスの提供を継続できない場合、アラートがトリガーされます。
解決:
多くの場合、使用できないリージョンまたはTiKVタイムアウトが原因です。 TiKVの監視項目を確認して、問題を特定する必要があります。
TiDB_tikvclient_region_err_total
アラートルール:
increase(tidb_tikvclient_region_err_total[10m]) > 6000
説明:
TiDBがTiKVにアクセスすると、リージョンエラーが発生します。エラーが10分間に6000回以上報告されると、アラートがトリガーされます。
解決:
ビューの監視ステータスを表示します。
TiDB_domain_load_schema_total
アラートルール:
increase(tidb_domain_load_schema_total{type="failed"}[10m]) > 10
説明:
TiDBに最新のスキーマ情報を再ロードできなかった合計数。リロードの失敗が10分間に10回以上発生すると、アラートがトリガーされます。
解決:
TiDB_monitor_keep_alive
アラートルール:
increase(tidb_monitor_keep_alive_total[10m]) < 100
説明:
TiDBプロセスがまだ存在するかどうかを示します。
tidb_monitor_keep_alive_total
の回数が10分間で100未満に増加した場合、TiDBプロセスはすでに終了している可能性があり、アラートがトリガーされます。解決:
- TiDBプロセスのメモリが不足していないか確認してください。
- 本機が再起動したか確認してください。
クリティカルレベルのアラート
TiDB_server_panic_total
アラートルール:
increase(tidb_server_panic_total[10m]) > 0
説明:
パニックに陥ったTiDBスレッドの数。panicが発生すると、アラートがトリガーされます。スレッドは頻繁に回復されます。回復されない場合、TiDBは頻繁に再起動します。
解決:
panicログを収集して、問題を特定します。
警告レベルのアラート
TiDB_memory_abnormal
アラートルール:
go_memstats_heap_inuse_bytes{job="tidb"} > 1e+10
説明:
TiDBメモリ使用量の監視。使用量が10Gを超えると、アラートがトリガーされます。
解決:
HTTP APIを使用して、ゴルーチンリークの問題のトラブルシューティングを行います。
TiDB_query_duration
アラートルール:
histogram_quantile(0.99, sum(rate(tidb_server_handle_query_duration_seconds_bucket[1m])) BY (le, instance)) > 1
説明:
TiDBでリクエストを処理する際のレイテンシ。 99パーセンタイル遅延が1秒を超えると、アラートがトリガーされます。
解決:
TiDBログをビューし、
SLOW_QUERY
およびTIME_COP_PROCESS
キーワードを検索して、遅いSQLクエリを見つけます。
TiDB_server_event_error
アラートルール:
increase(tidb_server_event_total{type=~"server_start|server_hang"}[15m]) > 0
説明:
TiDBサービスで発生するイベントの数。次のイベントが発生すると、アラートがトリガーされます。
- start:TiDBサービスが開始されます。
- ハング:クリティカルレベルのイベント(現在、TiDBがbinlogを書き込めないというシナリオは1つだけです)が発生すると、TiDBは
hang
モードに入り、手動で強制終了されるのを待ちます。
解決:
- TiDBを再起動して、サービスを回復します。
- Binlogサービスが正常かどうかを確認します。
TiDB_tikvclient_backoff_seconds_count
アラートルール:
increase(tidb_tikvclient_backoff_seconds_count[10m]) > 10
説明:
TiDBがTiKVにアクセスできなかった場合の再試行回数。再試行時間が10分で10を超えると、アラートがトリガーされます。
解決:
ビューの監視ステータスを表示します。
TiDB_monitor_time_jump_back_error
アラートルール:
increase(tidb_monitor_time_jump_back_total[10m]) > 0
説明:
TiDBを保持しているマシンの時間が巻き戻されると、アラートがトリガーされます。
解決:
NTP構成のトラブルシューティングを行います。
TiDB_ddl_waiting_jobs
アラートルール:
sum(tidb_ddl_waiting_jobs) > 5
説明:
TiDBで実行を保留しているDDLタスクの数が5を超えると、アラートがトリガーされます。
解決:
admin show ddl
を実行して実行されている時間のかかるadd index
操作があるかどうかを確認します。
PDアラートルール
このセクションでは、PDコンポーネントのアラートルールを示します。
緊急レベルのアラート
PD_cluster_down_store_nums
アラートルール:
(sum(pd_cluster_status{type="store_down_count"}) by (instance) > 0) and (sum(etcd_server_is_leader) by (instance) > 0)
説明:
PDはTiKV/TiFlashハートビートを長時間受信していません(デフォルト設定は30分です)。
解決:
- TiKV / TiFlashプロセスが正常であるか、ネットワークが分離されているか、または負荷が高すぎるかどうかを確認し、可能な限りサービスを回復します。
- TiKV / TiFlashインスタンスを回復できない場合は、オフラインにすることができます。
クリティカルレベルのアラート
PD_etcd_write_disk_latency
アラートルール:
histogram_quantile(0.99, sum(rate(etcd_disk_wal_fsync_duration_seconds_bucket[1m])) by (instance, job, le)) > 1
説明:
fsync操作の待ち時間が1秒を超える場合は、etcdが通常よりも低速でデータをディスクに書き込むことを示しています。 PDリーダーのタイムアウトが発生したり、TSOを時間内にディスクに保存できなかったりして、クラスタ全体のサービスがシャットダウンする可能性があります。
解決:
- 書き込みが遅い原因を見つけます。システムに過負荷をかけるのは他のサービスである可能性があります。 PD自体が大量のCPUまたはI/Oリソースを占有しているかどうかを確認できます。
- PDを再起動するか、リーダーを別のPDに手動で転送して、サービスを回復してください。
- 問題のあるPDインスタンスが環境要因のために回復できない場合は、オフラインにして交換してください。
PD_miss_peer_region_count
アラートルール:
(sum(pd_regions_status{type="miss_peer_region_count"}) by (instance) > 100) and (sum(etcd_server_is_leader) by (instance) > 0)
説明:
リージョンレプリカの数が
max-replicas
の値よりも少なくなっています。解決:
- ダウンしているかオフラインになっているTiKVマシンがあるかどうかを確認して、問題の原因を特定します。
- リージョンのヘルスパネルを見て、
miss_peer_region_count
が継続的に減少しているかどうかを確認します。
警告レベルのアラート
PD_cluster_lost_connect_store_nums
アラートルール:
(sum(pd_cluster_status{type="store_disconnected_count"}) by (instance) > 0) and (sum(etcd_server_is_leader) by (instance) > 0)
説明:
PDは20秒以内にTiKV/TiFlashハートビートを受信しません。通常、TiKV/TiFlashハートビートは10秒ごとに発生します。
解決:
- TiKV/TiFlashインスタンスが再起動されているかどうかを確認します。
- TiKV / TiFlashプロセスが正常であり、ネットワークが分離されており、負荷が高すぎるかどうかを確認し、可能な限りサービスを回復します。
- TiKV / TiFlashインスタンスを復元できないことを確認した場合は、オフラインにすることができます。
- TiKV / TiFlashインスタンスを回復できるが、短期的には回復できないことを確認した場合は、
max-down-time
の値を増やすことを検討できます。これにより、TiKV / TiFlashインスタンスが回復不能と見なされたり、データがTiKV/TiFlashから削除されたりするのを防ぐことができます。
PD_cluster_low_space
アラートルール:
(sum(pd_cluster_status{type="store_low_space_count"}) by (instance) > 0) and (sum(etcd_server_is_leader) by (instance) > 0)
説明:
TiKV/TiFlashノードに十分なスペースがないことを示します。
解決:
- クラスタのスペースが一般的に不十分であるかどうかを確認してください。もしそうなら、その容量を増やします。
- リージョンバランスのスケジューリングに問題がないか確認してください。その場合、データの分散が不均一になります。
- ログ、スナップショット、コアダンプなど、ディスク容量を大量に消費するファイルがないか確認してください。
- ノードのリージョンの重みを下げて、データ量を減らします。
- スペースを解放できない場合は、ノードを事前にオフラインにすることを検討してください。これにより、ダウンタイムにつながる不十分なディスク容量を防ぐことができます。
PD_etcd_network_peer_latency
アラートルール:
histogram_quantile(0.99, sum(rate(etcd_network_peer_round_trip_time_seconds_bucket[1m])) by (To, instance, job, le)) > 1
説明:
PDノード間のネットワーク遅延は高いです。リーダーのタイムアウトとTSOディスクストレージのタイムアウトが発生し、クラスタのサービスに影響を与える可能性があります。
解決:
- ネットワークとシステムの負荷状態を確認してください。
- 問題のあるPDインスタンスが環境要因のために回復できない場合は、オフラインにして交換してください。
PD_tidb_handle_requests_duration
アラートルール:
histogram_quantile(0.99, sum(rate(pd_client_request_handle_requests_duration_seconds_bucket{type="tso"}[1m])) by (instance, job, le)) > 0.1
説明:
PDがTSO要求を処理するのに時間がかかります。多くの場合、高負荷が原因です。
解決:
- サーバーのロードステータスを確認してください。
- pprofを使用して、PDのCPUプロファイルを分析します。
- PDリーダーを手動で切り替えます。
- 問題のあるPDインスタンスが環境要因のために回復できない場合は、オフラインにして交換してください。
PD_down_peer_region_nums
アラートルール:
(sum(pd_regions_status{type="down-peer-region-count"}) by (instance) > 0) and (sum(etcd_server_is_leader) by (instance) > 0)
説明:
Raftリーダーによって報告された、応答しないピアを持つリージョンの数。
解決:
- ダウンしている、または再起動したばかりの、またはビジー状態のTiKVがあるかどうかを確認します。
- リージョンのヘルスパネルを見て、
down_peer_region_count
が継続的に減少しているかどうかを確認します。 - TiKVサーバー間のネットワークを確認してください。
PD_pending_peer_region_count
アラートルール:
(sum(pd_regions_status{type="pending-peer-region-count"}) by (instance) > 100) and (sum(etcd_server_is_leader) by (instance) > 0)
説明:
Raftログが遅れているリージョンが多すぎます。スケジューリングによって保留中のピアの数が少なくなるのは正常ですが、その数が多いままの場合は、問題が発生している可能性があります。
解決:
- リージョンのヘルスパネルを見て、
pending_peer_region_count
が継続的に減少しているかどうかを確認します。 - TiKVサーバー間のネットワークを確認します。特に、十分な帯域幅があるかどうかを確認します。
- リージョンのヘルスパネルを見て、
PD_leader_change
アラートルール:
count(changes(pd_tso_events{type="save"}[10m]) > 0) >= 2
説明:
PDリーダーは最近切り替えられました。
解決:
- PDの再起動、リーダーの手動転送、リーダーの優先度の調整などの人的要因を除外します。
- ネットワークとシステムの負荷状態を確認してください。
- 問題のあるPDインスタンスが環境要因のために回復できない場合は、オフラインにして交換してください。
TiKV_space_used_more_than_80%
アラートルール:
sum(pd_cluster_status{type="storage_size"}) / sum(pd_cluster_status{type="storage_capacity"}) * 100 > 80
説明:
クラスタスペースの80%以上が占有されています。
解決:
- 容量を増やす必要があるかどうかを確認します。
- ログ、スナップショット、コアダンプなど、ディスク容量を大量に消費するファイルがないか確認してください。
PD_system_time_slow
アラートルール:
changes(pd_tso_events{type="system_time_slow"}[10m]) >= 1
説明:
システム時刻の巻き戻しが発生する可能性があります。
解決:
システム時刻が正しく設定されているか確認してください。
PD_no_store_for_making_replica
アラートルール:
increase(pd_checker_event_count{type="replica_checker", name="no_target_store"}[1m]) > 0
説明:
追加のレプリカ用の適切なストアはありません。
解決:
- 店舗に十分なスペースがあるかどうかを確認してください。
- 構成されている場合は、ラベル構成に従って追加のレプリカのストアがあるかどうかを確認します。
TiKVアラートルール
このセクションでは、TiKVコンポーネントのアラートルールについて説明します。
緊急レベルのアラート
TiKV_memory_used_too_fast
アラートルール:
process_resident_memory_bytes{job=~"tikv",instance=~".*"} - (process_resident_memory_bytes{job=~"tikv",instance=~".*"} offset 5m) > 5*1024*1024*1024
説明:
現在、メモリに関するTiKV監視項目はありません。 Node_exporterを使用して、クラスタのマシンのメモリ使用量を監視できます。上記のルールは、メモリ使用量が5分以内に5 GBを超えると(TiKVではメモリの占有が速すぎる)、アラートがトリガーされることを示しています。
解決:
rocksdb.defaultcf
とrocksdb.writecf
の両方のblock-cache-size
の値を調整します。
TiKV_GC_can_not_work
アラートルール:
sum(increase(tikv_gcworker_gc_tasks_vec{task="gc"}[1d])) < 1 and (sum(increase(tikv_gc_compaction_filter_perform[1d])) < 1 and sum(increase(tikv_engine_event_total{db="kv", cf="write", type="compaction"}[1d])) >= 1)
説明:
GCは24時間以内にTiKVインスタンスで正常に実行されません。これは、GCが正しく機能していないことを示しています。 GCが短期間で実行されなければ、それほど問題は発生しません。ただし、GCが停止し続けると、保持されるバージョンが増え、クエリの速度が低下します。
解決:
SELECT VARIABLE_VALUE FROM mysql.tidb WHERE VARIABLE_NAME = "tikv_gc_leader_desc"
を実行して、GCリーダーに対応するtidb-server
を見つけます。tidb-server
のログをビューし、grep gc_worker tidb.log;- この間にGCワーカーがロックを解決している(最後のログは「ロックの解決を開始」)か、範囲を削除している(最後のログは「{number}範囲を開始」)場合は、GCプロセスが実行中であることを意味します。通常は。それ以外の場合は、 support@pingcap.comに連絡してこの問題を解決してください。
クリティカルレベルのアラート
TiKV_server_report_failure_msg_total
アラートルール:
sum(rate(tikv_server_report_failure_msg_total{type="unreachable"}[10m])) BY (store_id) > 10
説明:
リモートTiKVが接続できないことを示します。
解決:
- ネットワークがクリアであるかどうかを確認します。
- リモートTiKVがダウンしているかどうかを確認します。
- リモートTiKVがダウンしていない場合は、圧力が高すぎるかどうかを確認してください。
TiKV_channel_full_total
の解決策を参照してください。
TiKV_channel_full_total
アラートルール:
sum(rate(tikv_channel_full_total[10m])) BY (type, instance) > 0
説明:
この問題は、多くの場合、RaftstoreスレッドのスタックとTiKVへの高圧が原因で発生します。
解決:
- Raft Proposeモニターを見て、アラートされたTiKVノードが他のTiKVノードよりもはるかに高いRaft提案を持っているかどうかを確認します。もしそうなら、それはこのTiKVに1つ以上のホットスポットがあることを意味します。ホットスポットスケジューリングが正しく機能するかどうかを確認する必要があります。
- Raft I / Oモニターを監視し、レイテンシーが増加するかどうかを確認します。待ち時間が長い場合は、ディスクにボトルネックが存在する可能性があることを意味します。実行可能であるが安全でない解決策の1つは、
sync-log
からfalse
に設定することです。 - Raft Processモニターを監視し、ティック期間が長いかどうかを確認します。その場合、
[raftstore]
構成の下にraft-base-tick-interval = "2s"
を追加する必要があります。
TiKV_write_stall
アラートルール:
delta(tikv_engine_write_stall[10m]) > 0
説明:
RocksDBへの書き込み圧力が高すぎるため、ストールが発生します。
解決:
- ディスクモニターをビューし、ディスクの問題のトラブルシューティングを行います。
- TiKVに書き込みホットスポットがあるかどうかを確認します。
[rocksdb]
および[raftdb]
構成では、max-sub-compactions
を大きい値に設定します。
TiKV_raft_log_lag
アラートルール:
histogram_quantile(0.99, sum(rate(tikv_raftstore_log_lag_bucket[1m])) by (le, instance)) > 5000
説明:
この値が比較的大きい場合は、フォロワーがリーダーよりもはるかに遅れており、Raftを正常に複製できないことを意味します。フォロワーが配置されているTiKVマシンがスタックしているか、ダウンしている可能性があります。
TiKV_async_request_snapshot_duration_seconds
アラートルール:
histogram_quantile(0.99, sum(rate(tikv_storage_engine_async_request_duration_seconds_bucket{type="snapshot"}[1m])) by (le, instance, type)) > 1
説明:
この値が比較的大きい場合は、Raftstoreの負荷圧力が高すぎることを意味し、すでにスタックしている可能性があります。
解決:
TiKV_channel_full_total
の解決策を参照してください。
TiKV_async_request_write_duration_seconds
アラートルール:
histogram_quantile(0.99, sum(rate(tikv_storage_engine_async_request_duration_seconds_bucket{type="write"}[1m])) by (le, instance, type)) > 1
説明:
この値が比較的大きい場合は、 Raftの書き込みに時間がかかることを意味します。
解決:
- Raftstoreの圧力を確認してください。
TiKV_channel_full_total
の解決策を参照してください。 - アプライワーカースレッドの圧力を確認してください。
- Raftstoreの圧力を確認してください。
TiKV_coprocessor_request_wait_seconds
アラートルール:
histogram_quantile(0.9999, sum(rate(tikv_coprocessor_request_wait_seconds_bucket[1m])) by (le, instance, req)) > 10
説明:
この値が比較的大きい場合は、コプロセッサーワーカーへのプレッシャーが高いことを意味します。コプロセッサースレッドをスタックさせる遅いタスクがあるかもしれません。
解決:
- TiDBログから低速クエリログをビューして、インデックスまたは全表スキャンがクエリで使用されているかどうか、または分析が必要かどうかを確認します。
- ホットスポットがあるかどうかを確認します。
- コプロセッサーモニターをビューし、
coprocessor table/index scan
のtotal
とprocess
が一致するかどうかを確認します。それらが大きく異なる場合は、実行された無効なクエリが多すぎることを示しています。over seek bound
があるかどうかを確認できます。もしそうなら、GCが時間内に処理しないバージョンが多すぎます。次に、並列GCスレッドの数を増やす必要があります。
TiKV_raftstore_thread_cpu_seconds_total
アラートルール:
sum(rate(tikv_thread_cpu_seconds_total{name=~"raftstore_.*"}[1m])) by (instance, name) > 1.6
説明:
Raftstoreスレッドへの圧力が高すぎます。
解決:
TiKV_channel_full_total
の解決策を参照してください。
TiKV_raft_append_log_duration_secs
アラートルール:
histogram_quantile(0.99, sum(rate(tikv_raftstore_append_log_duration_seconds_bucket[1m])) by (le, instance)) > 1
説明:
Raftログを追加するための時間コストを示します。高い場合は、通常、I/Oがビジーすぎることを意味します。
TiKV_raft_apply_log_duration_secs
アラートルール:
histogram_quantile(0.99, sum(rate(tikv_raftstore_apply_log_duration_seconds_bucket[1m])) by (le, instance)) > 1
説明:
Raftログを適用するための時間コストを示します。高い場合は、通常、I/Oがビジーすぎることを意味します。
TiKV_scheduler_latch_wait_duration_seconds
アラートルール:
histogram_quantile(0.99, sum(rate(tikv_scheduler_latch_wait_duration_seconds_bucket[1m])) by (le, instance, type)) > 1
説明:
書き込み操作がスケジューラのメモリロックを取得するまでの待機時間。高い場合は、書き込みの競合が多く発生するか、競合につながる一部の操作が終了して同じロックを待機する他の操作をブロックするのに長い時間がかかる可能性があります。
解決:
- Scheduler-Allモニターでスケジューラーコマンドの期間をビューし、どのコマンドに最も時間がかかるかを確認します。
- Scheduler-Allモニターでスケジューラースキャンの詳細をビューし、
total
とprocess
が一致するかどうかを確認します。それらが大きく異なる場合、多くの無効なスキャンがあります。over seek bound
があるかどうかも確認できます。多すぎる場合は、GCが時間内に機能していないことを示しています。 - ストレージモニターでストレージ非同期スナップショット/書き込み期間をビューし、Raft操作が時間内に実行されているかどうかを確認します。
TiKV_thread_apply_worker_cpu_seconds
アラートルール:
max(rate(tikv_thread_cpu_seconds_total{name=~"apply_.*"}[1m])) by (instance) > 0.9
説明:
アプライRaftログスレッドに大きな圧力がかかっており、制限に近づいているか、制限を超えています。これは多くの場合、書き込みのバーストによって引き起こされます。
警告レベルのアラート
TiKV_leader_drops
アラートルール:
delta(tikv_pd_heartbeat_tick_total{type="leader"}[30s]) < -10
説明:
多くの場合、Raftstoreスレッドのスタックが原因です。
解決:
TiKV_channel_full_total
を参照してください。- TiKVへの圧力が低い場合は、PDスケジューリングが頻繁すぎるかどうかを検討してください。 PDページでOperatorCreateパネルを表示し、PDスケジューリングのタイプと数を確認できます。
TiKV_raft_process_ready_duration_secs
アラートルール:
histogram_quantile(0.999, sum(rate(tikv_raftstore_raft_process_duration_secs_bucket{type='ready'}[1m])) by (le, instance, type)) > 2
説明:
Raftを処理するための時間コストを示します。この値が大きい場合は、ログの追加タスクがスタックしていることが原因であることがよくあります。
TiKV_raft_process_tick_duration_secs
アラートルール:
histogram_quantile(0.999, sum(rate(tikv_raftstore_raft_process_duration_secs_bucket{type='tick'}[1m])) by (le, instance, type)) > 2
説明:
Raftティックの処理にかかる時間コストを示します。この値が大きい場合は、多くの場合、リージョンが多すぎることが原因です。
解決:
warn
やerror
などの高レベルのログの使用を検討してください。[raftstore]
構成の下にraft-base-tick-interval = "2s"
を追加します。
TiKV_scheduler_context_total
アラートルール:
abs(delta( tikv_scheduler_context_total[5m])) > 1000
説明:
スケジューラーによって実行されている書き込みコマンドの数。この値が大きい場合は、タスクがタイムリーに終了していないことを意味します。
解決:
TiKV_scheduler_command_duration_seconds
アラートルール:
histogram_quantile(0.99, sum(rate(tikv_scheduler_command_duration_seconds_bucket[1m])) by (le, instance, type) / 1000) > 1
説明:
スケジューラコマンドの実行にかかる時間コストを示します。
解決:
TiKV_coprocessor_outdated_request_wait_seconds
アラートルール:
delta(tikv_coprocessor_outdated_request_wait_seconds_count[10m]) > 0
説明:
コプロセッサーによる期限切れの要求の待機時間。この値が大きい場合は、コプロセッサーに高い圧力がかかっていることを意味します。
解決:
TiKV_coprocessor_request_wait_seconds
を参照してください。
TiKV_coprocessor_pending_request
アラートルール:
delta(tikv_coprocessor_pending_request[10m]) > 5000
説明:
コプロセッサーのキューイング要求。
解決:
TiKV_coprocessor_request_wait_seconds
を参照してください。
TiKV_batch_request_snapshot_nums
アラートルール:
sum(rate(tikv_thread_cpu_seconds_total{name=~"cop_.*"}[1m])) by (instance) / (count(tikv_thread_cpu_seconds_total{name=~"cop_.*"}) * 0.9) / count(count(tikv_thread_cpu_seconds_total) by (instance)) > 0
説明:
TiKVマシンのコプロセッサーCPU使用率が90%を超えています。
TiKV_pending_task
アラートルール:
sum(tikv_worker_pending_task_total) BY (instance,name) > 1000
説明:
TiKVの保留中のタスクの数。
解決:
どの種類のタスクの値が高いかを確認してください。通常、コプロセッサーの解決策を見つけて、他のメトリックからワーカータスクを適用できます。
TiKV_low_space
アラートルール:
sum(tikv_store_size_bytes{type="available"}) by (instance) / sum(tikv_store_size_bytes{type="capacity"}) by (instance) < 0.2
説明:
TiKVのデータ量が、構成されたノード容量またはマシンのディスク容量の80%を超えています。
解決:
- ノードスペースのバランス状態を確認してください。
- さまざまな状況に応じて、ディスク容量を増やすか、一部のデータを削除するか、クラスタノードを増やす計画を立てます。
TiKV_approximate_region_size
アラートルール:
histogram_quantile(0.99, sum(rate(tikv_raftstore_region_size_bucket[1m])) by (le)) > 1073741824
説明:
TiKVスプリットチェッカーによってスキャンされるリージョンのおおよその最大サイズは、1分以内に1GBを超え続けます。
解決:
リージョンの分割速度は、書き込み速度よりも遅くなります。この問題を軽減するには、TiDBをバッチ分割をサポートするバージョン(> = 2.1.0-rc1)に更新することをお勧めします。一時的に更新できない場合は、
pd-ctl operator add split-region <region_id> --policy=approximate
を使用してリージョンを手動で分割できます。
TiFlashアラートルール
TiFlashアラートルールの詳細については、 TiFlashアラートルールを参照してください。
Binlogアラートルール
TiDB Binlogアラートルールの詳細については、 Binlogモニタリングドキュメントを参照してください。
TiCDCアラートルール
TiCDCアラートルールの詳細については、 TiCDCアラートルールを参照してください。
Node_exporterホストアラートルール
このセクションでは、Node_exporterホストのアラートルールを示します。
緊急レベルのアラート
NODE_disk_used_more_than_80%
アラートルール:
node_filesystem_avail_bytes{fstype=~"(ext.|xfs)", mountpoint!~"/boot"} / node_filesystem_size_bytes{fstype=~"(ext.|xfs)", mountpoint!~"/boot"} * 100 <= 20
説明:
本機のディスク容量が80%を超えています。
解決:
- マシンにログインし、
df -h
コマンドを実行してディスク容量の使用状況を確認します。 - さまざまな状況に応じて、ディスク容量を増やすか、一部のデータを削除するか、クラスタノードを増やす計画を立てます。
- マシンにログインし、
NODE_disk_inode_more_than_80%
アラートルール:
node_filesystem_files_free{fstype=~"(ext.|xfs)"} / node_filesystem_files{fstype=~"(ext.|xfs)"} * 100 < 20
説明:
マシン上のファイルシステムのiノード使用率が80%を超えています。
解決:
- マシンにログインし、
df -i
コマンドを実行して、ファイルシステムのノード使用状況を表示します。 - さまざまな状況に応じて、ディスク容量を増やすか、一部のデータを削除するか、クラスタノードを増やす計画を立てます。
- マシンにログインし、
NODE_disk_readonly
アラートルール:
node_filesystem_readonly{fstype=~"(ext.|xfs)"} == 1
説明:
ファイルシステムは読み取り専用であり、データを書き込むことはできません。多くの場合、ディスク障害またはファイルシステムの破損が原因です。
解決:
- マシンにログインし、ファイルを作成して、正常かどうかをテストします。
- ディスクのLEDが正常か確認してください。そうでない場合は、ディスクを交換して、マシンのファイルシステムを修復します。
クリティカルレベルのアラート
NODE_memory_used_more_than_80%
アラートルール:
(((node_memory_MemTotal_bytes-node_memory_MemFree_bytes-node_memory_Cached_bytes)/(node_memory_MemTotal_bytes)*100)) >= 80
説明:
マシンのメモリ使用量が80%を超えています。
解決:
- Grafana Node Exporterダッシュボードでホストのメモリパネルをビューし、使用済みメモリが高すぎるか、使用可能メモリが低すぎるかを確認します。
- マシンにログインし、
free -m
コマンドを実行してメモリ使用量を表示します。top
を実行して、メモリ使用量が多すぎる異常なプロセスがないかどうかを確認できます。
警告レベルのアラート
NODE_node_overload
アラートルール:
(node_load5 / count without (cpu, mode) (node_cpu_seconds_total{mode="system"})) > 1
説明:
マシンのCPU負荷は比較的高いです。
解決:
- ビュー Node ExporterダッシュボードでホストのCPU使用率と負荷平均を表示して、それらが高すぎるかどうかを確認します。
- マシンにログインして
top
を実行し、負荷平均とCPU使用率を確認し、CPU使用率が高すぎる異常なプロセスがないかどうかを確認します。
NODE_cpu_used_more_than_80%
アラートルール:
avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by(instance) * 100 <= 20
説明:
マシンのCPU使用率が80%を超えています。
解決:
- ビュー Node ExporterダッシュボードでホストのCPU使用率と負荷平均を表示して、それらが高すぎるかどうかを確認します。
- マシンにログインして
top
を実行し、負荷平均とCPU使用率を確認し、CPU使用率が高すぎる異常なプロセスがないかどうかを確認します。
NODE_tcp_estab_num_more_than_50000
アラートルール:
node_netstat_Tcp_CurrEstab > 50000
説明:
マシンの「確立」ステータスには50,000を超えるTCPリンクがあります。
解決:
- マシンにログインして
ss -s
を実行し、現在のシステムで「estab」ステータスのTCPリンクの数を確認します。 netstat
を実行して、異常なリンクがあるかどうかを確認します。
- マシンにログインして
NODE_disk_read_latency_more_than_32ms
アラートルール:
((rate(node_disk_read_time_seconds_total{device=~".+"}[5m]) / rate(node_disk_reads_completed_total{device=~".+"}[5m])) or (irate(node_disk_read_time_seconds_total{device=~".+"}[5m]) / irate(node_disk_reads_completed_total{device=~".+"}[5m])) ) * 1000 > 32
説明:
ディスクの読み取り待ち時間が32ミリ秒を超えています。
解決:
- Grafana Disk Performanceダッシュボードを表示して、ディスクのステータスを確認します。
- [ディスクレイテンシ]パネルを表示して、ディスクの読み取りレイテンシを確認します。
- [ディスクI/O使用率]パネルを表示して、I/O使用量を確認します。
NODE_disk_write_latency_more_than_16ms
アラートルール:
((rate(node_disk_write_time_seconds_total{device=~".+"}[5m]) / rate(node_disk_writes_completed_total{device=~".+"}[5m])) or (irate(node_disk_write_time_seconds_total{device=~".+"}[5m]) / irate(node_disk_writes_completed_total{device=~".+"}[5m])))> 16
説明:
ディスクの書き込み待ち時間が16msを超えています。
解決:
- Grafana Disk Performanceダッシュボードを表示して、ディスクのステータスを確認します。
- [ディスクレイテンシ]パネルを表示して、ディスクの書き込みレイテンシを確認します。
- [ディスクI/O使用率]パネルを表示して、I/O使用量を確認します。
Blackbox_exporter TCP、ICMP、およびHTTPアラートルール
このセクションでは、Blackbox_exporter TCP、ICMP、およびHTTPのアラートルールについて説明します。
緊急レベルのアラート
TiDB_server_is_down
アラートルール:
probe_success{group="tidb"} == 0
説明:
TiDBサービスポートのプローブに失敗しました。
解決:
- TiDBサービスを提供するマシンがダウンしていないか確認してください。
- TiDBプロセスが存在するかどうかを確認します。
- 監視マシンとTiDBマシン間のネットワークが正常か確認してください。
TiFlash_server_is_down
アラートルール:
probe_success{group="tiflash"} == 0
説明:
TiFlashサービスポートのプローブに失敗しました。
解決:
- TiFlashサービスを提供するマシンがダウンしていないか確認してください。
- TiFlashプロセスが存在するかどうかを確認します。
- 監視機とTiFlash機間のネットワークが正常か確認してください。
Pump_server_is_down
アラートルール:
probe_success{group="pump"} == 0
説明:
ポンプサービスポートのプローブに失敗しました。
解決:
- ポンプサービスを提供する機械がダウンしていないか確認してください。
- ポンププロセスが存在するかどうかを確認します。
- 監視機とポンプ機のネットワークが正常か確認してください。
Drainer_server_is_down
アラートルール:
probe_success{group="drainer"} == 0
説明:
Drainerサービスポートのプローブに失敗しました。
解決:
- Drainerサービスを提供するマシンがダウンしていないか確認してください。
- Drainerプロセスが存在するかどうかを確認します。
- 監視機とDrainer機のネットワークが正常か確認してください。
TiKV_server_is_down
アラートルール:
probe_success{group="tikv"} == 0
説明:
TiKVサービスポートのプローブに失敗しました。
解決:
- TiKVサービスを提供するマシンがダウンしていないか確認してください。
- TiKVプロセスが存在するかどうかを確認します。
- 監視機とTiKV機間のネットワークが正常か確認してください。
PD_server_is_down
アラートルール:
probe_success{group="pd"} == 0
説明:
PDサービスポートのプローブに失敗しました。
解決:
- PDサービスを提供するマシンがダウンしていないか確認してください。
- PDプロセスが存在するかどうかを確認します。
- 監視機とPD機間のネットワークが正常か確認してください。
Node_exporter_server_is_down
アラートルール:
probe_success{group="node_exporter"} == 0
説明:
Node_exporterサービスポートのプローブに失敗しました。
解決:
- Node_exporterサービスを提供するマシンがダウンしていないか確認してください。
- Node_exporterプロセスが存在するかどうかを確認します。
- 監視マシンとNode_exporterマシン間のネットワークが正常かどうかを確認します。
Blackbox_exporter_server_is_down
アラートルール:
probe_success{group="blackbox_exporter"} == 0
説明:
Blackbox_Exporterサービスポートのプローブに失敗しました。
解決:
- Blackbox_Exporterサービスを提供するマシンがダウンしていないかどうかを確認します。
- Blackbox_Exporterプロセスが存在するかどうかを確認します。
- 監視マシンとBlackbox_Exporterマシン間のネットワークが正常かどうかを確認します。
Grafana_server_is_down
アラートルール:
probe_success{group="grafana"} == 0
説明:
Grafanaサービスポートのプローブに失敗しました。
解決:
- Grafanaサービスを提供するマシンがダウンしていないか確認してください。
- Grafanaプロセスが存在するかどうかを確認します。
- 監視マシンとGrafanaマシン間のネットワークが正常かどうかを確認します。
Pushgateway_server_is_down
アラートルール:
probe_success{group="pushgateway"} == 0
説明:
Pushgatewayサービスポートのプローブに失敗しました。
解決:
- Pushgatewayサービスを提供するマシンがダウンしていないか確認してください。
- Pushgatewayプロセスが存在するかどうかを確認します。
- 監視機とプッシュゲートウェイ機のネットワークが正常か確認してください。
Kafka_exporter_is_down
アラートルール:
probe_success{group="kafka_exporter"} == 0
説明:
Kafka_Exporterサービスポートのプローブに失敗しました。
解決:
- Kafka_Exporterサービスを提供するマシンがダウンしていないか確認してください。
- Kafka_Exporterプロセスが存在するかどうかを確認します。
- 監視マシンとKafka_Exporterマシン間のネットワークが正常かどうかを確認します。
Pushgateway_metrics_interface
アラートルール:
probe_success{job="blackbox_exporter_http"} == 0
説明:
Pushgatewayサービスのhttpインターフェイスのプローブに失敗しました。
解決:
- Pushgatewayサービスを提供するマシンがダウンしていないか確認してください。
- Pushgatewayプロセスが存在するかどうかを確認します。
- 監視機とプッシュゲートウェイ機のネットワークが正常か確認してください。
警告レベルのアラート
BLACKER_ping_latency_more_than_1s
アラートルール:
max_over_time(probe_duration_seconds{job=~"blackbox_exporter.*_icmp"}[1m]) > 1
説明:
pingの待ち時間が1秒を超えています。
解決:
- Grafana Blackbox Exporterページで2つのノード間のpingレイテンシをビューして、高すぎるかどうかを確認します。
- Grafana Node ExporterページのTCPパネルをチェックして、パケット損失があるかどうかを確認します。
- TiDBアラートルール
- PDアラートルール
- 緊急レベルのアラート
- クリティカルレベルのアラート
- 警告レベルのアラート
- <code>PD_cluster_lost_connect_store_nums</code>
- <code>PD_cluster_low_space</code>
- <code>PD_etcd_network_peer_latency</code>
- <code>PD_tidb_handle_requests_duration</code>
- <code>PD_down_peer_region_nums</code>
- <code>PD_pending_peer_region_count</code>
- <code>PD_leader_change</code>
- <code>TiKV_space_used_more_than_80%</code>
- <code>PD_system_time_slow</code>
- <code>PD_no_store_for_making_replica</code>
- TiKVアラートルール
- 緊急レベルのアラート
- クリティカルレベルのアラート
- <code>TiKV_server_report_failure_msg_total</code>
- <code>TiKV_channel_full_total</code>
- <code>TiKV_write_stall</code>
- <code>TiKV_raft_log_lag</code>
- <code>TiKV_async_request_snapshot_duration_seconds</code>
- <code>TiKV_async_request_write_duration_seconds</code>
- <code>TiKV_coprocessor_request_wait_seconds</code>
- <code>TiKV_raftstore_thread_cpu_seconds_total</code>
- <code>TiKV_raft_append_log_duration_secs</code>
- <code>TiKV_raft_apply_log_duration_secs</code>
- <code>TiKV_scheduler_latch_wait_duration_seconds</code>
- <code>TiKV_thread_apply_worker_cpu_seconds</code>
- 警告レベルのアラート
- <code>TiKV_leader_drops</code>
- <code>TiKV_raft_process_ready_duration_secs</code>
- <code>TiKV_raft_process_tick_duration_secs</code>
- <code>TiKV_scheduler_context_total</code>
- <code>TiKV_scheduler_command_duration_seconds</code>
- <code>TiKV_coprocessor_outdated_request_wait_seconds</code>
- <code>TiKV_coprocessor_pending_request</code>
- <code>TiKV_batch_request_snapshot_nums</code>
- <code>TiKV_pending_task</code>
- <code>TiKV_low_space</code>
- <code>TiKV_approximate_region_size</code>
- TiFlashアラートルール
- Binlogアラートルール
- TiCDCアラートルール
- Node_exporterホストアラートルール
- Blackbox_exporter TCP、ICMP、およびHTTPアラートルール
- 緊急レベルのアラート
- <code>TiDB_server_is_down</code>
- <code>TiFlash_server_is_down</code>
- <code>Pump_server_is_down</code>
- <code>Drainer_server_is_down</code>
- <code>TiKV_server_is_down</code>
- <code>PD_server_is_down</code>
- <code>Node_exporter_server_is_down</code>
- <code>Blackbox_exporter_server_is_down</code>
- <code>Grafana_server_is_down</code>
- <code>Pushgateway_server_is_down</code>
- <code>Kafka_exporter_is_down</code>
- <code>Pushgateway_metrics_interface</code>
- 警告レベルのアラート
- 緊急レベルのアラート