TiFlash 集群监控

    目前 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 监控信息较不完善,如有需要推荐使用 v4.0.5 或更高版本的 TiDB 集群。

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

    • 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 为其他错误。
    • 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 实例使用的线程数峰值。
    • Min TSO:每个 TiFlash 实例上正在运行的查询语句中的最小 TSO,该值确保具有最小 TSO 的查询可以被调度。如果当前没有正在运行的查询,则该值为 整数型最大值。
    • 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 消耗的时间。
    • Write Command OPS:所有 TiFlash 实例存储层每秒收到的写请求数量。
    • Write Amplification:每个 TiFlash 实例写放大倍数(实际磁盘写入量/逻辑数据写入量)。total 为自此次启动以来的写放大倍数,5min 为最近 5 分钟内的写放大倍数。
    • Read Tasks OPS:每个 TiFlash 实例每秒存储层内部读取任务的数量。
    • 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 实例磁盘读操作的流量。

    注意

    Storage Write Stall

    • Write & Delta Management Throughput:所有实例写入及数据整理的吞吐量。
      • throughput_write 表示通过 Raft 进行数据同步的吞吐量。
      • 表示数据整理的吞吐量。
      • total_write 表示自上次启动以来的总写入字节数。
      • 表示自上次启动以来数据整理的总字节数。
    • Write Stall Duration:每个实例写入和移除 Region 数据产生的卡顿时长。
    • Write Throughput By Instance:每个实例写入数据的吞吐量,包括 apply Raft 数据日志以及 Raft 快照的写入吞吐量。
    • Write Command OPS By Instance:每个实例收到各种命令的总计数。
      • write block 表示通过 Raft 同步数据日志。
      • 表示从该实例中删除一些 Region 或移动一些 Region 到该实例中。
      • ingest 表示这些 Region 的快照被应用到这个实例中。
    • Read Index OPS:每个 TiFlash 实例每秒触发 read_index 请求的次数,等于请求触发的 Region 总数。
    • Wait Index Duration:所有 TiFlash 实例在进行 wait_index 消耗的时间,即拿到 read_index 请求后,等待本地的 Region index >= read_index 所花费的时间。