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