ELK和beats

2017-09-17  本文已影响586人  P_Chou

ELK可能是现如今最为流行,并且更新速度最快的开源大数据产品,由elastic公司维护并完全开源。

ELK Stack

ELK分别为:

由于Logstash在数据收集上并不出色,而且作为agent,性能并不达标。elastic发布了beats系列轻量级采集组件。至此,elastic形成了一个完整的生态链和技术栈,成为大数据市场的佼佼者。本文我们重点来谈一谈beats

beats

beats是一组轻量级采集程序的统称,这些采集程序包括并不限于:

beats在ELK stack中的地位

以上是elastic官方支持的5种beats,事实上,伟大的开源力量早已创造出大大小小几十甚至上百中beats,只有你没想到的,没有beats做不到的。

为什么说beats是轻量级的呢?主要是beats在数据收集层面上并不进行过于复杂的数据处理,只是将数据简单的组织并上报给上游系统。另一方便,由于beats采用go语言开发,go是一种系统编程语言,具有并发友好以及部署方便的特点,能够在不依赖虚拟机的情况下运行,包大小通常也比较小。在跨平台上方面,beats与go语言保持一致支持linux,windows,freebsd和macos。beats的性能,明显好于大哥Logstash,一个设计良好的go语言程序基本可以达到甚至超过java程序。

beats的架构

beats之所以有如此强大的开源支持,一个很大的原因是设计良好的代码框架。

beats的代码框架

libbeat是beats的核心包,其中封装一个输出模块(Publisher),输出模块可以负责将收集到的数据发送给Logstash或者Elasticsearch。由于go语言设计有channel,收集数据的逻辑代码与Publisher都是通过channel通信的,耦合度的最低的。因此,开发一个收集器,完全不需要知道Publisher的存在,程序运行的时候自然就“神奇”的把数据发往服务端了。除此之外,还封装了配置文件处理、日志处理、守护化等功能,方便开发者拓展beats的能力。

beats的生态

beats的官方维护可以说非常活跃的,笔者跟踪beats很长时间,也做过代码贡献,对此深有体会。所以beats有一个非常健康的生态系统。

被官方收录,但官方不负责维护的beat,称为Community beats,目前有几十种,皆为开源贡献的。还有许多散落在社区的beat。

上一篇下一篇

猜你喜欢

热点阅读