我正在尝试使用JMX来监视在分布式工作服上运行的一组连接器任务。唯一可用的JMX输出似乎是Kafka Consumer MBeans。不幸的是,在工作人员任务使用的Kafka Consumer上设置一个可识别的client.id
似乎是不可能的。
文档建议在connector configuration上使用client.id
。在连接器配置上设置此选项无效。在工作程序配置(属性文件)上设置此选项仅将其设置为工作程序用于配置和状态主题。
查看the code,接收方消费者似乎使用前缀为consumer.
的工作人员配置。这样做有效,但这是在工作者的所有任务中设置的单个客户端ID,使得监视单个消费者,甚至不可能监视特定连接器。
默认行为将使用使用者中的默认client.id
,即使用consumer-n
,其中n
是递增的数字。 JMX输出不包括此使用者所属的groupd.id
,因此无法将使用者连接与该工作者中运行的连接器相关联。
没有额外的JMX输出(如groupd.id
和连接器名称),或更好的默认client.id
我无法看到如何使用JMX监控Kafka连接器。
答案 0 :(得分:1)
首先,我认为设置的位置存在一些混淆。有两种类型的配置:Corker和Connector。可以在两者中使用少量配置(例如,允许每个连接器覆盖默认的工作者级别配置),但是大多数情况下它们是不同的:工作者级别配置控制整个过程如何操作,而连接器配置特定于单个连接器。
逻辑上,单个Connect群集将运行许多您可能想要独立处理的客户端,我认为这是您的问题所在。客户端类型包括源任务(生产者),宿任务(消费者),以及框架级客户端(工作者)。
您提供的第一个链接是Kafka Connect worker 配置。 client.id
出现在那里,因为工作人员通过消费者使用的相同组协调协议相互协调。因此,您在Worker配置中指定的client.id
类似于my-kafka-connect-cluster-worker
,表示与 Worker 操作关联的流量与Connect群集的worker相关联。
你是正确的,你可以覆盖consumer.client.id
(或实际上任何生产者或消费者配置),它将全面适用于在该工作者中创建的所有客户。但正如你正确指出的那样,这将是统一的。
简短的回答是,目前这不容易被覆盖,虽然修复应该是微不足道的(绝对值得制作)。 creates producers和creates consumers应至少使用工作组ID和任务ID来生成默认客户端ID并将其添加到配置中的代码(2的组合保证唯一ID,即使您针对同一个Kafka群集运行多个连接群集。
有JIRA filed解决此问题。
答案 1 :(得分:0)
从Apache Kafka 2.3和KIP-411开始,client.id
设置为连接器ID +任务,如此处所示,其中一个连接器有三个任务,使用三个分区,每个任务有十个分区:
$ docker exec -it kafka kafka-consumer-groups --bootstrap-server localhost:29092 --describe --group connect-sink-elastic-orders-00-A
GROUP TOPIC PARTITION CLIENT-ID
connect-sink-elastic-orders-00-A orders2 0 connector-consumer-sink-elastic-orders-00-A-0
connect-sink-elastic-orders-00-A orders2 1 connector-consumer-sink-elastic-orders-00-A-0
connect-sink-elastic-orders-00-A orders2 2 connector-consumer-sink-elastic-orders-00-A-0
connect-sink-elastic-orders-00-A orders2 3 connector-consumer-sink-elastic-orders-00-A-0
connect-sink-elastic-orders-00-A orders2 4 connector-consumer-sink-elastic-orders-00-A-1
connect-sink-elastic-orders-00-A orders2 5 connector-consumer-sink-elastic-orders-00-A-1
connect-sink-elastic-orders-00-A orders2 6 connector-consumer-sink-elastic-orders-00-A-1
connect-sink-elastic-orders-00-A orders2 7 connector-consumer-sink-elastic-orders-00-A-2
connect-sink-elastic-orders-00-A orders2 8 connector-consumer-sink-elastic-orders-00-A-2
connect-sink-elastic-orders-00-A orders2 9 connector-consumer-sink-elastic-orders-00-A-2
(出于可读性考虑,删除了一些列)