全托管文章智能采集系统(Elasticmanager数据采集方案)
优采云 发布时间: 2021-11-24 12:25全托管文章智能采集系统(Elasticmanager数据采集方案)
文章内容
再也不需要安装大量的beats了!
用过Elastic Stack和ELK的小伙伴都知道,目前Elastic采集提供的数据主要是基于Beats。这是一个软件系列,包括多个组件:
Beats 是一个用 Go 语言编写的轻量级数据采集组,它具有以下特点:
虽然通过beats,我们可以采集开箱即用的大量数据源
但是它根据意图区分多个不同软件的方式也给我们带来了不便。正常情况下,如果我们需要采集多维数据,需要在一台主机上安装多个beat,比如filebeat用于日志采集,metricbeat用于指标采集, auditbeat 采集 用于审计/安全数据。客观来说,从软件安装/删除、软件配置变更、软件升级等方面,增加了我们代理运维管理的工作量。
为了解决这个问题,Elastic 推出了数据摄取模块的整体解决方案。在最新发布的7.8中,Quietly Mimi增加了Ingest manager功能,其中包括Elastic Agent,一种统一集成所有beats(甚至Security的端点)的解决方案
并发布了相应的使用文档。
需要说明的是,目前该功能还处于实验阶段,Elastic 不建议您在生产中使用。但这并不妨碍大家第一时间看到它,以及反馈的早期采用者!
解锁摄取管理器页面先决条件
要使用此实验版本的摄取管理器功能,您需要:
在您的 Kibana 配置中:
通过上述配置,Kibana 可以将加密内容存储在 Elasticsearch 中,并通过这种方式管理 Elastic Agent。
以下是 Kibana 上 Ingest manager 的主页
以下是几个关键组件:
它们的作用如下:
摄取管理器组件介绍集成(Integrations)
就是上图中的Package Manager。通过Integrations,我们可以获得各种开箱即用的数据采集工具。目前默认为用户安装了两个集成模块:
分别是弹性端点和系统。分别对应宿主机的安全数据采集和资源索引数据采集。
开箱即用的集成模块是:
注意,如果需要使用这些模块,需要单独安装(加载资产)到Elasticseach中。这个功能其实就是原beats中enable模块的功能。但不同的是,每个beats都有自己的模块,比如Nginx、filebeat、metricbeat,必须手动打开:
## when filebeat stop
./filebeat modules enable apache mysql
## when filebeat already running
./filebeat --modules nginx,mysql,system
或者修改yml配置文件:
filebeat.modules:
- module: nginx
- module: mysql
- module: system
这里的Nginx模块是采集,直接收录log和metric数据(也就是直接启动filebeat和metricbeat的内容),还收录Dashboard、Visualization和Saved Search
新的索引策略
我们可以比较一下。在7.8版本之前,如果我们使用filebeat和metricbeat,自动创建的索引收录数千个映射:
在新的索引策略下,我们会根据安装的集成模块添加Mapping,减轻索引管理的负担:
此时索引命名规则已改为:
配置
我们通过Integrations集成了对应的索引映射、Dashboard、Visualization和Saved Search后,我们可以使用Configurations来配置每个agent采集对应集成模块数据的具体细节,以Nginx模块为一个例如,我们可以配置代理采集Nginx日志、指标的路径、内容、频率等各种细节。
并且您可以为不同的环境和不同的代理配置多种配置。
每个配置收录多个集成模块:
舰队
Fleet 在英文中是舰队的意思。通过 Fleet,我们可以管理多个代理实例(目前的 Ingest 管理器可以管理数千个实例)。
我们可以注册一个新的代理,并将代理放入 Fleet 进行管理。注册后可以在Fleet页面为每个Agent选择对应的配置:
并且可以查看每个代理的具体活动:
再说一遍,目前只是一个实验性的功能,未来可能会有很大的变化和增强!
数据流
我们通过Fleet将配置发送给agent后,agent开始采集数据,数据采集的状态会显示在数据流页面。页面最后一个activity代表数据采集状态的最后一次采样信息,始终代表最新状态。数据流的大小就是数据的大小。
注意这里的数据流是对Elasticsearch中时间序列数据概念的形式化。与 V2_Template 合作将是 Elasticseach 未来索引生命周期管理的主要模式(替代之前的 Alias)。具体概念解释请参考文章
弹性剂
Ingest Manager 是 Kibana 上的数据摄取管理模块,而 Elastic Agent 是实际安装在主机上用于数据的模块采集,由 Ingest Manager 管理。之前最受用户诟病的是需要同时管理多个节拍。 7.8版本发布后,我们只需要在被监控的主机上安装一个Elastic Agent就可以完成从metrics、logs、trace数据的采集。
我们可以通过注册的方式同时向Ingest Manager注册大量代理。
例如,使用 Ansible:
ansible -b --become-user=root -i ./hosts all -m shell -a 'elastic-agent enroll http://localhost:5601 NVFLS0hITUJzckszUWFUcWg0dmo6RnM3VFZ4c05TWkdJdzl2bzVMQlAyUQ==
&& elastic-agent run'
关于Elastic Agent的安装、配置和管理的详细信息请参考官方文档
总结
目前 Ingest manager 和 Elastic Agent 还处于 EXPERIMENTAL 状态,官方不建议在生产中使用。在进入 Beta 和最终 GA 之前还有很长的路要走。但有两点值得期待: