我正在使用几个Kafka连接器,我在控制台输出中没有看到它们的创建/部署中的任何错误,但是我没有得到我正在寻找的结果(没有任何结果) ,期望的或其他的)。我根据Kafka的示例FileStream连接器制作了这些连接器,因此我的调试技术基于使用示例中使用的SLF4J Logger。我已经搜索了我认为会在控制台输出中生成的日志消息,但无济于事。我在错误的地方找这些消息吗?或者是否有更好的方法来调试这些连接器?
我为实现引用的SLF4J Logger的示例用法:
答案 0 :(得分:16)
我会尝试以广泛的方式回答您的问题。一个简单的连接器开发方法如下:
通过以下方式之一将您的连接器包提供给Kafka Connect:
plugin.path
属性。例如,如果您的连接器jar存储在/opt/connectors/my-first-connector
中,则会在工作人员的属性中设置plugin.path=/opt/connectors
(见下文)。${CONFLUENT_HOME}/share/java
下的文件夹中。例如:${CONFLUENT_HOME}/share/java/kafka-connect-my-first-connector
。 (需要以kafka-connect-
前缀开头,以便由启动脚本获取)。 $ CONFLUENT_HOME是您安装Confluent Platform的地方。(可选)通过将${CONFLUENT_HOME}/etc/kafka/connect-log4j.properties
中的Connect的日志级别更改为DEBUG
甚至TRACE
来增加日志记录。
使用Confluent CLI启动所有服务,包括Kafka Connect。详情请见http://docs.confluent.io/current/connect/quickstart.html
简要说明:confluent start
注意:CLI当前加载的Connect工作者属性文件为
${CONFLUENT_HOME}/etc/schema-registry/connect-avro-distributed.properties
。如果您选择启用类加载隔离,但是如果您需要更改Connect工作者的属性,则应该编辑该文件。
运行Connect worker后,运行以下命令启动连接器:
confluent load <connector_name> -d <connector_config.properties>
或
confluent load <connector_name> -d <connector_config.json>
连接器配置可以是java属性或JSON格式。
运行
confluent log connect
打开Connect工作人员的日志文件,或直接导航到运行日志和数据的位置
cd "$( confluent current )"
注意:通过适当地设置环境变量
CONFLUENT_CURRENT
,在Confluent CLI会话期间更改日志和数据的存储位置。例如。鉴于/opt/confluent
存在并且您要存储数据,请运行:
export CONFLUENT_CURRENT=/opt/confluent
confluent current
最后,要以交互方式调试连接器,可能的方法是在开始使用Confluent CLI连接之前应用以下内容:
confluent stop connect
export CONNECT_DEBUG=y; export DEBUG_SUSPEND_FLAG=y;
confluent start connect
然后连接调试器(例如远程连接到Connect工作器(默认端口:5005)。要在调试模式下停止运行连接,请在完成后运行:unset CONNECT_DEBUG; unset DEBUG_SUSPEND_FLAG;
。
我希望上面的内容能让您的连接器开发更轻松,更有趣!
答案 1 :(得分:0)
我喜欢被接受的答案。一件事-环境变量对我不起作用...我正在使用融合的社区版本5.3.1 ...
这就是我所做的工作...
我从这里安装了汇合的cli: https://docs.confluent.io/current/cli/installing.html#tarball-installation
我使用命令confluent local start
我使用命令ps -ef | grep connect
我将结果命令复制到编辑器,并添加了arg(紧随Java之后):
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
然后我停止使用命令confluent local stop connect
然后我用arg运行了connect命令
简短间歇---
vs代码开发由
gang of four
名誉的erich gamma领导,他还撰写了eclipse。 vs代码已成为一流的Java ide,请参见https://en.wikipedia.org/wiki/Erich_Gamma
---
接下来,我启动了vs代码,并打开了debezium oracle连接器文件夹(从此处克隆)https://github.com/debezium/debezium-incubator
然后我选择了Debug - Open Configurations
并输入突出显示的调试配置
然后运行调试器-它会达到您的断点!
connect命令应如下所示:
/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/bin/java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005 -Xms256M -Xmx2G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dkafka.logs.dir=/var/folders/yn/4k6t1qzn5kg3zwgbnf9qq_v40000gn/T/confluent.CYZjfRLm/connect/logs -Dlog4j.configuration=file:/Users/myuserid/confluent-5.3.1/bin/../etc/kafka/connect-log4j.properties -cp /Users/myuserid/confluent-5.3.1/share/java/kafka/*:/Users/myuserid/confluent-5.3.1/share/java/confluent-common/*:/Users/myuserid/confluent-5.3.1/share/java/kafka-serde-tools/*:/Users/myuserid/confluent-5.3.1/bin/../share/java/kafka/*:/Users/myuserid/confluent-5.3.1/bin/../support-metrics-client/build/dependant-libs-2.12.8/*:/Users/myuserid/confluent-5.3.1/bin/../support-metrics-client/build/libs/*:/usr/share/java/support-metrics-client/* org.apache.kafka.connect.cli.ConnectDistributed /var/folders/yn/4k6t1qzn5kg3zwgbnf9qq_v40000gn/T/confluent.CYZjfRLm/connect/connect.properties
答案 2 :(得分:0)