背景
不管是日志采集还是监控、安全场景下,面临的一项关键的挑战就是如何在成千上万的主机上上管理采集agent。
Beats作为 Elastic Stack中的采集端,是一个免费且开放的数据采集器。它们从成百上千或成千上万台机器和系统向 Logstash 或 Elasticsearch 发送数据。
- Filebeat:轻量型日志采集器。用于从从安全设备、云、容器、主机等设备采集文件。
- Metricbeat:轻量型指标采集器。用于从系统和服务收集指标。
- Heartbeat:面向运行状态监测的轻量型采集器。
- Auditbeat:轻量型审计日志采集器。收集 Linux 审计框架的数据,监控文件完整性。
- Winlogbeat:轻量型 Windows 事件日志采集器。用于密切监控基于 Windows 的基础设施上发生的事件。
- Packetbeat:轻量型网络数据采集器。
- Functionbeat:面向云端数据的无服务器采集器。
综上,Beats系列采集器针对于各种数据采集场景都已经提供了比较丰富的支持,但是企业环境下需求往往是多种场景结合的,既需要完成日志文件的采集,也需要指标或者安全数据的采集。这时如果要使用Beats来采集数据,就需要安装多个二进制文件,而每个二进制文件都涉及通过配置管理、变更管理等一系列的规范化要求,这样就带来了较大的复杂度。
此外,生产环境中新增数据源时,用户必须编辑 YAML 文件并将它们上传到所有服务器(往往需要使用 Ansible 或 Chef 等第三方工具来推送配置),也是一个比较复杂的工作。
Elastic端采集统一接入介绍
使用Elastic Stack,首先要解决的问题就是如何快速方便的将各种数据源的数据采集到 Elastic 平台。为此,Elastic 7.14正式推出了2项重大的发布:
- Elastic Agent:一个兼具可观测性和安全的单个一体化采集器。
- Fleet:一个全新的 Kibana 应用,用于大规模地集中管理 Elastic Agent。
Elastic Agent
使用 Elastic Agent,可以用一种一体化的方式从每个主机上收集日志、指标、追踪、可用性、安全性和其他数据类型。这样也就无需为 Filebeat、Metricbeat 等编辑多个配置文件。
除了常规的采集外,Elastic Agent还提供了安全能力,可以保护终端免受勒索软件、恶意软件和高级威胁的侵害。
Fleet
Fleet 提供了一个Web UI来集中化管理Elastic Agent和各种采集数据源的集成。Elastic Agent由 Fleet 集中管理,让用户能够更轻松地跨多个数据源集成数据。
在Fleet Agents管理页,可以查看Agent的主机信息、运行状态、Policy、版本、更新时间等管理信息。
Fleet使用Agent Policy来管理数据源的采集配置,Agent Policy可以包含对多种数据源的采集配置,并可以将Agent Policy应用于多个Elastic Agent,从而更轻松地大规模管理配置。
Fleet集成(Integrations in Fleet)
Fleet 为常用服务和平台提供了数十种开箱即用的Integrations,包括用于提取结构化字段的仪表板、可视化和采集管道。可以一键式将数据源与采集Policy集成,并应用到Elastic Agent上。
例如,Nginx集成,通过Integrations搜索到对应应用,一键即可完成相应的采集配置。
Fleet Server
Fleet Server是Elastic Stack中用于集中管理 Elastic Agent的组件。 一个 Fleet Server 进程可以支持多个 Elastic Agent 连接,用作更新Agent Policies、收集状态信息等。
Fleet Server用作Elastic Agents与Elasticsearch进行通信的连接。整体流程如下:
- 通过Fleet in Kibana向Elasticsearch创建新的Agent Policy。
- Elastic Agent向Fleet Server发送注册请求。
- Fleet Server接收到Elastic Agent注册请求后,会向Elasticsearch获取agent policy,并推送到Elastic Agent。
- Elastic Agent使用Agent Policy中的配置信息,进行数据采集并发送数据到ElasticSearch。
- Agent Policy发生变更时,Fleet Server会将变更消息推送到注册的Elastic Agent上。
- Fleet Server周期性检查Elastic Agent运行状态,并上报。
Fleet Server提供了用于更新Elastic Agent的控制平面,并指示Elastic Agent执行一些操作,如跨主机运行 OSQuery 或在网络层隔离主机以遏制安全威胁。它既可以集中部署,也可以部署在专用网络的边缘。
Elastic Agent跟Beats的比较
Beats作为Elastic Stack的轻量级数据采集器,为不同类型的数据(例如日志、指标等)提供单独的 Beats。实际使用时,往往需要根据业务需求在单个主机上安装多个Beat采集器。
Elastic Agent 是用于日志、指标、安全数据和威胁预防的单一代理。 可以使用Fleet进行集中化管理。
Elastic旨在将Elastic Agent打造成为Elastic Stack标准的采集器,但是目前还无法完全取代Beats(例如Fleet尚不支持输出到 Logstash 或 Kafka,它需要超级用户角色来完成),但是相信后面随着版本的逐步迭代,功能性的gaps会越来越小。
未来的方向应该是Beats的功能作为Integrations的一部分在Elastic Agent中提供采集能力。
差异主要从输入源、输出等方面评估,详见链接。