一、logstash与beats
由于Logstash在数据收集上并不出色,而且作为agent,性能并不达标。elastic发布了beats系列轻量级采集组件。至此,elastic形成了一个完整的生态链和技术栈,成为大数据市场的佼佼者
二、什么是beats
beats 是一个使用 Golang 构建的平台,libbeat 是其核心库,用来提供API进行与Elasticsearch,Logstash 的连接,还能配置输入特性和实现信息收集等工作。其中封装一个输出模块(Publisher),输出模块可以负责将收集到的数据发送给 Logstash 或者 Elasticsearch。由于 go 语言设计有 channel,收集数据的逻辑代码与 Publisher 都是通过 channel 通信的,耦合度的最低的。因此,开发一个收集器,完全不需要知道Publisher 的存在,程序运行的时候自然就“神奇”的把数据发往服务端了。除此之外,还封装了配置文件处理、日志处理、守护化等功能,方便开发者拓展 beats 的能力。
Beats 是一组轻量级采集程序的统称,我们通常常用的几个如下:
- filebeat: 进行文件和目录采集,主要用于收集日志数据。
- metricbeat: 进行指标采集,指标可以是系统的,也可以是众多中间件产品的,主要用于监控系统和软件的性能。
- packetbeat: 通过网络抓包、协议分析,对一些请求响应式的系统通信进行监控和数据收集,可以收集到很多常规方式无法收集到的信息。
- Winlogbeat: 专门针对 windows 的 event log 进行的数据采集。
- Heart