《精通Elastic Stack》阅读笔记
[印]Y.古普塔
[印]R.K.古普塔
Chapter 1 Elastic Stack 概述
ELK Stack —— Elasticsearch可以管理数据,Logstash可以读取不同来源的日志数据,Kibana能够可视化这些数据。
数据是由Logstash读取的,然后在Elasticsearch中完成索引。最后,我们能利用Kibana,从Elasticsearch中读取索引数据并以图表形式可视化数据。
1.1 ELK Stack简介
1.1.1 Logstash
Logstash是一个高灵活度的、具有丰富插件的、能从所选择的某个位置源读取数据的一种开源工具软件。它能按照所定义的配置信息来规范化数据,并根据需要将其发送到指定目的地。
1.1.2 Elasticsearch
Logstash读取的数据可输出到Elasticsearch中,完成数据的索引。Elasticsearch不仅用于数据的索引,还是一个全文检索的搜索引擎,具有高可扩展性,也能提供分布式系统的很多功能。Elasticsearch以索引的形式管理并维护数据,并通过相应的API实现对相关数据的查询、聚合分析等服务。
1.1.3 Kibana
Kibana使用Elasticsearch提供的API来读取/检索存放在Elasticsearch中的索引数据,并以图表等形式对这些数据进行可视化分析。Kibana是一种Web程序,能提供高度可配置的用户接口,能查询数据,生成大量用于可视化的图表及分析存储的数据。
1.2 Elastic Stack的诞生
Beats能以一种轻量代理Agents的方式,把数据输出到Logstash或者Elasticsearch中。如果需要,还可以通过使用libbeat库的方式,订制满足个性化需求的专属Beats。为什么用Beats比较轻量,不消耗内存
Beats和Logstash用于搜集、解析、传输数据;Elasticsearch负责对数据的索引,而这些索引最后会被Kibana用于数据可视化。在基于Elastic Stack的数据处理管道中,其他工具则用于增加系统安全性,提供通知,完成性能监控,完成设置等。
1.3 谁在使用Elastic Stack
在过去的几年间,基于Elastic Stack的应用在快速增长。
如果我们看一下该组织的用户,就会发现那些热衷于大数据分析、商业智能、数据可视化、日志分析、数据科学处理与应用等方面的人往往会愿意使用这个工具。
1.4 竞争者
Elastic Stack提供了处理各种类型数据的功能,而非仅仅局限于日志管理。
Chapter 2 走进Elasticsearch
2.1 Elasticsearch的起源
源于Lucene,它是一个由Apache软件基金会支持的优秀项目。
2.2 了解Elasticsearch的体系结构
索引(Index)包含一个或多个类型,类型可以认为是关系型数据库中的一个表。类型有一个或多个文档,文档中有一个或多个字段,字段是由键值对构成的。
2.3 Elastic API
Chapter 3 探索Logstash及其组件
3.1 Logstash简介
Logstash起源于Jordan Sissel研发的一个智能工程产品。
3.2 为什么需要用Logstash
Logstash用于对数据的抽取、转换、载入(ETL),而ETL是一个在数据仓库和商业智能领域中使用广泛的词汇。Logstash能从多系统中抽取数据,并执行一些处理或转换日志数据的操作(例如在载入和处理数据后完成过滤数据、移除字段、增加字段、分析数据等操作)。
由于它含有大量的能从各种不同数据源中读取数据的INPUT插件、转换数据的Filter插件,以及存储、输出数据的OUTPUT插件,从而使得Logstash成为一款几乎能处理所有数据的常用工具。
Chapter 4 Kibana界面
4.1 Kibana及其功能
Kibana是可视化工具,它用于可视化存储在Elasticsearch中的数据。
Kibana是一个独立的进程,需要下载后独立部署,它只能绑定一个ES集群,无法同时查询多个ES集群的数据。
kibana数据可视化相关的界面主要是Visualize、Timelion和Dashboard。
4.7 探索Visualize页面
可视化的设计需要如下四个步骤:
(1)选择可视化类型,创建可视化统计图表
(2)选择索引的名称
(3)选择搜索数据源
(4)可视化画布
4.7.1 了解聚合
4.7.1.1 bucket聚合
Chapter 5 使用Beats
5.1 Beats简介
Beats不是作为ELK Stack背后的Elastic公司的一个项目开始的,而是始于Packetbeat项目。在这里,开发人员访问并统计各服务器之间的通信情况,并通过数据传输为其提供信息。
之前,他们在每台需要获取信息的服务器上运行Logstash程序时,遇到了JVM消耗内存和资源过大的问题。而Packetbeat因其轻量级的数据传输能力广受欢迎,它可以将数据传输到Elasticsearch而无须消耗太多的内存和CPU资源。
Beats是一种开源的轻量级数据传送工具,可以收集主机或服务器中的操作数据并发送到Elasticsearch或Logstash中。
5.2 Beats与Logstash的不同之处
- Logstash会消耗大量的内存,并且需要较多的系统资源,Beats需要较少的系统资源,消耗的内存也很少。
- 安装在需要收集日志的操作系统上的Logstash是一套体量相对较大的软件;Beats则是轻量级的数据传输工具,它可以在多个操作系统之间传输数据。
- Logstash是基于Java语言编写的,它需要JVM的支持,而Beats是基于Go语言开发的。
- 如果从多个系统收集日志,则不需要在每个操作系统中运行Logstash服务;Beats可以在所有需要传输数据的操作系统之间运行。
简而言之,Logstash提供数据ETL(数据的提取、变换和加载)的功能;而Beats是轻量级的数据传输工具,能将数据传输到Logstash或Elasticsearch中,其间没有对数据进行任何转换。
5.3 Beats如何融入Elastic Stack
LIBBEAT将网络数据(Packetbeat)、日志文件(Filebeat)、指标(Metricbeat)传输到Elasticsearch或者Logstash中。
5.4 不同类型的Beats组件概述
5.4.1 Elastic团队开发的Beats组件
5.4.1.3 Filebeat
Filebeat组件的灵感来自于Logstash-forwarder项目,它已经被企业在生产环境中用了很长时间。通过以全新的方式对Logstash-forwarder重新封包,为Filebeat的发展铺垫了道路。
Filebeat是一个开源的日志传送工具,传输来自多个操作系统的日志,且消耗最少的资源。
5.5 Elastic 团队开发的Beats组件
5.5.1 了解Filebeat
Filebeat由两个主要组成部分组成:prospector和 harvester。这些组件一起工作来读取文件并将事件数据发送到您指定的output。
开始使用filebeat:
https://www.cnblogs.com/cjsblog/p/9445792.html
Nginx相关介绍:
https://www.cnblogs.com/wcwnina/p/8728391.html
Chapter 6 Elastic Stack实战
6.1 理解问题场景
考虑一个公司的内网,这个内网包括几个模块,用来帮助员工处理公司的事件和流程。这些模块如下:
- 员工信息管理系统 :注册用户并完成信息提供。
- 培训 :设置培训、培训注册、记录考勤等。
- 绩效管理系统 :管理所有员工的评估周期和评估内容。
- 休假管理 :员工使用这个模块申请、批准或拒绝休假。这个模块还可以有默认的休假类型及统计、假期列表等。
- 博客 :由公司员工共享知识的内部博客
- 论坛
- Wiki :公司的Wiki,列出了项目、流程、策略等课共享的信息。
- 文档库 :集中保存公司所有必需的文档,并为不同的文档设置相关权限。
- 其他几个模块 :这些模块有助于向员工发送通知、生日、周年纪念等内容。