解锁 Elastic 最新的数据采集模块

百般思念 提交于 2020-07-28 10:48:00

以后再也不用安装安装 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。
    • 在您的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就可以在Elasticsearch中存储加密内容,以此方式来管理Elastic agent。

以下为Kibana上的Ingest manager的首页
在这里插入图片描述
这里包含几个关键组件:

  • 集成(Integrations)
  • 配置(Configurations)
  • Fleet
  • 数据流(Data Streams)
  • 注册代理(Enroll New Agent)

他们的作用如下图:
在这里插入图片描述

Ingest manager组件简介

集成(Integrations)

是上图的Package Manager,通过集成(Integrations),我们可以获取各种开箱即用的数据摄取工具,目前默认为用户安装了两个集成模块:

分别是Elastic EndpointSystem。他们对应的是主机的安全数据采集和资源指标数据采集。
在这里插入图片描述
提供的开箱即用的集成模块有:
在这里插入图片描述
注意,如需使用这些模块,是需要单独安装(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版本离我们也不会太远了
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!