使用Kafka Connect 同步Kafka数据到日志服务

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 1个月
简介: 使用Kafka Connect 同步Kafka数据到日志服务 简介 Kafka作为最流行的消息队列,在业界有这非常广泛的使用。不少用户把日志投递到Kafka之后,再使用其他的软件如ElasticSearch进行分析。

简介

Kafka作为最流行的消息队列,在业界有这非常广泛的使用。不少用户把日志投递到Kafka之后,再使用其他的软件如ElasticSearch进行分析。Kafka Connect 是一个专门用于在Kafka 和其他数据系统直接进行数据搬运插件,如将Kafka数据写入到S3,数据库等。

image


Kafka Connect

阿里云日志服务是一个日志采集,查询分析与可视化的平台,服务于阿里云上数十万用户。借助于日志服务提供的Kafka Connect插件,我们可以使用Kafka Connect 把Kafka里面的数据同步到阿里云日志服务,利用日志服务强大的查询能力与丰富的可视化图表类型,对数据进行分析与结果展示。

环境准备

  1. 如果还没有开通日志服务,前往 日志服务控制台开通。
  2. 准备测试用的 Kafka 集群。
  3. 创建用于访问阿里云日志服务的Access Key。
  4. 在日志服务控制台创建Project 和Logstore,并开启索引。

Kafka Connect安装

下载Kafka 日志服务connect 插件并打包:

git clone https://github.com/liketic/kafka-connect-logservice.git
mvn clean compile assembly:single 

打包之后,在项目根目录下,会生成一个压缩包 target/kafka-connect-logservice-1.0.0-jar-with-dependencies.jar 。 这个文件包含了插件和所有依赖,把这个文件复制到Kafka运行的机器上。

Kafka connect的工作模式分为两种,分别是standalone模式和distributed模式。 standalone模式可以简单理解为只有一个单独的worker,只需在启动时指定配置文件即可。而distributed模式可以启动多个worker,可以水平扩展和failover,插件本身的配置通过REST API的方式传递。这里我们为了演示方便仅演示standalone模式,在生产环境中建议使用distributed模式。更多部署细节可以参考官方文档

启动Connect

1)修改日志服务插件配置文件
在项目目录下config目录内有一个配置文件sink.properties,里面包含了日志服务插件运行所必须的配置信息:

name=LoghubSinkConnector
topics=<Kafka topic>
tasks.max=10
connector.class=com.aliyun.openservices.log.kafka.connect.LoghubSinkConnector
loghub.endpoint=your log service endpoint
loghub.project=your log service project
loghub.logstore=your log service logstore
loghub.accessKeyId=your access key id
loghub.accessKeySecret=your access key secret
loghub.batchSize=1000
format=json

除了放日志服务必需的配置外,还可以指定数据格式。目前日志服务Connector只支持字符串类型的数据,format可以选择 json 或者 raw:

  • json:每条纪录的value作为一个JSON字符串解析,自动提取字段并写入日志服务。
  • raw:每条纪录的value作为一个字段,写入日志服务。

2)修改connect配置文件
在Kafka下载目录下,找到 config/connect-standalone.properties,修改如下配置:

key.converter=org.apache.kafka.connect.storage.StringConverter
value.converter=org.apache.kafka.connect.storage.StringConverter
plugin.path=

plugin.path即为上文构建的jar 所在目录。在Kafka 下载目录内执行启动命令:

./bin/connect-standalone.sh ./config/connect-standalone.properties <your sink config path>/sink.properties

生成测试数据

git clone https://github.com/liketic/logservice-samples.git
cd logservice-samples

替换其中的Kafka配置:

        String topicName = "mytopic";
        Properties props = new Properties();
        props.put("bootstrap.servers", "localhost:9092");
        props.put("acks", "all");
        props.put("retries", 0);
        props.put("batch.size", 16384);
        props.put("linger.ms", 1);
        props.put("buffer.memory", 33554432);
        props.put("key.serializer",
                "org.apache.kafka.common.serialization.StringSerializer");
        props.put("value.serializer",
                "org.apache.kafka.common.serialization.StringSerializer");
        Producer<String, String> producer = new KafkaProducer<>(props);
        for (int i = 0; i < 100000; i++) {
            for (int j = 0; j < randomNum(100); j++) {
                String r = generateLog();
                producer.send(new ProducerRecord<>(topicName, r));
            }
            Thread.sleep(randomNum(1000));
        }
        producer.close();

