开云体育官方注册网址Debezium的容器映像结构得到了巨大的改进最近这使得扩展其行为变得极其简单。

这是一个小教程,展示如何添加实例哨兵,“一个开源错误跟踪软件,可以帮助开发人员实时监控和修复崩溃”。这里我们将使用它来收集和报告来自Kafka Connect及其连接器的任何异常。注意,这只适用于Debezium 0.9+。开云体育官方注册网址

我们需要一些东西来让哨兵工作,我们会添加所有的它们,然后有一个Dockerfile,这让它都正确粘:

  • 配置Log4j

  • SSL证书sentry.io,因为默认情况下它不在JVM可信链中

  • 哨兵而且sentry-log4j

Log4j配置

让我们创建一个文件配置/ log4j . properties在我们的本地项目中,这是一个带有Debezium图像的副本,并将Sentry添加到其中。开云体育官方注册网址注意我们添加了哨兵log4j.rootLogger并创建了sectionlog4j.appender.Sentry,其余部分保持原配置:

kafka.logs。dir = log4j日志。rootLogger=INFO, stdout, appender, Sentry #禁用过多的反射警告- KAFKA-5229 log4j.logger.org.reflections=ERROR log4j.appender.stdout=org.apache.log4j. log4j. log4j. log4j. log4j. log4j. log4j. log4j. log4j. logloglogger =INFO, stdout, stdout= INFO, stdout。ConsoleAppender log4j.appender.stdout。阈值= INFO log4j.appender.stdout.layout = org.apache.log4j。PatternLayout log4j.appender.stdout.layout。ConversionPattern=%d{ISO8601} %-5p %X{dbz. connectortype}|%X{dbz. connectorname}|%X{dbz. connectorname}connectorContext} %m [%c]%n log4j.appender.appender=org.apache.log4j。DailyRollingFileAppender log4j.appender.appender.DatePattern = '。'yyyy-MM-dd-HH log4j.appender.appender.File=${kafka.logs.dir}/connect-service.log log4j.appender.appender.layout=org.apache.log4j. log 'PatternLayout log4j.appender.appender.layout。ConversionPattern=%d{ISO8601} %-5p %X{dbz. connectortype}|%X{dbz. connectorname}|%X{dbz. connectorname}connectorContext} %m [%c]%n log4j.appender.哨兵=io.哨兵.log4j。SentryAppender log4j.appender.Sentry.threshold =警告

哨兵。io SSL证书

下载getsentry.pem文件从sentry.io然后把它放到项目目录下ssl /

的Dockerfile

现在我们可以把所有东西粘在我们的Debezium图像中:开云体育官方注册网址

  • 让我们首先用我们的哨兵证书创建一个JKS文件;它使用Docker多阶段构建过程,在这里我们生成一个certificates.jks我们稍后将复制到我们的Kafka Connect with Debezium阶段开云体育官方注册网址

  • 复制log4j . properties美元KAFKA_HOME / config / log4j . properties

  • 从多阶段构建中复制JKS文件

  • 设置ENV为哨兵版本和m5sum

  • 下载哨兵依赖,你看到的脚本调用docker-maven-download是我们在映像中默认附带的帮助器。在本例中,我们使用它从Maven Central下载一个JAR文件,并将其放在Kafka libs目录中。我们通过设置ENV变量来做到这一点MAVEN_DEP_DESTINATION = $ KAFKA_HOME / libs


              
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
FROM fabric8/java-centos-openjdk8-jdk:1.6 as ssl-jks ARG JKS_STOREPASS="任意随机密码,您也可以通过docker build的参数设置它" USER root:root COPY /ssl /ssl RUN chown -R jboss:jboss /ssl USER jboss:jboss WORKDIR /ssl RUN keytool -import -noprompt -alias getsentry \ -storepass "${JKS_STOREPASS}" \ -keystore证书。JKS \ -trustcacerts -file "/ssl/ get哨兵。FROM debez开云体育官方注册网址ium/connect:0.10 AS kafka-connect EXPOSE 8083 COPY config/log4j. pem“KAFKA_HOME美元/ config / log4j属性。“COPY——from=ssl-jks——chown=kafka:kafka /ssl/certificates. properties”jks /ssl/ ENV SENTRY_VERSION=1.7.23 \ MAVEN_DEP_DESTINATION=$KAFKA_HOME/libs RUN docker-maven-download \ central io/哨兵哨兵"$SENTRY_VERSION" 4bf1d6538c9c0ebc22526e2094b9bbde && \ docker-maven-download \ central io/哨兵哨兵-log4j "$SENTRY_VERSION" 74af872827bd7e1470fd966449637a77

