文章目录
以后再也不用安装安装 tons of beats 了!
用过Elastic Stack,用过ELK的小伙伴都知道,Elastic目前提供的数据采集方案主要是基于Beats。这是一个软件族,包括了多个组件:
Beats是用Go语言编写的轻量级的数据采集群,它具有以下特点:
- 从多个数据源采集
- 运行在多种终端上
- Docker 和 k8s
- 支持Cloud的元数据
- 70+ 社区制造的Beats
- 50+ 模块
虽然通过beats,我们可以开箱即用的采集大量的数据源
但其按照意图区分多个不同软件的方式也给我们带来了不便。通常情况下,如果我们需要采集多维度的数据,就需要在一个主机上安装多个beats,比如,filebeat用于日志采集,metricbeat用于指标采集,auditbeat用于审计/安全数据的采集。客观上,从软件安装/删除,软件配置更改,软件升级等方面增加了我们对于agent的运维管理工作量。
为了解决这个问题,Elastic推出了数据摄入模块的整体解决方案,在最新发布的7.8版本上,悄悄咪咪的增加了Ingest manager的功能,其中,就包含了Elastic Agent,一个将所有beats进行统一集成的方案(甚至包括了Security的endpoint终端)
并且发布了对应的使用文档。
需要注意的是,目前,这个功能还处在 实验性
阶段,Elastic 并不建议大家在生产上使用。但这并不妨碍大家先一睹为快,尝鲜反馈!
解锁Ingest manager页面
先决条件
要使用此实验版本的Ingest manager功能,您需要:
-
具有basic license的Elasticsearch集群和Kibana(版本7.8)。您可以 在Elastic Cloud上使用托管的Elasticsearch Service,或在您自己的硬件上安装Elastic Stack。
-
具有超级用户角色的用户。请参阅内置角色。
-
在自我管理的群集上,您必须配置安全性和加密设置。如果您在Elastic Cloud上使用托管Elasticsearch Service,则这些设置已启用。
-
在您的Elasticsearch配置中:
- 配置Elasticsearch安全性。设置
xpack.security.enabled
为true。 - 启用内置的API密钥服务。设置
xpack.security.authc.api_key.enabled
为true。
- 配置Elasticsearch安全性。设置
-
在您的Kibana配置中:
- 配置Kibana安全性。设置
xpack.security.enabled
为true。 - 配置TLS。或者,您可以通过将设置
xpack.ingestManager.fleet.tlsCheckDisabled
为true来禁用TLS检查。例如,如果Kibana位于截断SSL连接的代理之后,则可能要禁用TLS检查。 - 设置
xpack.encryptedSavedObjects.encryptionKey
为至少32个字符的任何字母数字值。例如:xpack.security.encryptionKey
: “something_at_least_32_characters”。Fleet需要此设置才能保存API密钥并在Kibana中对其进行加密
- 配置Kibana安全性。设置
-
通过以上配置,Kibana就可以在Elasticsearch中存储加密内容,以此方式来管理Elastic agent。
以下为Kibana上的Ingest manager的首页
这里包含几个关键组件:
- 集成(Integrations)
- 配置(Configurations)
- Fleet
- 数据流(Data Streams)
- 注册代理(Enroll New Agent)
他们的作用如下图:
Ingest manager组件简介
集成(Integrations)
是上图的Package Manager,通过集成(Integrations),我们可以获取各种开箱即用的数据摄取工具,目前默认为用户安装了两个集成模块:
分别是Elastic Endpoint
和System
。他们对应的是主机的安全数据采集和资源指标数据采集。
提供的开箱即用的集成模块有:
注意,如需使用这些模块,是需要单独安装(load assets)到Elasticseach当中的。这个功能其实就是原先beats里面的enable module
的功能。但区别在于,之前每个beats有各自的module,比如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模块,是直接包含了日志和指标(即直接启动了filebeat和metricbeat的内容)数据的采集,同时包含了 Dashboard, Visualization 和 Saved Search
新的索引策略
我们可以对比一下,在7.8版本之前,如果我们使用filebeat和metricbeat,自动创建的索引,都是包含了数千个mapping的:
而在新的index strategy下,我们会根据安装的集成模块来添加Mapping,以此来减轻索引管理的负担:
此时的索引命名规则已经更改为:
-
{type}-{dataset}-{namespace}
-
type: generic type of data (logs, metrics, trace, …) ,全观察性的三根支柱数据类型
-
dataset: Set of data with the same structure / mapping (nginx.access),各种数据集
-
namespace: Use configurable namespace (prod, testing),各种环境
配置(Configurations)
当我们通过 集成(Integrations)把对应的index mapping, Dashboard, Visualization 和 Saved Search 后,我们就可以使用配置(Configurations)来配置每个代理采集对应集成模块数据的具体细节,以Nginx模块为例,我们可以配置代理采集Nginx日志、指标的路径、内容、频率等各种细节。
并且可以针对不同的环境,不同的代理配置多份 配置(Configurations)
每个配置包含多个集成模块:
Fleet
Fleet 在英文中是车队的意思,通过Fleet,我们可以管理多个代理实例 ( 目前的Ingest manager可以管理上千个实例 )。
我们可以通过注册新代理
将代理放到Fleet中进行管理。注册之后,就可以在Fleet页面为每个Agent选择对应的配置:
并且可以查看每个代理的具体活动情况:
这里再次强调,目前只是实验性
功能,后续可能会有很大的功能改动和增强!
数据流(Data Streams)
当我们通过Fleet将配置下发到代理之后,代理开始采集数据,数据采集的状态会显示在数据流页面。页面上的上次活动
表示的是数据采集状态的最后采样信息,始终表示的是最新的状态。数据流的大小
就是数据的大小。
注意,这里的数据流是Elasticsearch中时间序列数据概念的形式化。配合V2_Template会是以后Elasticseach上索引生命周期管理的主要模式(替代之前的Alias),具体概念解释可以查看文章
Elastic Agent
Ingest Manager是Kibana上的数据摄入管理模块,而Elastic Agent是真正安装在宿主机上进行数据采集并且接受Ingest Manager管理的模块。之前被用户诟病最多的是需要同时管理多个beats。在7.8版本推出之后,我们只需要在被监控主机上安装一个Elastic Agent即可完成从指标,到日志,到Trace数据的采集。
我们可以通过注册的方式,同时将大量的agent同时注册到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,还有很长的一段路要走。但值得期待的有两点:
- Elastic持续倾听用户和社区的声音,正在往解决方案的路上快速前行,客户在使用过程中的痛点,不便都已经纳入到了产品的roadmap里面,相信未来产品会越来越好用
- Elastic产品保持一个极快的速度在推陈出现,相信最终的GA版本离我们也不会太远了
来源:oschina
链接:https://my.oschina.net/u/4290246/blog/4339168