簡體   English   中英

調試自定義 Kafka 連接器的簡單有效方法是什么?

[英]What is a simple, effective way to debug custom Kafka connectors?

我正在使用幾個 Kafka 連接器,在控制台輸出中沒有看到它們的創建/部署有任何錯誤,但是我沒有得到我正在尋找的結果(沒有任何結果,想要的或否則)。 我基於 Kafka 的示例 FileStream 連接器制作了這些連接器,因此我的調試技術基於示例中使用的 SLF4J Logger 的使用。 我搜索了我認為會在控制台輸出中生成的日志消息,但無濟於事。 我是否在錯誤的地方尋找這些消息? 或者也許有更好的方法來調試這些連接器?

我在實現中引用的 SLF4J Logger 的示例使用:

Kafka FileStreamSinkTask

Kafka FileStreamSourceTask

我會盡量廣泛地回答你的問題。 一種進行連接器開發的簡單方法如下:

  • 通過查看眾多公開可用的 Kafka 連接器之一來構建和構建連接器源代碼(您可以在此處找到廣泛的列表: https : //www.confluent.io/product/connectors/
  • https://www.confluent.io/download/下載最新的 Confluent 開源版本 (>= 3.3.0)
  • 通過以下方式之一使您的連接器包可用於 Kafka Connect:

    1. 將所有連接器 jar 文件(連接器 jar 加上依賴 jar,不包括 Connect API jar)存儲到文件系統中的某個位置,並通過將此位置添加到 Connect 工作器屬性中的plugin.path屬性來啟用插件隔離。 例如,如果您的連接器 jar 存儲在/opt/connectors/my-first-connector ,您將在您的工作人員的屬性中設置plugin.path=/opt/connectors (見下文)。
    2. 將所有連接器 jar 文件存儲在${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

連接器模塊由 kafka 連接器框架執行。 對於調試,我們可以使用獨立模式。 我們可以將 IDE 配置為使用 ConnectStandalone 主函數作為入口點。

  1. 創建調試配置如下。 如果是 Maven 項目,需要記住勾選“包含具有“提供”范圍的依賴項在此處輸入圖片說明

  2. 連接器屬性文件需要指定連接器類名“connector.class”進行調試在此處輸入圖片說明

  3. worker 屬性文件可以從 kafka 文件夾 /usr/local/etc/kafka/connect-standalone.properties 復制

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM