[英]What is a simple, effective way to debug custom Kafka connectors?
我正在使用幾個 Kafka 連接器,在控制台輸出中沒有看到它們的創建/部署有任何錯誤,但是我沒有得到我正在尋找的結果(沒有任何結果,想要的或否則)。 我基於 Kafka 的示例 FileStream 連接器制作了這些連接器,因此我的調試技術基於示例中使用的 SLF4J Logger 的使用。 我搜索了我認為會在控制台輸出中生成的日志消息,但無濟於事。 我是否在錯誤的地方尋找這些消息? 或者也許有更好的方法來調試這些連接器?
我在實現中引用的 SLF4J Logger 的示例使用:
我會盡量廣泛地回答你的問題。 一種進行連接器開發的簡單方法如下:
通過以下方式之一使您的連接器包可用於 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 工作器后,通過運行以下命令啟動連接器:
confluent load <connector_name> -d <connector_config.properties>
或
confluent load <connector_name> -d <connector_config.json>
連接器配置可以是 java 屬性或 JSON 格式。
運行confluent log connect
打開 Connect worker 的日志文件,或者通過運行直接導航到存儲日志和數據的位置
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;
完成后。
我希望以上內容能讓您的連接器開發更輕松……更有趣!
我喜歡接受的答案。 一件事 - 環境變量對我不起作用......我正在使用融合社區版 5.3.1......
這就是我所做的工作......
我從這里安裝了融合的 cli: https : //docs.confluent.io/current/cli/installing.html#tarball-installation
我使用confluent local start
命令運行了 confluent
我使用命令ps -ef | grep connect
獲得了連接應用程序的詳細信息ps -ef | grep connect
ps -ef | grep connect
我將生成的命令復制到編輯器並添加了 arg(在 java 之后):
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
然后我使用命令confluent local stop connect
然后我用 arg 運行了連接命令
短暫的休息---
vs 代碼開發由 erich gamma 領導 -
gang of four
名氣,他也編寫了 eclipse。 vs 代碼正在成為一流的 java ide,請參閱https://en.wikipedia.org/wiki/Erich_Gamma
中場休息——
接下來我啟動了 vs code 並打開了 debezium oracle 連接器文件夾(從這里克隆) https://github.com/debezium/debezium-incubator
然后我選擇了Debug - Open Configurations
並進入突出顯示的調試配置
然后運行調試器 - 它會遇到你的斷點!!
連接命令應如下所示:
/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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.