具体可以得到哪些监控指标呢?有如下,注意所有指标都预先配置了指标前缀 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) 是对于一个已提交事务的编号,并且是一个全局唯一的编号。