TiDB Lightning 监控告警
tidb-lightning 支持使用 Prometheus 采集监控指标 (metrics)。本文主要介绍 TiDB Lightning 的监控配置与监控指标。
监控配置
如果是手动部署 TiDB Lightning,则参照以下步骤进行配置。
只要 Prometheus 能发现 tidb-lightning 和 tikv-importer 的监控地址,就能收集对应的监控指标。
监控的端口可在 tidb-lightning.toml 中配置:
[lightning]
# 用于调试和 Prometheus 监控的 HTTP 端口。输入 0 关闭。
pprof-port = 8289
...
配置 Prometheus 后,tidb-lightning 才能发现服务器。配置方法如下,将服务器地址直接添加至 scrape_configs 部分:
...
scrape_configs:
- job_name: 'tidb-lightning'
static_configs:
- targets: ['192.168.20.10:8289']
Grafana 面板
Grafana 的可视化面板可以让你在网页上监控 Prometheus 指标。
第一行:速度面板
有时导入速度会降到 0,这是为了平衡其他部分的速度,属于正常现象。
第二行:进度面板
第三行:资源使用面板
第四行:配额使用面板
第五行:读取速度面板
如果上述项的持续时间过长,则表示 TiDB Lightning 使用的磁盘运行太慢或 I/O 太忙。
第六行:存储空间面板
第七行:导入速度面板
监控指标
本节将详细描述 tidb-lightning 的监控指标。
tidb-lightning 的监控指标皆以 lightning_* 为前缀。
lightning_importer_engine(计数器)计算已开启及关闭的引擎文件数量。标签:
- type:
openclosed
- type:
lightning_idle_workers(计量表盘)计算闲置的 worker。标签:
- name:
table— 未使用的table-concurrency的数量,通常为 0,直到进程结束index— 未使用的index-concurrency的数量,通常为 0,直到进程结束region— 未使用的region-concurrency的数量,通常为 0,直到进程结束io— 未使用的io-concurrency的数量,通常接近配置值(默认为 5),接近 0 时表示磁盘运行太慢closed-engine— 已关闭但未清理的引擎数量,通常接近index-concurrency与table-concurrency的和(默认为 8),接近 0 时表示 TiDB Lightning 比 TiKV Importer 快,导致 TiDB Lightning 延迟
- name:
lightning_kv_encoder(计数器)计算已开启及关闭的 KV 编码器。KV 编码器是运行于内存的 TiDB 实例,用于将 SQL 的
INSERT语句转换成键值对。此度量的净值(开启减掉关闭)在正常情况下不应持续增长。标签:- type:
openclosed
- type:
lightning_tables(计数器)计算处理过的表及其状态。标签:
- state:表的状态,表明当前应执行的操作
pending— 等待处理written— 所有数据已编码和传输closed— 所有对应的引擎文件已关闭imported— 所有引擎文件已上传到目标集群altered_auto_inc— 自增 ID 已改checksum— 已计算校验和analyzed— 已进行统计信息分析completed— 表格已完全导入并通过验证
- result:当前操作的执行结果
success— 成功failure— 失败(未完成)
- state:表的状态,表明当前应执行的操作
lightning_engines(计数器)计算处理后引擎文件的数量以及其状态。标签:
- state:引擎文件的状态,表明当前应执行的操作
pending— 等待处理written— 所有数据已编码和传输closed— 引擎文件已关闭imported— 当前引擎文件已上传到目标集群completed— 当前引擎文件已完全导入
- result:当前操作的执行结果
success— 成功failure— 失败(未完成)
- state:引擎文件的状态,表明当前应执行的操作
lightning_chunks(计数器)计算处理过的 Chunks 及其状态。标签:
- state: 单个 Chunk 的状态,表明该 Chunk 当前所处的阶段
estimated— (非状态)当前任务中 Chunk 的数量pending— 已载入但未执行running— 正在编码和发送数据finished— 该 Chunk 已处理完毕failed— 处理过程中发生错误
- state: 单个 Chunk 的状态,表明该 Chunk 当前所处的阶段
lightning_import_seconds(直方图)导入每个表所需时间的直方图。
lightning_row_read_bytes(直方图)单行 SQL 数据大小的直方图。
lightning_row_encode_seconds(直方图)解码单行 SQL 数据到键值对所需时间的直方图。
lightning_row_kv_deliver_seconds(直方图)发送一组与单行 SQL 数据对应的键值对所需时间的直方图。
lightning_block_deliver_seconds(直方图)每个键值对中的区块传送到
tikv-importer所需时间的直方图。lightning_block_deliver_bytes(直方图)发送到 Importer 的键值对中区块(未压缩)的大小的直方图。
lightning_chunk_parser_read_block_seconds(直方图)数据文件解析每个 SQL 区块所需时间的直方图。
lightning_checksum_seconds(直方图)计算表中 Checksum 所需时间的直方图。
lightning_apply_worker_seconds(直方图)获取闲置 worker 等待时间的直方图 (参见
lightning_idle_workers计量表盘)。标签:- name:
tableindexregionioclosed-engine
- name:






