MySQL Binlog 解析工具 Maxwell 详解 (6)

具体可以得到哪些监控指标呢?有如下,注意所有指标都预先配置了指标前缀 metrics_prefix

指标 类型 说明
messages.succeeded   Counters   成功发送到kafka的消息数量  
messages.failed   Counters   发送失败的消息数量  
row.count   Counters   已处理的binlog行数,注意并非所有binlog都发往kafka  
messages.succeeded.meter   Meters   消息成功发送到Kafka的速率  
messages.failed.meter   Meters   消息发送失败到kafka的速率  
row.meter   Meters   行(row)从binlog连接器到达maxwell的速率  
replication.lag   Gauges   从数据库事务提交到Maxwell处理该事务之间所用的时间(毫秒)  
inflightmessages.count   Gauges   当前正在处理的消息数(等待来自目的地的确认,或在消息之前)  
message.publish.time   Timers   向kafka发送record所用的时间(毫秒)  
message.publish.age   Timers   从数据库产生事件到发送到Kafka之间的时间(毫秒),精确度为+/-500ms  
replication.queue.time   Timers   将一个binlog事件送到处理队列所用的时间(毫秒)  

上述有些指标为kafka特有的,并不支持所有的生产者。

实验一番,通过 http 方式获取监控指标

docker run -p 8080:8080 -it --rm zendesk/maxwell bin/maxwell --user='maxwell' \ --password='123456' --host='10.100.97.246' --producer=kafka \ --kafka.bootstrap.servers='10.100.97.246:9092' --kafka_topic=maxwell --log_level=debug \ --metrics_type=http --metrics_jvm=true --http_port=8080

上面的配置大部分与前面的相同,不同的有 -p 8080:8080 docker端口映射,以及 --metrics_type=http --metrics_jvm=true --http_port=8080,配置了通过http方式发布指标,启用收集JVM信息,端口为8080,之后可以通过 :8080/metrics 便可获取所有的指标

http 方式有四种后缀,分别对应四种不同的格式

endpoint 说明
/metrics   所有指标以JSON格式返回  
/prometheus   所有指标以Prometheus格式返回(Prometheus是一套开源的监控&报警&时间序列数据库的组合)  
/healthcheck   返回Maxwell过去15分钟是否健康  
/ping   简单的测试,返回 pong  

如果是通过 JMX 的方式收集Maxwell监控指标,可以 JAVA_OPTS 环境变量配置JMX访问权限

export JAVA_OPTS="-Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=9010 \ -Dcom.sun.management.jmxremote.local.only=false \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false \ -Djava.rmi.server.hostname=10.100.97.246" 多个Maxwell实例

在不同的配置下,Maxwell可以在同一个主服务器上运行多个实例。如果希望让生产者以不同的配置运行,例如将来自不同组的表(table)的事件投递到不同的Topic中,这将非常有用。Maxwell的每个实例都必须配置一个唯一的client_id,以便区分的binlog位置。

GTID 支持

Maxwell 从1.8.0版本开始支持基于GTID的复制(GTID-based replication),在GTID模式下,Maxwell将在主机更改后透明地选择新的复制位置。

什么是GTID Replication?

GTID (Global Transaction ID) 是对于一个已提交事务的编号,并且是一个全局唯一的编号。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjggp.html