构建并运行

现在我们可以简单地构建图像:

$ docker build -t 开云体育官方注册网址debezium/connect-哨兵:1——build-arg=JKS_STOREPASS="123456789"。

当运行映像时,我们现在必须配置我们的Kafka Connect应用程序,通过设置加载JKS文件KAFKA_OPTS: -Djavax.net.ssl.trustStore=/ssl/ certifates.jks -Djavax.net.ssl.trustStorePassword=<您的TRUSTSTORE密码>

岗哨可以是以多种方式配置,我喜欢通过环境变量来做,我们可以设置的最小值是哨兵DSN(这是指向您的项目所必需的)和实际运行的环境名称(即:生产,登台)。

在这种情况下,我们可以配置变量:Sentry_dsn =<获取哨兵仪表板中的DNS >SENTRY_ENVIRONMENT = dev

如果您想了解更多关于使用Debezium容器图像的信息,请联系我们开云体育官方注册网址查看我们的教程

以上就是以Sentry为例扩展Docker设置的基本方法;其他修改也应该像这个一样简单。作为一个例子RecordTooLarge在这个设置中,Kafka生产者的异常是这样的,如下图所示:

岗哨例外示例

结论

由于最近对Debezium容器映像进行了重构,使用自定义扩展对它们进行修改开云体育官方注册网址变得非常容易。下载外部依赖项并将其添加到图像中变成了一项微不足道的任务,我们很乐意听到您的反馈!

如果您对重构本身感兴趣,可以在pull request中找到详细信息开云体育官方注册网址debezium / container-images # 131

雷纳托Mefi

Renato Mefi是Usabilla (SurveyMonkey)的工程师,他主要围绕Kafka、Docker和DevOps进行创新,并为Kafka、Debezium等做出了贡献。开云体育官方注册网址他住在阿姆斯特丹,骑自行车是为了娱乐和上下班。


关于Debe开云体育官方注册网址zium

开云体育官方注册网址Debezium是一个开源的分布式平台,它将现有数据库转换为事件流,因此应用程序几乎可以立即看到并响应数据库中提交的每一个行级更改。开云体育电动老虎机开云体育官方注册网址Debezium是建立在卡夫卡并提供卡夫卡连接监控特定数据库管理系统的兼容连接器。开云体育电动老虎机开云体育官方注册网址Debezium在Kafka日志中记录了数据更改的历史,所以你的应用程序可以在任何时候停止和重新启动,并且可以很容易地使用它没有运行时错过的所有事件,确保所有事件都被正确和完整地处理。开云体育官方注册网址Debezium是开源Apache许可证,版本2.0

参与

我们希望您觉得Debezium有趣开云体育官方注册网址且有用,并愿意尝试一下。在Twitter上关注我们@开云体育官方注册网址debezium在Zulip上和我们聊天,或加入我们的邮件列表与社区对话。所有的代码都是开源的GitHub上,因此在本地构建代码并帮助我们改进现有连接器并添加更多连接器。如果您发现了问题或对我们如何改进Debezium有想法,请告诉我们开云体育官方注册网址记录问题

Baidu
map