在IDE中运行产生测试数据的程序,会通过Kafka Producer往Kafka中写入一些模拟数据。

写入结果查询

日志服务控制台查看数据写入成功:

image
写入结果

参考资料

日志服务官方文档:https://help.aliyun.com/product/28958.html?spm=a2c4g.750001.list.102.4cc17b13hpRH8b
Kafka Connect 官方文档:https://kafka.apache.org/documentation/#connect

目录
相关文章
|
8月前
|
SQL 人工智能 监控
SLS Copilot 实践:基于 SLS 灵活构建 LLM 应用的数据基础设施
本文将分享我们在构建 SLS SQL Copilot 过程中的工程实践,展示如何基于阿里云 SLS 打造一套完整的 LLM 应用数据基础设施。
2689 103
|
8月前
|
数据采集 运维 监控
不重启、不重写、不停机:SLS 软删除如何实现真正的“无感数据急救”?
SLS 全新推出的「软删除」功能,以接近索引查询的性能,解决了数据应急删除与脏数据治理的痛点。2 分钟掌握这一数据管理神器。
797 49
|
12月前
|
存储 缓存 Apache
StarRocks+Paimon 落地阿里日志采集:万亿级实时数据秒级查询
本文介绍了阿里集团A+流量分析平台的日志查询优化方案,针对万亿级日志数据的写入与查询挑战,提出基于Flink、Paimon和StarRocks的技术架构。通过Paimon存储日志数据,结合StarRocks高效计算能力,实现秒级查询性能。具体包括分桶表设计、数据缓存优化及文件大小控制等措施,解决高并发、大数据量下的查询效率问题。最终,日志查询耗时从分钟级降至秒级,显著提升业务响应速度,并为未来更低存储成本、更高性能及更多业务场景覆盖奠定基础。
|
9月前
|
存储 缓存 Apache
StarRocks+Paimon 落地阿里日志采集:万亿级实时数据秒级查询
A+流量分析平台是阿里集团统一的全域流量数据分析平台,致力于通过埋点、采集、计算构建流量数据闭环,助力业务提升流量转化。面对万亿级日志数据带来的写入与查询挑战,平台采用Flink+Paimon+StarRocks技术方案,实现高吞吐写入与秒级查询,优化存储成本与扩展性,提升日志分析效率。
1300 1
|
SQL 监控 数据挖掘
SLS 重磅升级:超大规模数据实现完全精确分析
SLS 全新推出的「SQL 完全精确」模式,通过“限”与“换”的策略切换,在快速分析与精确计算之间实现平衡,满足用户对于超大数据规模分析结果精确的刚性需求。标志着其在超大规模日志数据分析领域再次迈出了重要的一步。
943 118
|
9月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL数据库的WAL日志与数据写入的过程
PostgreSQL中的WAL(预写日志)是保证数据完整性的关键技术。在数据修改前,系统会先将日志写入WAL,确保宕机时可通过日志恢复数据。它减少了磁盘I/O,提升了性能,并支持手动切换日志文件。WAL文件默认存储在pg_wal目录下,采用16进制命名规则。此外,PostgreSQL提供pg_waldump工具解析日志内容。
909 0
|
9月前
|
数据采集 运维 监控
|
11月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
1384 4
|
消息中间件 存储 缓存
kafka 的数据是放在磁盘上还是内存上,为什么速度会快?
Kafka的数据存储机制通过将数据同时写入磁盘和内存,确保高吞吐量与持久性。其日志文件按主题和分区组织,使用预写日志(WAL)保证数据持久性,并借助操作系统的页缓存加速读取。Kafka采用顺序I/O、零拷贝技术和批量处理优化性能,支持分区分段以实现并行处理。示例代码展示了如何使用KafkaProducer发送消息。

相关产品

  • 日志服务