· 更多精彩内容,请下载阅读全本《Elastic Stack实战手册》
创作人:左卫东
审稿人:田雪松
Elastic Stack 完整版图
Elastic Stack 是一系列由 Elastic 公司开发的产品组件,能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。Elastic Stack 旧称 ELK Stack,主要有 Elasticsearch,Logstash,Kibana,Beats 四种组件组成。
Elastic Stack 功能丰富,他可以用来集中采集各类日志记录,这在识别 Web 服务器与应用程序相关的问题中起着重要作用。它使你可以在单个位置搜索所有日志,并通过在 IT 环境中找到的特定时间范围内,关联它们的日志来确定跨多个服务器的问题,这些特定时间范围包括 Web 分析,业务智能,合规性和安全性的用例。同样的,Elastic Stack 也可以将你海量的日志、指标和 APM 追踪集中到单一技术栈中,从而即时全面地监测环境中所发生的所有事件,并采取对策。
Elastic Stack 组件主要优点如下:
- 配置简单,开箱即用
上手简单,只需要修改几行配置,就能快速搭建起一套 Elastic Stack 平台。
- 多种数据源支持
Beats 组件支持多种数据类型,能够快速满足日志,指标,网络数据等多种数据源接入的需求。
- 性能优异
无论是数据写入还是实时检索,性能都相当优异。
-
集群扩展性强
Elasticsearch 和 Kibana 均可以进行灵活扩展,能够有效提高集群性能和高可用性。
- 多维度分析
得益于 Elasticsearch 强大的搜索能力和 Kibana 优秀的可视化功能,能够从多个维度,对数据进行聚合分析并且展示。
Elastic Stack 应用场景
Elastic Stack 除了采集提供采集各类日志的能力外,它还提供了许多开箱即用的场景,如企业搜索,可观测性,安全解决方案等。
企业搜索
Elastic 企业搜索由 Elasticsearch 提供支持,性能优异,同时其采用的相关性模型已针对实际的自然搜索进行优化且得到了实践验证,因此能够快速投入应用。同时它又提供了灵活的定制选项,可以让客户快速根据自身需要打造精致又自然的搜索体验。
可观测性
Elastic Stack 将您的可观测性数据统一到一个强大的数据存储中,便于您实时搜索并应用交互式分析。凭借日志、指标和 APM 追踪之间的直观导航,便能依赖 Machine Learning 暴露异常数值,并对您系统中发生的所有事件采取对策。同时提供良好的可视化体验,能够以最直观的方式展示您的数据,完美掌握系统运行状态。
安全解决方案
Elastic 安全助力分析师防御、检测威胁,并就威胁做出响应。免费、开放的解决方案提供了 SIEM、Endpoint Security、威胁搜寻、云监测等功能。通过整个环境无死角的恶意软件和勒索软件防御体系,避免破坏和损失。同时为从业人员提供直观的 UI ,简化事件管理。利用可视化功能进行监测和搜寻,描绘出攻击的来源、程度和时间线 — 通过分析师驱动型的关联性将信息转变为见解。通过内置式案例管理和自动化操作加快响应速度。
Elasticsearch 在 Elastic Stack 中的位置及能力
Elasticsearch 是一个分布式的免费且开放的搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,以其简单的 RESTful API、相关性搜索,高性能和高可扩展性而闻名,是 Elastic Stack 的核心组件。
Elasticsearch 在 Elastic Stack 中的作用
在 Elastic Stack 体系中,Elasticsearch 提供数据的存储及检索能力,并且它是最核心的组件。外部数据采集到 Elasticsearch 后,用户便可针对他们的数据运行复杂的查询,并使用聚合来检索自身数据的复杂汇总。
Elasticsearch Index
一个 Elasticsearch Index 指相互关联的文档集合。Elasticsearch 以 JSON 文档的形式存储数据。每个文档都会在一组键(字段或属性的名称)和它们对应的值(字符串、数字、布尔值、日期、数组自值、地理位置或其他类型的数据)之间建立联系。
Elasticsearch 使用的是一种名为倒排索引的数据结构,这一结构的设计可以允许十分快速地进行全文本搜索。倒排索引会列出在所有文档中出现的每个特有词汇,并且可以找到包含每个词汇的全部文档。
在创建索引的过程中,Elasticsearch 会存储文档并构建倒排索引,这样用户便可以近实时地对文档数据进行搜索。索引过程是在索引 API 中启动的,通过此 API 你既可向特定索引中添加 JSON 文档,也可更改特定索引中的 JSON 文档。
Elasticsearch 能力
Elasticsearch 很快
由于 Elasticsearch 是在 Lucene 基础上构建而成的,所以在全文本搜索方面表现十分出色。Elasticsearch 同时还是一个近实时的搜索平台,这意味着从文档索引操作到文档变为可搜索状态之间的延时很短,一般只有一秒(这个可以同过配置进行调整)。因此,Elasticsearch 非常适用于对时间有严苛要求的用例,例如安全分析和基础设施监测。
Elasticsearch 具有分布式的本质特征
Elasticsearch 中存储的文档分布在不同的容器中,这些容器称为分片,可以进行复制以提供数据冗余副本,以防发生硬件故障。Elasticsearch 的分布式特性使得它可以扩展至数百台(甚至数千台)服务器,并处理 PB 量级的数据。
Elasticsearch 包含一系列广泛的功能
除了速度、可扩展性和弹性等优势以外,Elasticsearch 还有大量强大的内置功能(例如数据汇总和索引生命周期管理),可以方便用户更加高效地存储和搜索数据。
Logstash 在 Elastic Stack 中的位置及能力
Logstash 是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到你最喜欢的“存储库”中。
Logstash 在 Elastic Stack 中的作用
Logstash 是 Elastic Stack 的核心产品之一,可用来对数据进行聚合和处理,并将数据发送到 Elasticsearch。Logstash 是一个开源的服务器端数据处理管道,允许你在将数据索引到 Elasticsearch 之前同时从多个来源采集数据,并对数据进行丰富和转换。
Logstash 能力
采集各种样式、大小和来源的数据
数据往往以各种各样的形式,或分散或集中地存在于很多系统中。Logstash 支持多种输入选择,可以同时从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从你的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。
实时解析和转换数据
数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便进行更强大的分析和实现商业价值。
Logstash 能够动态地转换和解析数据,不受格式或复杂度的影响,比如:
- 利用 Grok 从非结构化数据中派生出结构
- 从 IP 地址破译出地理坐标
- 将 PII (Personal Identifiable Information)数据匿名化,完全排除敏感字段
- 简化整体处理,不受数据源、格式或架构的影响
选择你的存储库,导出你的数据
尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索和分析带来无限可能,但它并非唯一选择。
Logstash 提供多种输出组件,你可以将数据发送你要指定的地方,并且能够灵活地解锁众多下游用例。
Logstash 扩展性
Logstash 采用可插拔框架,拥有 200 多个插件。你可以将不同的输入选择、过滤器和输出选择混合搭配、精心安排,让它们在管道中和谐地运行。
Kibana 在 Elastic Stack 中的位置及能力
Kibana 是一款适用于 Elasticsearch 的数据可视化和管理工具,可以提供实时的直方图、线形图、饼状图和表格等等。Kibana 同时还包括诸如 Canvas 和 Elastic Maps 等高级应用程序。Canvas 允许用户基于自身数据创建定制的动态信息图表,而 Elastic Maps 则可用来对地理空间数据进行可视化。
Kibana 在 Elastic Stack 中的作用
Kibana 可以被视作 Elastic Stack(之前称作 ELK Stack,分别表示 Elasticsearch、Logstash 和 Kibana)的制图工具,但也可将 Kibana 作为用户界面来监测和管理 Elastic Stack 集群并确保集群安全性,还可将其作为基于 Elastic Stack 所开发内置解决方案的汇集中心。
Kibana 能力
Kibana 与 Elasticsearch 和更广意义上的 Elastic Stack 紧密集成,这一点使其成为支持下列场景的理想之选:
搜索、查看并可视化 Elasticsearch 中所索引的数据,并通过创建柱状图、饼状图、表格、直方图和地图对数据进行分析。仪表板视图能将这些可视化元素集中到一起,然后通过浏览器加以分享,以提供有关海量数据的实时分析视图,为下列用例提供支持:
- 日志处理和分析
- 基础设施指标和容器监测
- 应用程序性能监测 (APM)
- 地理空间数据分析和可视化
- 安全分析
- 业务分析
- 机器学习
借助网络界面来监测和管理 Elastic Stack 实例并确保实例的安全。
针对基于 Elastic Stack 开发的内置解决方案(面向可观测性、安全和企业搜索应用程序),将其访问权限集中到一起。
Kibana 搜索及可视化流程
Kibana 允许对 Elasticsearch 索引中的数据进行可视化分析。当 Logstash(大型采集器)或 Beats(一系列单一用途的数据采集器)从日志文件和其他来源采集非结构化数据并将这些数据转化为结构化格式以用于 Elasticsearch 存储和搜索功能时,索引便会随之创建。
用户通过 Kibana 界面能够查询 Elasticsearch 索引中的数据,然后借助标准图表选项或诸如 Canvas 和 Maps 等内置应用对结果进行可视化。用户可在不同图表类型之中进行选择,更改数字的聚合方式,还可筛选出特定的数据片段。
Beats 在 Elastic Stack 中的位置及能力
Beats 是一个轻量的数据采集器,它集合了多种单一用途数据采集器。它们从成百上千或成千上万台机器和系统向 Logstash 或 Elasticsearch 发送数据。
Beats 在 Elastic Stack 中的作用
Beats 在 Elastic stack 中是数据的采集器,Beats 可以从你的各种环境中收集日志,指标,安全数据或者网路数据,然后通过来自主机、诸如 Docker 和 Kubernetes 等容器平台以及云服务提供商的必要元数据对这些内容进行记录,然后再传输到 Elastic Stack 中。
Beats 诞生的原因
ELK 在最初仅包含 Elasticsearch,Kibana,Logstash。在旧有的日志采集系统中,数据管道包含3个主要阶段,数据采集,数据处理和存储,其中的前两个阶段均由 Logstash 进行承担。然后由于 Logstash 的设计导致的内在问题,常常发生性能问题,尤其是在有复杂的管道处理流程中。因此,转移 Logstash 的想法也应用而生,因此将数据提取任务抽离之后,就诞生了Beats。
Beats 优点
即插即用
Beats 能够简化从关键数据源(例如云平台、容器和系统,以及网络技术)采集、解析和可视化信息的过程。只需一行命令,就能完成数据的采集。
扩展项强
Beats提供了大量不同类型的采集器,同时提供了自定义协议所需的构建基石,方便扩展,同时 Beats 社区在不断状态,未来将会诞生满足更多场景的 Beats。
轻量易部署
相较于 Logstash,Beats 体积更小,性能更高,能够快速接入不同的数据源进行采集。
Beats 系列
Beats 提供了多种类型的采集器,方便你即插即用,搞定大多数数据类型的采集。
Filebeats :采集日志文件
Filebeat 随附可观测性和安全数据源模块,这些模块简化了常见格式的日志的收集、解析和可视化过程,只需一条命令即可。之所以能实现这一点,是因为它将自动默认路径(因操作系统而异)与 Elasticsearch 采集节点管道的定义和 Kibana 仪表板组合在一起。不仅如此,Filebeat 的一些模块还随附了预配置的 Machine Learning 作业
Metricbeat :采集指标
将 Metricbeat 部署到你的所有 Linux、Windows 和 Mac 主机,并将它连接到 Elasticsearch 就大功告成了:你可以获取系统级的 CPU 使用率、内存、文件系统、磁盘 IO 和网络 IO 统计数据,还可针对系统上的每个进程获得与 top 命令类似的统计数据。
Packetbeat: 采集网络数据
HTTP 等网络协议能够让你密切监测应用程序延迟和错误、响应时间、SLA 性能、用户访问模式和趋势等等。 而 Packetbeat 则让你能够访问这些数据,了解流量的网络传输状态。这款工具完全采用被动模式,毫无延迟开销,并且不会妨碍你的基础架构。
Winlogbeat :采集 Windows 事件日志
用于密切监控基于 Windows 的基础设施上发生的事件。使用 Winlogbeat,将 Windows 事件日志流式传输至 Elasticsearch 和 Logstash。
Auditbeat :采集审计数据
你可以使用既有审计规则来轻而易举地收集数据,而无需重写规则。是谁在什么时间做了什么事情?Auditbeat 会记住所有这些原始的系统调用数据,以及相关联的路径,方便你了解所需的上下文信息。
Heartbeat :采集运行时间监控
无论你要测试同一台主机上的服务,还是要测试开放网络上的服务,Heartbeat 都能轻松生成运行时间数据和响应时间数据。
Functionbeat :无需服务器的采集器
你能够通过无服务器架构部署代码,省去了启动和管理额外的底层软件和硬件的麻烦。通过 Functionbeat,你能够同样简单地监测云端基础架构。
Journalbeat : journald日志采集器
开源社区一直在努力开发新的 Beats。
你可以通过链接查看其中的一些社区开发的 Beats:https://www.elastic.co/guide/en/beats/libbeat/current/community-beats.html
创作人简介:
左卫东,Elasticsearch 认证工程师