TiFlash 集群监控

使用 TiUP 部署 TiDB 集群时,一键部署监控系统 (Prometheus & Grafana),监控架构参见 TiDB 监控框架概述

目前 Grafana Dashboard 整体分为 PD、TiDB、TiKV、Node_exporter、Overview 等。

TiFlash 面板一共包括 TiFlash-SummaryTiFlash-Proxy-SummaryTiFlash-Proxy-Details。通过面板上的指标,可以了解 TiFlash 当前的状态。其中 TiFlash-Proxy-SummaryTiFlash-Proxy-Details 主要为 TiFlash 的 Raft 层信息,其监控指标信息可参考 TiKV 监控指标详解

TiFlash 监控指标 - 图1

注意

低版本的 TiFlash 监控信息较不完善,如有需要推荐使用 v4.0.5 或更高版本的 TiDB 集群。

以下为 TiFlash-Summary 默认的监控信息:

Server

  • Store size:每个 TiFlash 实例的使用的存储空间的大小。
  • Available size:每个 TiFlash 实例的可用的存储空间的大小。
  • Capacity size:每个 TiFlash 实例的存储容量的大小。
  • Uptime:自上次重启以来 TiFlash 正常运行的时间。
  • Memory:每个 TiFlash 实例内存的使用情况。
  • CPU Usage:每个 TiFlash 实例 CPU 的使用率。
  • FSync OPS:每个 TiFlash 实例每秒进行 fsync 操作的次数。
  • File Open OPS:每个 TiFlash 实例每秒进行 open 操作的次数。
  • Opened File Count:当前每个 TiFlash 实例打开的文件句柄数。

TiFlash 监控指标 - 图2

注意

Store size、FSync OPS、File Open OPS、Opened File Count 目前仅包含了 TiFlash 存储层的统计指标,未包括 TiFlash-Proxy 内的信息。

Coprocessor

  • Request QPS:所有 TiFlash 实例收到的 coprocessor 请求数量。其中 batch 是 batch 请求数量,batch_cop 是 batch 请求中的 coprocessor 请求数量,cop 是直接通过 coprocessor 接口发送的 coprocessor 请求数量,cop_dag 是所有 coprocessor 请求中 dag 请求数量,super_batch 是开启 super batch 特性的请求数量。
  • Executor QPS:所有 TiFlash 实例收到的请求中,每种 dag 算子的数量,其中 table_scan 是扫表算子,selection 是过滤算子,aggregation 是聚合算子,top_n 是 TopN 算子,limit 是 limit 算子。
  • Request Duration:所有 TiFlash 实例处理 coprocessor request 总时间,总时间为接收到该 coprocessor 请求至请求应答完毕的时间。
  • Error QPS:所有 TiFlash 实例处理 coprocessor 请求的错误数量。其中 meet_lock 为读取的数据有锁,region_not_found 为 Region 不存在,epoch_not_match 为读取的 Region epoch 与本地不一致,kv_client_error 为与 TiKV 通信产生的错误,internal_error 为 TiFlash 内部系统错误,other 为其他错误。
  • Request Handle Duration:所有 TiFlash 实例处理 coprocessor 请求处理时间,处理时间为该 coprocessor 请求开始执行到执行结束的时间。
  • Response Bytes/Seconds:所有 TiFlash 实例应答总字节数。
  • Cop task memory usage:所有 TiFlash 实例处理 coprocessor 请求占用的总内存。
  • Handling Request Number:所有 TiFlash 实例正在处理的 coprocessor 请求数量之和。请求的分类与 Request QPS 中的分类相同。
  • Threads of RPC:每个 TiFlash 实例使用的实时 RPC 线程数。
  • Max Threads of RPC:最近一段时间每个 TiFlash 实例使用的 RPC 线程数峰值。
  • Threads:每个 TiFlash 实例使用的实时线程数。
  • Max Threads:最近一段时间每个 TiFlash 实例使用的线程数峰值。

