在Kafka接收器连接器上设置唯一的客户端ID

时间:2017-04-11 21:02:24

标签: apache-kafka

我正在尝试使用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连接器。

2 个答案:

答案 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 producerscreates 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 

(出于可读性考虑,删除了一些列)