外观
TiDB 监控指标参考
指标命名规范
TiDB 监控指标遵循以下命名规范:
- component:组件名称,如 tidb、tikv、pd、tiflash 等
- subsystem:子系统名称,如 server、executor、storage 等
- metric_name:指标名称,如 qps、tps、connections 等
TiDB 指标
服务器指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| tidb_server_qps | Counter | TiDB 每秒处理的查询数 | 次/秒 | - |
| tidb_server_tps | Counter | TiDB 每秒处理的事务数 | 次/秒 | - |
| tidb_server_connections | Gauge | 当前 TiDB 连接数 | 个 | > 80% 最大连接数 |
| tidb_server_max_connections | Gauge | TiDB 最大连接数 | 个 | - |
| tidb_server_connection_count | Counter | TiDB 连接总数 | 个 | - |
SQL 执行指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| tidb_executor_stmt_duration_seconds | Histogram | SQL 语句执行延迟 | 秒 | P99 > 1 秒 |
| tidb_executor_error_total | Counter | SQL 执行错误总数 | 个 | 错误率 > 0.1% |
| tidb_executor_retry_total | Counter | SQL 重试总数 | 个 | - |
| tidb_executor_scan_keys_total | Counter | 扫描的 Key 总数 | 个 | - |
| tidb_executor_mem_usage_bytes | Gauge | 执行器内存使用量 | 字节 | > 80% 内存总量 |
事务指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| tidb_txn_duration_seconds | Histogram | 事务执行延迟 | 秒 | P99 > 5 秒 |
| tidb_txn_retry_total | Counter | 事务重试总数 | 个 | - |
| tidb_txn_write_conflict_total | Counter | 事务写入冲突总数 | 个 | - |
| tidb_txn_commit_total | Counter | 事务提交总数 | 个 | - |
| tidb_txn_rollback_total | Counter | 事务回滚总数 | 个 | - |
存储引擎指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| tidb_storage_read_bytes_total | Counter | 存储读取字节数 | 字节 | - |
| tidb_storage_write_bytes_total | Counter | 存储写入字节数 | 字节 | - |
| tidb_storage_read_keys_total | Counter | 存储读取 Key 数 | 个 | - |
| tidb_storage_write_keys_total | Counter | 存储写入 Key 数 | 个 | - |
内存管理指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| tidb_mem_quota_query_bytes | Gauge | 查询内存配额 | 字节 | - |
| tidb_mem_current_bytes | Gauge | 当前内存使用量 | 字节 | > 80% 内存总量 |
| tidb_mem_usage_bytes | Gauge | 内存使用量 | 字节 | > 80% 内存总量 |
TiKV 指标
服务器指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| tikv_server_throughput | Counter | TiKV 吞吐量 | 字节/秒 | - |
| tikv_server_connections | Gauge | 当前 TiKV 连接数 | 个 | - |
| tikv_server_incoming_connections | Counter | 传入连接总数 | 个 | - |
存储引擎指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| tikv_engine_size_bytes | Gauge | RocksDB 引擎大小 | 字节 | - |
| tikv_engine_write_stall | Gauge | RocksDB 写入停滞状态 | 0/1 | = 1 |
| tikv_engine_read_bytes_total | Counter | 引擎读取字节数 | 字节 | - |
| tikv_engine_write_bytes_total | Counter | 引擎写入字节数 | 字节 | - |
| tikv_engine_sst_files_count | Gauge | SST 文件数量 | 个 | - |
Raft 指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| tikv_raft_logs_applied_total | Counter | Raft 日志应用总数 | 个 | - |
| tikv_raft_logs_committed_total | Counter | Raft 日志提交总数 | 个 | - |
| tikv_raft_logs_pending_total | Gauge | 待处理的 Raft 日志数 | 个 | > 1000 |
| tikv_raft_apply_latency_seconds | Histogram | Raft 应用延迟 | 秒 | P99 > 0.1 秒 |
| tikv_raft_leader_count | Gauge | Raft Leader 数量 | 个 | - |
Region 指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| tikv_store_region_count | Gauge | 存储的 Region 数量 | 个 | - |
| tikv_store_leader_count | Gauge | 存储的 Leader 数量 | 个 | - |
| tikv_region_written_bytes_total | Counter | Region 写入字节数 | 字节 | - |
| tikv_region_read_bytes_total | Counter | Region 读取字节数 | 字节 | - |
资源使用指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| tikv_process_cpu_seconds_total | Counter | CPU 使用率 | 秒 | > 80% |
| tikv_process_memory_bytes | Gauge | 内存使用量 | 字节 | > 85% |
| tikv_disk_used_bytes | Gauge | 磁盘使用量 | 字节 | > 80% |
| tikv_disk_total_bytes | Gauge | 磁盘总量 | 字节 | - |
| tikv_network_bytes_total | Counter | 网络流量 | 字节 | - |
PD 指标
服务器指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| pd_server_is_leader | Gauge | 是否为 PD Leader | 0/1 | - |
| pd_server_start_time_seconds | Gauge | 服务器启动时间 | 秒 | - |
集群指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| pd_cluster_region_count | Gauge | 集群 Region 总数 | 个 | - |
| pd_cluster_store_count | Gauge | 集群存储节点数 | 个 | - |
| pd_cluster_replica_count | Gauge | 集群副本总数 | 个 | - |
调度指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| pd_scheduler_operator_total | Counter | 调度操作总数 | 个 | - |
| pd_scheduler_operator_create | Counter | 创建的调度操作数 | 个 | - |
| pd_scheduler_operator_finish | Counter | 完成的调度操作数 | 个 | - |
| pd_scheduler_operator_timeout | Counter | 超时的调度操作数 | 个 | - |
| pd_scheduler_leader_schedule_limit | Gauge | Leader 调度限制 | 个 | - |
| pd_scheduler_region_schedule_limit | Gauge | Region 调度限制 | 个 | - |
热点指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| pd_hot_region | Gauge | 热点 Region 数量 | 个 | > 10 |
| pd_hot_region_read_bytes_total | Counter | 热点 Region 读取字节数 | 字节 | - |
| pd_hot_region_write_bytes_total | Counter | 热点 Region 写入字节数 | 字节 | - |
TSO 指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| pd_tso_server_id | Gauge | TSO 服务器 ID | 个 | - |
| pd_tso_timestamp | Gauge | TSO 时间戳 | 毫秒 | - |
| pd_tso_save_interval_seconds | Gauge | TSO 保存间隔 | 秒 | - |
TiFlash 指标
服务器指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| tiflash_server_uptime_seconds | Gauge | 服务器运行时间 | 秒 | - |
| tiflash_server_connections | Gauge | 当前连接数 | 个 | - |
存储引擎指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| tiflash_storage_data_size_bytes | Gauge | 存储数据大小 | 字节 | - |
| tiflash_storage_index_size_bytes | Gauge | 索引大小 | 字节 | - |
| tiflash_storage_rows_count | Gauge | 行数 | 个 | - |
查询执行指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| tiflash_query_duration_seconds | Histogram | 查询执行延迟 | 秒 | P99 > 5 秒 |
| tiflash_query_rows_read | Counter | 查询读取行数 | 个 | - |
| tiflash_query_bytes_read | Counter | 查询读取字节数 | 字节 | - |
数据同步指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| tiflash_replica_sync_delay_seconds | Gauge | 副本同步延迟 | 秒 | > 300 秒 |
| tiflash_replica_sync_bytes_total | Counter | 副本同步字节数 | 字节 | - |
| tiflash_replica_count | Gauge | 副本数量 | 个 | - |
TiCDC 指标
服务器指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| ticdc_server_uptime_seconds | Gauge | 服务器运行时间 | 秒 | - |
| ticdc_server_connections | Gauge | 当前连接数 | 个 | - |
同步任务指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| ticdc_processor_count | Gauge | 处理器数量 | 个 | - |
| ticdc_processor_checkpoint_ts | Gauge | 处理器检查点时间戳 | 毫秒 | - |
| ticdc_processor_resolved_ts | Gauge | 处理器已解析时间戳 | 毫秒 | - |
| ticdc_processor_lag_seconds | Gauge | 处理器延迟 | 秒 | > 300 秒 |
事件处理指标
| 指标名称 | 类型 | 描述 | 单位 | 推荐告警阈值 |
|---|---|---|---|---|
| ticdc_events_accepted_total | Counter | 接受的事件总数 | 个 | - |
| ticdc_events_filtered_total | Counter | 过滤的事件总数 | 个 | - |
| ticdc_events_output_total | Counter | 输出的事件总数 | 个 | - |
| ticdc_events_latency_seconds | Histogram | 事件处理延迟 | 秒 | P99 > 1 秒 |
监控指标使用最佳实践
指标选择
- 核心指标优先:优先监控核心业务指标,如 QPS、TPS、延迟等
- 分层监控:从集群、组件、实例三个层次监控指标
- 关联指标:同时监控相关指标,便于根因分析
- 趋势分析:关注指标的变化趋势,而非单次值
告警设置
- 合理的阈值:根据业务需求和历史数据设置合理的告警阈值
- 分级告警:设置不同级别的告警,如 Critical、Warning、Info
- 告警抑制:避免告警风暴,设置合理的告警抑制规则
- 告警通知:配置多种告警通知渠道,确保告警及时送达
指标可视化
- 仪表盘设计:设计清晰、直观的仪表盘
- 关键指标突出:突出显示关键指标,便于快速发现问题
- 多维度展示:从不同维度展示指标,如时间、组件、实例等
- 趋势图:使用趋势图展示指标变化,便于分析趋势
指标存储
- 合理的 retention:根据监控需求设置合理的数据保留时间
- 采样和聚合:对历史数据进行采样和聚合,减少存储开销
- 冷热分离:对热点数据和冷数据使用不同的存储策略
常见问题(FAQ)
Q1: 如何查看 TiDB 集群的所有指标?
A1: 可以通过以下方式查看 TiDB 集群的所有指标:
- 通过 HTTP API:访问各组件的 metrics 端点,如
http://tidb-host:10080/metrics、http://tikv-host:20180/metrics、http://pd-host:2379/metrics - 通过 Prometheus UI:访问 Prometheus UI,使用查询语言查看指标
- 通过 Grafana:使用预配置的 Grafana Dashboard 查看指标
Q2: 如何选择需要监控的核心指标?
A2: 选择核心指标的建议:
- 业务层面:QPS、TPS、延迟、错误率等
- 资源层面:CPU、内存、磁盘、网络等
- 组件层面:各组件的关键指标,如 TiKV 的 Raft 状态、PD 的调度状态等
- 根据业务需求:根据实际业务需求选择相关指标
Q3: 如何设置合理的告警阈值?
A3: 设置合理告警阈值的建议:
- 基于历史数据:分析历史数据,找出正常范围
- 基于业务需求:根据业务的敏感度设置阈值
- 逐步调整:先设置较宽松的阈值,然后根据实际情况逐步调整
- 考虑季节性:考虑业务的季节性变化,调整阈值
Q4: 如何使用监控指标进行故障排查?
A4: 使用监控指标进行故障排查的步骤:
- 发现异常:通过告警或监控仪表盘发现异常指标
- 定位范围:根据异常指标定位到具体的组件或实例
- 关联分析:分析相关指标,找出根因
- 验证假设:根据分析结果提出假设,然后验证
- 解决问题:根据根因解决问题
Q5: 如何优化监控性能?
A5: 优化监控性能的建议:
- 减少指标数量:只监控必要的指标,减少指标数量
- 调整采集间隔:根据指标的重要性调整采集间隔
- 优化存储:使用高效的存储方案,如 Prometheus 搭配 Thanos
- 合理的查询:优化 PromQL 查询,避免复杂查询
- 水平扩展:根据需要水平扩展 Prometheus 实例
Q6: 如何监控 TiDB 集群的容量?
A6: 监控 TiDB 集群容量的建议:
- 监控存储容量:监控 TiKV 节点的磁盘使用率
- 监控 Region 数量:监控集群的 Region 总数
- 监控连接数:监控 TiDB 节点的连接数
- 监控 QPS/TPS:监控集群的 QPS 和 TPS 增长趋势
- 设置容量告警:设置容量告警,及时发现容量瓶颈