Task Scheduler

  • Min TSO:每个 TiFlash 实例上正在运行的查询语句中的最小 TSO,该值确保具有最小 TSO 的查询可以被调度。如果当前没有正在运行的查询,则该值为 uint64 整数型最大值。
  • Estimated Thread Usage and Limit:每个 TiFlash 实例上正在运行的所有任务占用的线程估值,以及该实例上任务调度器设置的估算线程用量的软限制和硬限制。
  • Active and Waiting Queries Count:每个 TiFlash 实例上正在运行的查询数量和正在等待的查询数量。
  • Active and Waiting Tasks Count:每个 TiFlash 实例上正在运行的任务数量和正在等待的任务数量。
  • Hard Limit Exceeded Count:每个 TiFlash 实例上运行中任务的估算线程用量超过了设置的硬限制的次数。
  • Task Waiting Duration:每个 TiFlash 实例上任务从初始化到被调度的等待时长。

DDL

  • Schema Version:每个 TiFlash 实例目前缓存的 schema 版本。
  • Schema Apply OPM:所有 TiFlash 实例每分钟 apply 同步 TiDB schema diff 的次数。diff apply 是正常的单次 apply 过程,如果 diff apply 失败,则 failed apply +1,并回退到 full apply,拉取最新的 schema 信息以更新 TiFlash 的 schema 版本。
  • Schema Internal DDL OPM:所有 TiFlash 实例每分钟执行的内部 DDL 次数。
  • Schema Apply Duration:所有 TiFlash 实例 apply schema 消耗的时间。

Storage

  • Write Command OPS:所有 TiFlash 实例存储层每秒收到的写请求数量。
  • Write Amplification:每个 TiFlash 实例写放大倍数(实际磁盘写入量/逻辑数据写入量)。total 为自此次启动以来的写放大倍数,5min 为最近 5 分钟内的写放大倍数。
  • Read Tasks OPS:每个 TiFlash 实例每秒存储层内部读取任务的数量。
  • Rough Set Filter Rate:每个 TiFlash 实例最近 1 分钟内读取的 packet 数被存储层粗糙索引过滤的比例。
  • Internal Tasks OPS:所有 TiFlash 实例每秒进行内部数据整理任务的次数。
  • Internal Tasks Duration:所有 TiFlash 实例进行内部数据整理任务消耗的时间。
  • Page GC Tasks OPM:所有 TiFlash 实例每分钟进行 Delta 部分数据整理任务的次数。
  • Page GC Tasks Duration:所有 TiFlash 实例进行 Delta 部分数据整理任务消耗的时间分布。
  • Disk Write OPS:所有 TiFlash 实例每秒进行磁盘写入的次数。
  • Disk Read OPS:所有 TiFlash 实例每秒进行磁盘读取的次数。
  • Write flow:所有 TiFlash 实例磁盘写操作的流量。
  • Read flow:所有 TiFlash 实例磁盘读操作的流量。

TiFlash 监控指标 - 图3

注意

目前这部分监控指标仅包含了 TiFlash 存储层的统计指标,未包括 TiFlash-Proxy 内的信息。

Storage Write Stall

  • Write & Delta Management Throughput:所有实例写入及数据整理的吞吐量。
    • throughput_write 表示通过 Raft 进行数据同步的吞吐量。
    • throughput_delta-management 表示数据整理的吞吐量。
    • total_write 表示自上次启动以来的总写入字节数。
    • total_delta-management 表示自上次启动以来数据整理的总字节数。
  • Write Stall Duration:每个实例写入和移除 Region 数据产生的卡顿时长。
  • Write Throughput By Instance:每个实例写入数据的吞吐量,包括 apply Raft 数据日志以及 Raft 快照的写入吞吐量。
  • Write Command OPS By Instance:每个实例收到各种命令的总计数。
    • write block 表示通过 Raft 同步数据日志。
    • delete_range 表示从该实例中删除一些 Region 或移动一些 Region 到该实例中。
    • ingest 表示这些 Region 的快照被应用到这个实例中。

Raft

  • Read Index OPS:每个 TiFlash 实例每秒触发 read_index 请求的次数,等于请求触发的 Region 总数。
  • Read Index Duration:所有 TiFlash 实例在进行 read_index 消耗的时间,主要消耗在于和 Region leader 的交互和重试时间。
  • Wait Index Duration:所有 TiFlash 实例在进行 wait_index 消耗的时间,即拿到 read_index 请求后,等待本地的 Region index >= read_index 所花费的时间。