Skip to content
 
 

Latest commit

 

History

164 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

* 简介
tail2kafka 是一个小工具,用于把文件内容实时 *逐行* 发送到 [[https://kafka.apache.org/][kafka]], 类似于linux ~tail~ 命令实时把文件输出到屏幕上。在把文件行发送到kafka前,可以对文件行做一些 ~编程工作~ ,这里用到了 [[https://www.lua.org/][lua]]。

编译后的tail2kafka只有一个可执行文件,没有任何依赖,使用起来非常简单

* 编译安装启动
** 准备依赖
~make get-deps~ 下载依赖库。在编译完成后,依赖库被静态链接到tail2kafka,所以tail2kafka仅有一个可执行文件,仅复制这一个文件到目标机器,就完成部署。

** 编译安装
编译 ~make~ 安装 ~make install~ ,默认路径是 ~/usr/local/bin~ 。如果需要更改安装路径 ~make install INSTALLDIR=/installpath~

也可以使用 =./scripts/makerpm= 打rpm包

** 启动
启动 ~tail2kafka /etc/tail2kafka~ 读取 =/etc/tail2kafka= 目录下的lua文件,并启动。

停止 ~kill $(cat /var/run/tail2kafka.pid)~

重新加载配置 ~kill -HUP $(cat /var/run/tail2kafka.pid)~

** 架构
=tail2kafka= 启动后,有两个进程,子进程完成实际工作,父进程负责重新加载配置和子进程存活检测。

* 数据分区和完整性
=tail2kafka= 支持三种分区方式,固定分区、根据机器IP分区和随机分区。

固定分区是指定一个固定分区,根据机器IP分区是对IP做hash自动计算出分区,两者的共同点是文件的数据总是发送到同一个分区,这两种方式可以保证绝对不丢数据。因为文件本身就是一个队列,kafka的一个分区也是一个队列, =队列= 之间复制保证数据完整性。缺点是分区不均衡,且分区数量受机器数量限制,为了克服这个限制可以在消费时做二次分区。

随机分区是随机选择一个分区发送数据,一个文件的数据发送到多个分区,相当于一个 =队列= 的数据复制到多个 =队列= ,没办法维护队列之间的映射关系,也就没法记录已发送数据在文件里的offset,进程重启时没法保证数据不丢失。好处是分区均衡。

* 配置
参考 [[./doc/tail2kafka-config.org][tail2kafka 配置]]

* 内置集群部署支持
参考 [[./doc/tail2kafka-cluster.org][tail2kafka 集群]]

* 性能
虚拟机测试供参考,测试脚本在 ~blackboxtest/loadtest.sh~

| 数据大小 | 平均每行大小 | ACK | 行/ 秒 | 字节/ 秒 |
|----------+--------------+-----+--------+----------|
| 4G       |         2048 |   1 |  15267 | 31M      |
| 4G       |         2048 |   0 |  25641 | 52M      |
| 2G       |         1024 |   1 |  30769 | 32M      |
| 2G       |         1024 |   0 |  40816 | 42M      |
| 1G       |          512 |   1 |  58823 | 31M      |
| 1G       |          512 |   0 |  90909 | 48M      |
| 512M     |          256 |   1 | 117647 | 32M      |
| 512M     |          256 |   0 | 117647 | 32M      |

* 限制
- 需要文件使用 =\n= 作为换行符
- 一行最长2M,不建议使用很长的行,可能触发librdkafka的BUG

About

tail log to kafka, support lua filter before send

Resources

Stars

10 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages