引言
在庆祝iLogtail开源两周年这一里程碑时刻,我们不仅回顾了项目的成长历程和技术革新,还深入探讨了它如何不断重塑可观测性数据采集的技术疆界。但每一段辉煌旅程的背后,都离不开一群热爱技术、勇于探索的贡献者。他们以代码为砖石,以创意为梁柱,共同构建了iLogtail这座开放、强大、灵活的数据采集“大厦”。
这一期,我们将镜头转向那些默默耕耘在iLogtail社区的贡献人物。他们来自五湖四海,拥有不同的背景和专长,却因为对技术的共同热爱与追求汇聚一堂。我们邀请到了两位社区Committer进行分享。孙宇同学分享了他的心路历程,而阿柄同学则是接受了我们一对一的深度访谈。我们将揭秘这些开发者如何在日常工作中与iLogtail结缘,又如何在业余时间里为项目添砖加瓦,推动其不断向前发展。
社区Commiter孙宇分享:iLogtail的Commiter成长之路
引言
时光飞逝,转眼间,iLogtail已经开源快两周年了。作为iLogtail的贡献者,我个人也有许多感慨。在过去的两年里,iLogtail持续不断地进行完善和改进,其社区贡献者和用户群体也日益壮大。开源以来,iLogtail凭借其高性能和轻量级的特性,已经成为国内众多知名互联网企业日志采集的基础建设设施。
我与iLogtail的结缘
大概在2019年的时候,我在国内某AI科技公司负责一个IoT项目的k8s容器化落地。后来,在对日志采集方案进行调研时,我看到阿里云发布的一篇关于自研云原生日志采集器logtail的文章,其高性能的特性深深吸引了我,但当时logtail并没有开源,这让我感到有些遗憾,当然也对其开源充满了期待。最终,我们选择了社区相对成熟的Filebeat作为可观测性日志采集器,并基于EFK这套社区生态体系构建了当时业务的可观测性系统。这段经历为我后来参与iLogtail的贡献提供了宝贵的经验。
在我当前就职的公司同程旅行,我们团队负责的大数据云原生建设初期也采用了几乎相同的方案来采集大数据组件的日志。随着我们的大数据组件逐渐支持云原生化,并且随着业务量的提升,单个点需要采集的日志量也增大,到了2022年第二季度,日志采集问题开始逐渐暴露:
- Filebeat在部分组件的日志采集上开始出现延迟,例如在Yarn日志采集上。
- 随着采集压力的上升,日志堆积也导致Filebeat占用了更多的内存和CPU,这种资源占用方式显然是不可接受的。
- 基于Filebeat采集的数据,在Flink层面做消费处理提取存储时也出现了严重的延迟问题。
在2022年七月份,团队让我负责去处理日志消费延迟问题。此时恰逢iLogtail正式发布完整功能社区版不久,于是我在优化解决了延迟性问题后,开始调研刚开源不久的iLogtail。这次调研让我与iLogtail结下了不解之缘,开启了我的iLogtail贡献之旅。
首次贡献
在调研iLogtail时,我用iLogtail结合当时我们使用Filebeat采集时的场景做了一些模拟日志的采集测试验证,在验证中我发现两点问题:
- iLogtail不支持Kafka动态topic推送数据,我们有部分场景会识别日志内容的或者容器的一些标识去动态区分推送到topic.
- iLogtail推送到Kafka的数据是key-value对的形势存放的,对开源生态的接入非常不友好,用户想低成本使用第三方开源生态组件消费kafka日志写入ES等检索系统非常的困难。
{
"Time": 1659110162,
"Contents": [{
"Key": "content",
"Value": "{\"date\":\"2022-07-29 23:56:02.131\"}"
}]
}在参与ilogtail贡献之前,我个人也是一个社区开源项目的作者和持续维护者,在开源项目运营中也接触了解过很多社区用户对于开源项目支持开源生态组件的一些诉求。因此结合我对Elastsearch+Filebeat+Kibana生态组件使用经验和对开源社区项目的一些理解,我加入了iLogtail的社区群并反馈上面了问题,社区很快就接受了我提的意见,并非常友好的邀请我参与iLogtail共建,我也很荣幸成了社区的第一个贡献者。
接受了社区的共建邀请后,我和社区几位负责人做了几次的线上会议交流,开始接手Kafka flusher插件动态topic的支持和数据扁平化的写入改进的设计工作。
PR设计文档kafka flusher support dynamic topic and log fields extension
对方案做了几次的讨论和确认后,我完成了开发给社区提交了第一个PR,后续PR经过view和不断的优化和调整后被成功合并。
https://github.com/alibaba/ilogtail/pull/443
这个PR对社区和我都具有重要的意义:
- 对于iLogtail社区来说,实现了Kafka动态topic的支持和数据扁平化处理后,iLogtail变得更加用户友好,使得更多用户能够轻松地接入和使用iLogtail。这不仅拓宽了用户范围,也降低了用户将iLogtail接入现有第三方开源生态的成本,从而更容易推广。
- 对于我个人而言,这是我第一次向非个人开源项目提交PR贡献,这不仅是一次宝贵的经验,也让我在参与其他项目共建的过程中学到了很多。
这次经历不仅对iLogtail社区产生了积极影响,也极大地促进了我的个人成长和在开源社区参与度。
成为Committer
iLogtail社区的Committer准则是:对iLogtail社区的某些特定领域做出显著贡献的人。
成为Maintainer的标准包括:
- 在某个模块中成为专家,长期并持续地贡献问题、拉取请求(包括代码、测试用例、文档、案例);
- 参与重要功能的讨论、设计、开发和测试;
- 参与代码审查。
在规模性和运营成熟的社区中,成为Committer并非易事,iLogtail社区也不例外。因此,在最初参与iLogtail贡献时,我并未考虑过要成为Committer。我参与社区的初衷相对简单,即把自己的想法反馈给社区,希望其功能更加完善。
在调研测试iLogtail时,它仍处于开源初期阶段,与下游开源生态的整合并不完善,甚至缺乏。例如,对于下游生态的flusher仅支持kafka,但支持能力较弱,数据写入也不友好。
自2022年7月下旬加入社区后,我利用业余时间参与到社区共建中,累计提交了14个PR。主要贡献如下:
- 提交Kafka动态topic和数据扁平化支持设计,提交相关prhttps://github.com/alibaba/ilogtail/discussions/280https://github.com/alibaba/ilogtail/pull/443
- 升级kafka的SDK,重构官方原始的Input Kafka插件https://github.com/alibaba/ilogtail/pull/824
- 设计iLogtail flusher pulsar支持https://github.com/alibaba/ilogtail/pull/603
- 输出json一级平铺https://github.com/alibaba/ilogtail/pull/1112
- 支持elasticsearch动态索引表达式格式化https://github.com/alibaba/ilogtail/pull/717
除了直接的代码和文档贡献外,我还参与了社区Flusher Clichhouse、Flusher Elasticsearch、Flusher RocketMQ的设计讨论和审查,并在空闲时积极回复和解答用户问题。
后来,经过PMC的讨论,我被提名成为Committer。随着这些问题的解决,社区在开源之初对下游生态支持的不足和不友好问题得到了极大改善,对于动态topic和动态索引表达式的支持也使得后续许多生态组件flusher能够快速开发和使用。
我的开源共建感受
参与开源项目共建,特别是像iLogtail这样的项目,能够带来多方面的价值,不仅对个人参与者有益,也对整个软件生态系统和社会产生积极影响。在参与iLogtail的开源共建过程中,我获得了许多宝贵的收获。
首先,在技术提升和学习方面,通过阅读和理解他人的代码,以及与社区中的其他大佬和用户交流,我不断学习了解到了很多新的知识和技能。这种学习经验对于我个人的技术成长极为有益。
其次,我的影响力也得到了提升。通过积极参与推动和持续贡献,我为社区的发展贡献了自己的力量,并因此获得了iLogtail Committer,这对我个人的影响力是一个显著的提升。
最后,参与iLogtail的共建还帮助企业降低了成本。iLogtail成功地替换了同程旅行大数据组件日志采集中过去的Filebeat,解决了我们之前遇到的问题,降低了采集器对服务器资源的占用。这意味着我们无需自行研发所有功能进行替换,从而节省了大量资源和时间。
未来,我也将继续积极参与iLogtail的共建和宣传工作,为社区的发展贡献更多的力量。
致谢
我要特别感谢iLogtail社区,它不仅建设了一个对开发者和用户都极其友好的环境,还让我感受到了技术共享和开源文化的真正意义。我还想对iLogtail PMC及核心贡献者们表达我的深深感激,他们在我的贡献过程中给予了我宝贵的指导和支持,这使我能够更好地融入社区并做出我的贡献。同时,对所有iLogtail社区的贡献者和开发者表示诚挚的谢意,大家的努力和奉献构建了这个强大的高性能可观测数据采集器。
祝福
祝愿iLogtail社区随着时间的流逝越来越强大,不断吸引更多的热情和才华横溢的开发者和用户加入。希望iLogtail能够成为云原生领域可观测数据采集的全球化基础设施组件,为世界各地的开发者提供高效、可靠和易于使用的可观测数据采集管理解决方案。让我们共同期待iLogtail在未来的发展。再次祝贺iLogtail开源两周年取得的成功和进步,期待着看到它的持续成长和壮大!
社区Commiter阿柄采访
问:先做个自我介绍吧
答:好的,我叫阿柄,是一名今年毕业的应届毕业生。在学校期间,我就对开源社区抱有很高的热情,积极参与了很多的开源项目,在 2020 年参与了 Google Summer of Code 项目,以及平时参与了一系列其他项目的日常开发。毕业后,我加入了阿里云,主要参与 iLogtail 相关的开发工作,可以在工作中继续为开源做贡献。
问:你接触、了解到 iLogtail 的最初理由、原因是什么?
答:第一次接触到iLogtail时,我还在学校读书。虽然在课堂上学到了很多理论知识,但却缺乏实际应用的机会。iLogtail作为开源项目,不仅拥有出色的设计和代码实现,在性能等多个方面表现优异,更让我看到了理论知识在实际应用中的最佳实践。例如,iLogtail 经常在多个开发者社区中分享技术文章,详细介绍了项目中的设计模式和无锁化设计等技术细节,让我对这些概念有了更加深刻的理解。通过积极参与iLogtail的开发,我逐步将书本上的知识与实际操作结合起来,从而进一步深化了我的技术水平。
问:iLogtail 在你的第一印象中,是个什么样的开源项目 or 社区?
答:在我的第一印象中,iLogtai 是一个对各方面都有高标准要求,但同时又很开放包容的社区。iLogtail 项目的开发团队对于代码质量的严格把控给我留下了深刻印象,每一段提交的代码都会经过细致的review,确保了代码库的高可靠性和可维护性。这种对技术的严谨态度,不仅保证了产品的稳定性,也促进了参与者技能的不断提升。
社区的活跃氛围同样令人印象深刻。无论是新手提问还是资深开发者的技术讨论,都能迅速得到响应和有价值的反馈。iLogtail团队经常举办线上技术分享会,这些活动不仅覆盖了技术深度解析,还有对未来趋势的探讨,让人感受到这是一个持续学习和共同进步的环境。
问:是什么样的原因/动力,让你愿意持续参与到社区贡献中?在参与社区贡献的过程中,你有什么收获?
答:Ilogtail社区所拥有的开源精神对我产生了非常深远的影响。在参与iLogtail社区的过程中,我深切体会到协作与分享的力量。社区中,定期的周会和月会提供了宝贵的平台,让来自千行百业的大家在会上分享技术设计思路和最新进展。这些讨论极大地开阔了我的视野,提高了我的解决问题的能力。此外,社区活跃的讨论氛围也是我成长的重要来源,大家在群里积极讨论,互相帮助,共同进步。
接触到这样一群在可观测领域有着深厚积累的开源开发者,不仅让我学习了很多前沿知识,也激励我投身开源,回馈社区。通过持续参与和贡献,我不仅提升了自己的技术水平,还培养了良好的团队合作能力和解决问题的思维方式。这段经历不仅让我在技术上取得了长足进步,也让我更加坚信开源协作的力量,对我来说是一份宝贵的经历与财富。
问:作为新晋 Committer,你想对开源爱好者、iLogtail社区同学说点什么?
答:成为iLogtail社区的新晋Committer,我深感荣幸。我想借此机会向所有开源爱好者和iLogtail社区的同学传达几点心得:
首先,勇敢迈出第一步至关重要。不论你是刚入门的新人,还是寻求技术突破的老手,积极参与开源项目都是一个不断学习与成长的过程。不要害怕提出问题或贡献代码,每一次尝试都是向前迈进的一大步。
其次,坚持与耐心是通往成功的钥匙。技术之路从无坦途,面对挑战和困难时,保持坚持不懈的精神和细致入微的态度,你将会发现自己的潜能远远超乎想象。在iLogtail社区,我们鼓励每一位成员保持韧性,勇于探索未知。
最后,重视沟通与合作。开源项目的价值很大程度上来源于多元化的思维碰撞。有效的沟通能够促进理解,深化合作,让项目朝着更加完善的方向发展。请珍惜每一次交流机会,无论是面对面的讨论,还是线上的文字往来,都可能成为灵感的火花。
结语
这一系列的社区贡献人物采访,不仅是对iLogtail两周年成就的致敬,更是一次向所有开源贡献者表达敬意的旅程。它们将展现技术背后的人文温度,以及开放共享精神如何成为推动技术和社会进步的重要力量。让我们一同聆听这些声音,感受每一位贡献者的热情与智慧,共同期待iLogtail更加辉煌的未来。
