fluent-kafka模块
2017-08-15 本文已影响0人
bobcorbett
fluent-kafka用于转发fluentd数据到kafka
git地址:https://github.com/fluent/fluent-plugin-kafka
安装方法:
gem 'fluent-plugin-kafka'
配置方式贡文大哥已经在KB界面给出了
http://www.uyunsoft.cn/kb/pages/viewpage.action?pageId=16024522#id-【01-02】分布式统一日志平台--实施手册-6、fluent优化

打开插件的源码,可以看到工程核心代码都在lib/fluent/plugin路径下:
in_kafka.rb (输入模块)
in_kafka_group.rb (带group的输入模块)
kafka_plugin_util.rb (util工具类)
kafka_producer_ext.rb (消息Producer类)
out_kafka.rb (不带buffer的输出模块)
out_kafka_buffered.rb (带buffer的输出模块)
Ruby也有OOP的语言特性

两个输入模块继承了大哥fluentd的方法Fluent::Input

两个输出模块模块继承了大哥fluentd的方法Fluent::Output

每个文件开头config_param是一些XML的解析字段,解析完成之后这些XML字段会直接变成常量参数,供代码调用。

其他的就是一些基本的方法,看看方法名应该就能猜出这个方法是做什么的:

kafka_producer_ext.rb模块主要是对message的一个封装:

总的来说fluent-plugin-kafka是对fluentd的一个override,根据kafka的一些特性封装了一些接口,供fluentd跟kafka对接。