ps:越来越强大了
beats是一个代理,将不同类型的数据发送到elasticsearch。beats可以直接将数据发送到elasticsearch,也可以通过logstash将数据发送elasticsearch。
beats有三个典型的例子:Filebeat、Topbeat、Packetbeat。Filebeat用来收集日志,Topbeat用来收集系统基础设置数据如cpu、内存、每个进程的统计信息,Packetbeat是一个网络包分析工具,统计收集网络信息。这三个是官方提供的。后续会慢慢介绍这三个beat。
ELK的目标是建立一个平台,可以很容易的创建新的beats。为了这个目录,开发了libbeat,该Go库包含了所有beats公共部分来处理任务,如批量插入到elasticsearch,安全的发送事件到logstash,logstash和elasticsearch多节点的负载均衡,异步或同步的发送事件模式。该libbeat平台还提供了检测机制,当下游服务器负载高或者网络拥堵,自动的降低发送速率。
架构图如下:
简而言之,libbeat可以将一切事件安全的可靠地有效的发送到logstash和elasticsearch。不仅如此,对于其它事情也兼顾到如配置、CLI标记和日志。因此当你创建新的beat时,只需要专注于捕捉你要的数据。分析平台的其它部分就交给libbeat、logstash、elasticsearch和kibana处理了。如社区提供了 Dockerbeat, Pingbeat, UWSGIbeat 和 Nginxbeat。
Topbeat
收集系统负载、内存、硬盘以及每个进程的情况。
Topbeat是跨平台的。周期性的发送指标到elasticsearch。可以通过kibana创建自定义仪表盘如系统负载、服务器概述、内存或cpu使用情况、top进程、每个进程占用cpu或内存比例、磁盘使用情况等等。
Packetbeat
想象一下如果你想监控和解决一个复杂的分布式系统,每个组件使用不同的编程语言,web框架和数据库技术。Packetbeat是分布式的,实时的嗅探每个事务的请求与响应,并将相关数据插入到elasticsearch中。packetbeat被动的嗅探网络流量,因此不会干扰应用程序。
Packetbeat是开源的,任何人都可以添加支持新的协议。社区添加了对mongodb的支持,基于UDP和TCP的DNS支持等等。
当然,你也可以添加新的支持。期待ing
Filebeat
Filebeat 是logstash forwarder替代品。本博客之前的文章中有介绍,《Filebeat 日志收集器 logstash-forwarder 的替代品》。
将日志经过logstash进一步处理后发送到elasticsearch上。有足够的智能来处理日志轮换,文件重命名,以及下游服务器不可用,因此不用担心会丢失数据。
强烈建议将logstash forwarder迁移到Filebeat上来,《Logtash-Forwarder 迁移到 Filebeat》。
下文慢慢介绍这三个beats,以后社区提供的beat。请关注。