ELK Stack 教程 – 有效地发现、分析和可视化您的数据
随着越来越多的 IT 基础设施转向云,对公共云安全工具和日志分析平台的需求也在迅速增加。无论组织规模大小,每天都会生成大量数据。大量此类数据由公司的 Web 服务器日志组成。日志是最重要但经常被忽视的信息来源之一。每个日志文件都包含宝贵的信息,这些信息大多是非结构化的,毫无意义。如果不对这些日志数据进行仔细和详细的分析,组织可能会忽视围绕它的机会和威胁。这是日志分析工具派上用场的地方。ELK Stack 或 Elastic Stack 是一个完整的日志分析解决方案,有助于深入搜索,分析和可视化从不同机器生成的日志。通过这篇关于 ELK Stack 教程的博客,我会给你一些关于它的见解。
但在开始之前,让我列出我将要讨论的主题:
您可以阅读此 ELK 教程录音,其中我们的ELK 堆栈培训专家通过示例详细解释了这些主题,这些示例将帮助您更好地理解这个概念。
什么是 ELK 堆栈?– ELK 堆栈教程
众所周知,ELK Stack 最近更名为 Elastic Stack。它是三个开源工具的强大集合:Elasticsearch、Logstash 和 Kibana。
这三种不同的产品最常一起用于不同 IT 环境中的日志分析。使用 ELK Stack,您可以执行集中日志记录,这有助于识别 Web 服务器或应用程序的问题。它让您可以在一个位置搜索所有日志,并通过在特定时间范围内关联多个服务器的日志来识别跨多个服务器的问题。
现在让我们详细讨论这些工具中的每一个。
日志存储
Logstash 是数据收集管道工具。它是 ELK Stack 的第一个组件,它收集数据输入并将其提供给 Elasticsearch。它一次从不同来源收集各种类型的数据,并立即提供以供进一步使用。
弹性搜索
Elasticsearch 是一个基于 Lucene 搜索引擎并使用 RESTful API 构建的 NoSQL 数据库。它是一个高度灵活的分布式搜索和分析引擎。此外,它还通过水平可扩展性提供简单的部署、最大的可靠性和轻松的管理。它提供高级查询以执行详细分析并集中存储所有数据以快速搜索文档。
基巴纳
Kibana 是一个数据可视化工具。它用于可视化 Elasticsearch 文档并帮助开发人员立即了解它。Kibana 仪表板提供各种交互式图表、地理空间数据、时间线和图表,以可视化使用 Elasticsearch 完成的复杂查询。使用 Kibana,您可以根据您的特定需求创建和保存自定义图表。
本 ELK Stack 教程博客的下一部分将讨论 ELK Stack 架构以及数据如何在其中流动。
ELK 堆栈架构 – ELK 堆栈教程
以下是 ELK Stack 的架构,显示了 ELK 中日志流的正确顺序。在这里,Logstash 根据提供的过滤条件收集和处理从各种来源生成的日志。Logstash 然后将这些日志通过管道传输到 Elasticsearch,然后 Elasticsearch 分析和搜索数据。最后,使用 Kibana,可以根据要求对日志进行可视化和管理。
ELK 堆栈安装 – ELK 堆栈教程
第 I 步: 转到https://www.elastic.co/downloads。
第二步:选择并下载 Elasticsearch。
第三步:选择并下载 Kibana。
第四步:选择并下载Logstash。
第五步:解压所有三个文件 以获取它们的文件夹文件。
安装 Elasticsearch
STEP VI:现在打开elasticsearch文件夹并转到其 bin文件夹。
第七步:双击elasticsearch.bat文件,启动elasticsearch服务器。
第八步:等待elasticsearch服务器启动。
STEP IX:要检查服务器是否已启动,请转到浏览器并输入localhost:9200。
安装 Kibana
步骤 X:现在打开kibana 文件夹并转到其 bin 文件夹。
步骤 XI:双击 kibana.bat 文件以启动 elasticsearch 服务器。
第十二步: 等待 kibana 服务器启动。
第十三步:要检查服务器是否已启动,请转到浏览器并输入localhost:5601。
安装 Logstash
第十四步: 现在打开logstash 文件夹。
第十五步:要测试您的 logstash 安装,请打开命令提示符并转到您的 logstash 文件夹。现在输入:
1
|
binlogstash -e 'input { stdin { } } output { stdout {} }'
|
第十六步:等待直到命令提示符上出现“Pipeline main started”。
步骤 XVII: 现在 在命令提示符下输入一条消息并按回车键。
步骤 XVIII: Logstash 将时间戳和 IP 地址信息附加到消息并在命令提示符下显示。
由于我们已完成安装,现在让我们更深入地了解这些工具。让我们从 Elasticsearch 开始。
Elasticsearch – ELK 堆栈教程
如前所述,Elasticsearch 是一个高度可扩展的搜索引擎,它运行在基于 Java 的 Lucene 引擎之上。 它基本上是一个 NoSQL 数据库;这意味着它以非结构化格式存储数据,并且不能对任何类型的事务执行 SQL 查询。换句话说,它将数据存储在文档中,而不是表和模式中。要获得更好的图片,请查看下表,该表格显示了 Elasticsearch 中的内容与数据库相比。
现在让我们熟悉一下 Elasticsearch 的基本概念。
当您使用 Elasticsearch 时,您需要遵循三个主要步骤:
- 索引
- 映射
- 搜索
让我们一一详细讨论它们。
索引
索引是 Elasticsearch 添加数据的过程。之所以称为“索引”,是因为当数据输入 Elasticsearch 时,它会被放入 Apache Lucene 索引中。Elasticsearch 然后使用这些 Lucene 索引来存储和检索数据。索引类似于 CRUD 操作的创建和更新过程。
索引方案由name/type/id 组成, 其中 name 和 type 是必填字段。如果您不提供任何 ID,Elasticsearch 将自行提供一个 ID。然后将整个查询附加到 HTTP PUT 请求,最终 URL 如下所示:与 HTTP 负载一起发送一个包含字段和值的 JSON 文档。PUT name/type/id
以下是创建美国客户文档的示例,其中包含字段中的详细信息。
PUT /customer/US/1
{
"ID" : 101,
"FName" : "James",
"LName" : "Butt",
"Email" : "jbutt@gmail.com",
"City" : "New Orleans",
"Type" : "VIP"
}
它将为您提供以下输出:
此处显示文档已创建并添加到索引中。
现在,如果您尝试在不更改 id 的情况下更改字段详细信息,Elasticsearch 将使用当前详细信息覆盖您现有的文档。
PUT /customer/US/1
{
"ID" : 101,
"FName" : "James",
"LName" : "Butt",
"Email" : "jbutt@yahoo.com",
"City" : "Los Angeles",
"Type" : "VVIP"
}
此处显示文档已使用索引的新详细信息进行更新。
映射
映射是设置索引模式的过程。通过映射,您可以将架构中存在的属性的数据类型告诉 Elasticsearch。如果在预索引时未针对特定对象进行映射,则 Elasticsearch 将动态地将通用类型添加到该字段中。但是这些泛型类型非常基础,而且大多数时候都不能满足查询期望。
现在让我们尝试映射我们的查询。
PUT /customer/
{
"mappings":{
"US":{
"properties":{
"ID":{
"type": "long"
},
"FName" : {
"type" : "text"
},
"LName" : {
"type" : "text"
},
"Email" : {
"type" : "text"
},
"City" : {
"type" : "text"
},
"Type" : {
"type" : "text"
}
}
}
}
}
当您执行查询时,您将获得这种类型的输出。
搜索
具有特定索引和类型的一般搜索查询将如下所示: POST index/type/_search
现在让我们尝试搜索“客户”索引中存在的所有客户的详细信息。
POST /customer/US/_search
执行此查询时,将生成以下结果:
但是当您想要搜索特定结果时,Elasticsearch 提供了三种执行方式:
-
使用查询
使用查询,您可以搜索某些特定的文档或条目。例如,让我们对属于“VVIP”类别的客户执行搜索查询。
POST /customer/US/_search
{
"query": {
"match": {
"Type": "VVIP"
}
}
}
-
使用过滤器
使用过滤器,您可以进一步缩小搜索范围。以下是搜索 ID 为“101”的 VVIP 客户的示例:
POST /customer/_search
{
"query": {
"match": {
"Type": "VVIP"
}
},
"post_filter": {
"match" : {
"ID" : 101
}
}
}
如果您执行此查询,您将获得以下类型的结果:
-
使用聚合
聚合是一个框架,它有助于通过搜索查询聚合数据。可以将小型聚合连接在一起,以构建所提供数据的复杂摘要。让我们执行一个简单的聚合来检查我们的索引中有多少类型的客户:
POST /customer/_search
{
"size": 0,
"aggs" : {
"Cust_Types" : {
"terms" : { "field" : "Type.keyword" }
}
}
}
现在,让我们看看如何检索 一个从索引数据集。
获取 数据
要检查索引中的文档列表,您只需要按以下格式发送 HTTP GET 请求: GET index/type/id
让我们尝试检索 'id' 等于 2 的客户的详细信息:
GET /customer/US/2
成功执行后,它将为您提供以下类型的结果。
使用 Elasticsearch,您不仅可以浏览数据,还可以删除或移除文档。
删除数据
使用删除约定,您可以轻松地从索引中删除不需要的数据并释放内存空间。要删除任何文档,您需要按以下格式发送 HTTP DELETE 请求:DELETE index/type/id.
现在让我们尝试删除 id 为 2 的客户的详细信息。
DELETE /customer/US/2
执行此查询时,您将获得以下类型的结果。
因此,到此结束使用 Elasticsearch 进行 CRUD 操作的基础知识。了解这些基本操作将帮助您执行不同类型的搜索,并且您足以继续学习 ELK 教程。但是如果你想深入学习Elasticsearch,可以参考我的博客Elasticsearch Tutorial。
现在让我们从 ELK Stack 的下一个工具开始,它是 Logstash。
Logstash – ELK 堆栈教程
正如我已经讨论过的,Logstash 是一个管道工具,通常用于收集和转发日志或事件。它是一个开源的数据收集引擎,可以动态地整合来自各种来源的数据,并将其规范化到指定的目的地。
Logstash 使用许多输入、过滤器和输出插件,可以轻松转换各种事件。至少,Logstash 需要在其配置文件中指定的输入和输出插件来执行转换。以下是 Logstash 配置文件的结构:
input {
...
}
filter {
...
}
output {
...
}
如您所见,整个配置文件分为三个部分,每个部分都包含一个或多个插件的配置选项。这三个部分是:
- 输入
- 筛选
- 输出
您也可以在配置文件中应用多个过滤器。在这种情况下,它们的应用程序的顺序将与配置文件中的规范顺序相同。
现在让我们尝试配置 CSV 文件格式的美国客户数据集文件。
input{
file{
path => "E:/ELK/data/US_Customer_List.csv"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter{
csv{
separator => ","
columns =>["Cust_ID","Cust_Fname","Cust_Lname","Cust_Email","Cust_City","Cust_Type"]
}
mutate{convert => ["Cust_ID","integer"]}
}
output{
elasticsearch{
hosts => "localhost"
index => "customers"
document_type => "US_Based_Cust"
}
stdout{}
}
要将此 CSV 文件数据插入到 elasticsearch 中,您必须通知 Logstash 服务器。
为此,请按照以下步骤操作:
- 打开命令提示符
- 进入Logstash的bin目录
- 输入:logstash – f X :/foldername/config_filename.config并回车。一旦您的 logstash 服务器启动并运行,它将开始将您的数据从文件传输到 Elasticsearch。
如果要检查数据是否插入成功,请转到 sense 插件并键入:GET /customers/
它将为您提供已创建的文档数量。
现在如果你想可视化这些数据,你必须使用 ELK Stack 的最后一个工具,即 Kibana。因此,在本 ELK 堆栈教程的下一部分中, 我将讨论 Kibana 及其使用方法,它可以将您的数据可视化。
Kibana – ELK 堆栈教程
如前所述,Kibana 是一个开源的可视化和分析工具。它有助于可视化由 Logstash 传输并存储到 Elasticsearch 中的数据。您可以使用 Kibana 搜索、查看这些存储的数据并与之交互,然后将其可视化为各种图表、表格和地图。 Kibana 基于浏览器的界面简化了海量数据,并反映了实时变化弹性搜索查询。此外,您还可以轻松创建、自定义、保存和共享您的仪表板。
一旦你学会了如何使用 Elasticsearch 和 Logstash,学习 Kibana 就没什么大不了了。在 ELK 教程博客的这一部分中,我将向您介绍对数据执行分析所需的不同功能。
-
管理页面
这是您必须执行 Kibana 运行时配置的地方。在此页面中,您需要为搜索指定一些内容。请参阅以下示例,其中我为“客户”索引配置了条目。
如您所见,在“索引模式”字段中,您需要指定要使用的索引。在“时间过滤器字段名称”中,确保将其选择为@timestamp。然后您可以继续并单击“创建”以创建索引。如果您的索引创建成功,您将看到以下类型的页面:
-
在这里,您可以根据您的要求从下拉列表中选择不同的过滤器。此外,为了释放内存,您还可以删除特定索引。
-
发现页面
通过“发现”页面,您可以访问与所选索引模式匹配的每个索引的每个文档。您可以轻松地交互和探索 Kibana 服务器上存在的每一点数据。此外,您可以查看文档中的数据并对其执行搜索查询。
您可以在下面看到,我正在搜索来自“洛杉矶”的“VIP”客户。
-
因此,如您所见,我们只有一位来自洛杉矶的 VIP 客户。
-
可视化页面
可视化 页面使您能够以图表、条形图、饼图等形式可视化 Elasticsearch 索引中存在的数据。您甚至可以在此处构建仪表板,以显示基于 Elasticsearch 查询的相关可视化。通常,使用一系列 Elasticsearch 聚合查询来提取和处理数据。当您转到“可视化”页面并搜索您保存的可视化时,您也可以创建一个新的可视化。
您可以以任何形式聚合您的数据。为方便用户,提供了不同类型的可视化选项。
让我向您展示如何根据用户类型可视化美国客户数据。
-
要执行可视化,请按照以下步骤操作:
- 选择可视化类型。[这里我用的是馅饼]
- 在聚合字段中,从下拉列表中选择“术语”。
- 在“字段”中,选择要基于其执行搜索的字段类型。
- 您也可以指定可视化的顺序和大小。
- 现在单击执行按钮以生成饼图。
-
仪表板页面
仪表板页面显示一组已保存的可视化。您可以在此处添加新的可视化,也可以使用任何已保存的可视化。
Timelion 页面
Timelion 是一个时间序列数据可视化工具,它将完全独立的数据源整合到一个界面中。它由一种单行表达式语言驱动,用于检索时间序列数据、执行计算以简化复杂问题并可视化结果。
开发工具页面
Kibana的 开发工具页面包含开发工具,例如“Beta Sense”插件,用于与 Elasticsearch 中的数据进行交互。它通常被称为 Kibana 的控制台。以下是我使用 Kibana 的 sense 插件搜索类型为“US_based_cust”的“客户”索引的示例:
这篇关于 ELK 堆栈教程的博客到此结束。现在您已准备好使用 Logstash、Elasticsearch 和 Kibana 对您想要的任何数据执行各种搜索和分析。
- 点赞
- 收藏
- 关注作者
评论(0)