-
Notifications
You must be signed in to change notification settings - Fork 7.6k
Prometheus QuickStart
Canal server 性能指标监控基于prometheus的实现。
关于prometheus,参见官网
-
安装并部署对应平台的prometheus,参见官方guide
-
配置prometheus.yml,添加canal的job,示例:
- job_name: 'canal'
static_configs:
- targets: ['localhost:11112'] //端口配置即为canal.properties中的canal.metrics.pull.port
-
启动prometheus与canal server
-
安装与部署grafana,推荐使用新版本(5.2)。
-
启动grafana-server,使用用户admin与密码admin登录localhost:3000 (默认配置下)。
-
进入dashboard 'Canal instances', 在'datasource'下拉框中选择刚才配置的prometheus datasource, 然后'destination'下拉框中就可以切换instance了(如果没出现instances列表就刷新下页面), just enjoy it.
指标 | 说明 | 单位 | 精度 |
---|---|---|---|
canal_instance_transactions | instance接收transactions计数 | - | - |
canal_instance | instance基本信息 | - | - |
canal_instance_subscriptions | instance订阅数量 | - | - |
canal_instance_publish_blocking_time | instance dump线程提交到异步解析队列过程中的阻塞时间(仅parallel解析模式) | ms | ns |
canal_instance_received_binlog_bytes | instance接收binlog字节数 | byte | - |
canal_instance_parser_mode | instance解析模式(是否开启parallel解析) | - | - |
canal_instance_client_packets | instance client请求次数的计数 | - | - |
canal_instance_client_bytes | 向instance client发送数据包字节计数 | byte | - |
canal_instance_client_empty_batches | 向instance client发送get接口的空结果计数 | - | - |
canal_instance_client_request_error | instance client请求失败计数 | - | - |
canal_instance_client_request_latency | instance client请求的响应时间概况 | - | - |
canal_instance_sink_blocking_time | instance sink线程put数据至store的阻塞时间 | ms | ns |
canal_instance_store_produce_seq | instance store接收到的events sequence number | - | - |
canal_instance_store_consume_seq | instance store成功消费的events sequence number | - | - |
canal_instance_store | instance store基本信息 | - | - |
canal_instance_store_produce_mem | instance store接收到的所有events占用内存总量 | byte | - |
canal_instance_store_consume_mem | instance store成功消费的所有events占用内存总量 | byte | - |
canal_instance_put_rows | store put操作完成的table rows | - | - |
canal_instance_get_rows | client get请求返回的table rows | - | - |
canal_instance_ack_rows | client ack操作释放的table rows | - | - |
canal_instance_traffic_delay | server与MySQL master的延时 | ms | ms |
canal_instance_put_delay | store put操作events的延时 | ms | ms |
canal_instance_get_delay | client get请求返回events的延时 | ms | ms |
canal_instance_ack_delay | client ack操作释放events的延时 | ms | ms |
指标 | 简述 | 多指标 |
---|---|---|
Basic | Canal instance 基本信息。 | 是 |
Network bandwith | 网络带宽。包含inbound(canal server读取binlog的网络带宽)和outbound(canal server返回给canal client的网络带宽) | 是 |
Delay | Canal server与master延时;store 的put, get, ack操作对应的延时。 | 是 |
Blocking | sink线程blocking占比;dump线程blocking占比(仅parallel mode)。 | 是 |
TPS(transaction) | Canal instance 处理binlog的TPS,以MySQL transaction为单位计算。 | 否 |
TPS(tableRows) | 分别对应store的put, get, ack操作针对数据表变更行的TPS | 是 |
Client requests | Canal client请求server的请求数统计,结果按请求类型分类(比如get/ack/sub/rollback等)。 | 否 |
Response time | Canal client请求server的响应时间统计。 | 否 |
Empty packets | Canal client请求server返回空结果的统计。 | 是 |
Store remain events | Canal instance ringbuffer中堆积的events数量。 | 否 |
Store remain mem | Canal instance ringbuffer中堆积的events内存使用量。 | 否 |
Client QPS | client发送请求的QPS,按GET与CLIENTACK分类统计 | 是 |
The Java client includes collectors for garbage collection, memory pools, JMX, classloading, and thread counts. These can be added individually or just use the DefaultExports to conveniently register them.
DefaultExports.initialize();
clamp_max(rate(canal_instance_sink_blocking_time{destination="example"}[2m]), 1000) / 10
sink线程blocking时间片比例(向store中put events时)。若idle占比很高,则store总体上处于满的状态,client的consume速度低于server的produce速度
clamp_max(rate(canal_instance_publish_blocking_time{destination="example"}[2m]), 1000) / 10
dump线程blocking时间片比例(仅parallel mode, dump线程向disruptor发布event时)。若idle占比较高:
1. Sinking blocking ratio也很高,则瓶颈是因为client的consume速度相对较慢。
2. Sinking blocking ratio较低,那么server端parser是性能瓶颈,可参考Performance进行tuning.
canal_instance_traffic_delay{destination="example"} / 1000
Server与MySQL master之间的延时。
canal_instance_put_delay{destination="example"} / 1000
Store put操作时间点的延时。
canal_instance_get_delay{destination="example"} / 1000
Client get操作时间点的延时。
canal_instance_ack_delay{destination="example"} / 1000
Client ack操作时间点的延时。
Note: delay的准确度依赖于master与canal server间的ntp同步。当binlog execTime超过canal server当前时间戳,则delay为0.
rate(canal_instance_received_binlog_bytes{destination="example"}[2m]) / 1024
Dump线程读取binlog所占用带宽。当'Sink线程空闲比'与'Dump线程空闲比'都很低,delay却比较高的情况,请查看binlog接收速率是否符合预期。
rate(canal_instance_client_bytes{destination="example"}[2m]) / 1024
向Instance client发送格式化binlog所占用的带宽。MySQL低负载时,client get所返回的空包同样会占用不少的带宽。
rate(canal_instance_transactions{destination="example"}[2m])
Canal instance处理transaction的TPS,以TRANSACTION_END事件为基准。
rate(canal_instance_put_rows{destination="example"}[2m])
对应store put操作的tableRows TPS.
rate(canal_instance_get_rows{destination="example"}[2m])
对应client get操作的tableRows TPS.
rate(canal_instance_ack_rows{destination="example"}[2m])
对应client ack操作的tableRows TPS.
canal_instance_client_packets{destination="example"}
Netty server处理的client requests,以packetType为label分类统计。
rate(canal_instance_client_empty_batches{destination="example"}[2m])
client get返回每秒空包量。如果正常traffic下,该值很大,考虑使用connector的timeout机制,节省资源。
rate(canal_instance_client_packets{destination="example", packetType="GET"}[2m])
nonempty, 作为empty rate的参照。
canal_instance_client_request_latency_bucket{destination="example"}
Histogram, client请求响应时间统计。关于histogram.
canal_instance_store_produce_seq{destination="example"} - canal_instance_store_consume_seq{destination="example"}
Event store内未ack的events数量,实时性受scrape_interval影响。
(canal_instance_store_produce_mem{destination="example"} - canal_instance_store_consume_mem{destination="example"}) / 1024
Event store内未ack的events所占用内存大小,实时性受scrape_interval影响。
rate(canal_instance_client_packets{destination="example",packetType="GET"}[2m])
GET类型QPS.
rate(canal_instance_client_packets{destination="example",packetType="CLIENTACK"}[2m])
CLIENTACK类型QPS.
canal_instance{destination="example"}
canal_instance_parser_mode{destination="example"}
canal_instance_store{destination="example"}
通过labels展示状态信息。
- Home
- Introduction / 简介
- Quick Start
- Client Guide
- Canal Admin
- Canal Performance
- AdminGuide
- DevGuide
- BinlogChange(Mysql5.6)
- BinlogChange(MariaDB)
- BinlogChange(MySQL8)
- TableMetaTSDB
- ReleaseNotes
- Download
- FAQ / 常见问题解答