关于devops:ELK-教程-高效发现分析和可视化你的数据

42次阅读

共计 6878 个字符,预计需要花费 18 分钟才能阅读完成。

【注】本文译自:https://www.edureka.co/blog/e…
  随着越来越多的 IT 基础设施转身云计算,对公共云平安工具和日志剖析平台的需要也在迅速减少。不论组织的规模有多大,每天都会生成大量的数据。这些数据中有相当一部分是由公司的 Web 服务器日志组成的。日志是最重要的信息起源之一,但往往被忽视。每个日志文件都蕴含一些贵重的信息,这些信息大多是非结构化的,没有任何意义。如果不对此日志数据进行详尽的剖析,那么企业可能会漠视其四周的机会和威逼。这是日志剖析工具十分有用的中央。ELK Stack 或 Elastic Stack 是残缺的日志剖析解决方案,它有助于深刻搜寻、剖析和可视化不同机器生成的日志。通过本教程,我将为您提供相干见解。
  首先,让咱们列出要探讨的主题:

  • 什么是 ELK Stack?
  • ELK Stack 架构
  • ELK Stack 装置
  • Elasticsearch 教程
  • Logstash 教程
  • Kibana 教程

  本教程将帮忙您一起了解 Elasticsearch、Logstash 和 Kibana 的基础知识,并帮忙您在 ELK Stack 中打下松软的根底。
  首先让咱们来理解什么是 ELK Stack。

什么是 ELK Stack?


  家喻户晓的 ELK Stack 最近被更名为 Elastic Stack。它是三个开源工具的弱小汇合:Elasticsearch、Logstash 和 Kibana。
  这三种不同的产品最常一起用于不同 IT 环境中的日志剖析。应用 ELK Stack,您能够执行集中式日志记录,这有助于辨认 Web 服务器或应用程序的问题。它使您能够在一个中央搜寻所有日志,并通过在特定工夫范畴内关联多个服务器的日志来辨认跨多个服务器的问题。
  当初让咱们具体探讨这些工具。

Logstash

Logstash 是数据收集管道工具。它是 ELK Stack 的第一个组件,它收集数据输出并将其输出到 Elasticsearch。它能够一次从不同起源收集各种类型的数据,并立刻提供以备未来应用。

Elasticsearch

Elasticsearch 是基于 Lucene 搜索引擎的 NoSQL 数据库,并应用 RESTful API 构建。它是一个高度灵便的分布式搜寻和剖析引擎。此外,它通过程度可伸缩性提供了简略的部署、最大的可靠性和易于治理的性能。它提供高级查问以执行详细分析,并集中存储所有数据以疾速搜寻文档。

Kibana

Kibana 是一种数据可视化工具。它用于可视化 Elasticsearch 文档,并帮忙开发人员立刻对其进行深刻理解。Kibana 仪表板提供了各种交互式图表、天文空间数据、工夫线和图表,以可视化应用 Elasticsearch 实现的简单查问。应用 Kibana,您能够依据本人的特定需要创立和保留自定义图形。
  下一部分将探讨 ELK Stack 架构以及其中的数据流向。

ELK Stack 架构

  以下是 ELK Stack 的架构,显示了 ELK 中日志流的正确程序。在此,Logstash 会依据提供的过滤条件来收集和解决从各种起源生成的日志。而后,Logstash 将这些日志通过管道传输到 Elasticsearch,而后 Elasticsearch 剖析和搜寻数据。最初,应用 Kibana,能够依据要求对日志进行可视化和治理。

ELK Stack 装置

第 I 步:关上 https://www.elastic.co/downloads。

第 II 步:抉择并下载 Elasticsearch。
第 III 步:抉择并下载 Kibana。
第 IV 步:抉择并下载 Logstash。
第 V 步:解压缩所有三个文件以获取对应文件夹的文件。

装置 Elasticsearch

第 VI 步:当初关上 elasticsearch 文件夹 并转到 bin 文件夹
第 VII 步:双击 elasticsearch.bat 文件以启动 elasticsearch 服务器。

第 VIII 步:期待 elasticsearch 服务器启动。
第 IX 步:要查看服务器是否已启动,请转到浏览器并键入 localhost:9200

装置 Kibana

第 X 步:当初关上 kibana 文件夹 并转到 bin 文件夹
第 XI 步:双击 kibana.bat 文件以启动 kibana 服务器。

第 XII 步:期待 kibana 服务器启动。
第 XIII 步:要查看服务器是否已启动,请转到浏览器并键入 localhost:5601

装置 Logstash

第 XIV 步:当初关上 logstash 文件夹
第 XV 步:要测试您的 logstash 装置,请关上命令提示符,而后转到 logstash 文件夹。当初输出:

binlogstash -e 'input {stdin {} } output {stdout {} }'

第 XVI 步:期待,直到命令提示符上显示“Pipeline main started”呈现在命令提示符下。

第 XVII 步:当初,在命令提示符下输出一条音讯,而后按 Enter 键。
第 XVIII 步:Logstash 将工夫戳和 IP 地址信息附加到音讯中,并将其显示在命令提示符下。
  既然咱们实现了装置,那么当初让咱们更深刻地钻研这些工具。让咱们从 Elasticsearch 开始。

Elasticsearch

  如前所述,Elasticsearch 是一个高度可扩大的搜索引擎,它运行在基于 Java 的 Lucene 引擎之上。它基本上是一个 NoSQL 数据库。这意味着它将以非结构化格局存储数据,并且无奈对任何类型的交易执行 SQL 查问。换句话说,它将数据存储在文档中,而不是表和模式中。为了取得更好的图像,请查看下表,该表显示了与数据库相比在 Elasticsearch 中的内容。

  当初让咱们相熟 Elasticsearch 的基本概念。
应用 Elasticsearch 时,须要遵循三个次要步骤:

  1. 索引
  2. 映射
  3. 搜寻

  让咱们一个一个具体地谈谈。

索引

  索引编制是增加数据 Elasticsearch 的过程。之所以称为“索引”,是因为将数据输出到 Elasticsearch 中后,它将被放入 Apache Lucene 索引中。而后,Elasticsearch 应用这些 Lucene 索引来存储和检索数据。索引编制与 CRUD 操作的创立和更新过程类似。索引计划由 名称 / 类型 /id 组成,其中名称和类型是必填字段。如果您不提供任何 ID,Elasticsearch 将本人提供一个 ID。而后,将整个查问附加到 HTTP PUT 申请中,最终 URL 如下:PUT name/type/id 与 HTTP 无效负载一起,还将发送蕴含字段和值的 JSON 文档。
  以下是创立一个美国客户的文档的示例,该文档及其字段中的详细信息。

PUT /customer/US/1 
{
    "ID": 101,
    "FName": "James",
    "LName": "Butt",
    "Email": "jbutt@gmail.com",
    "City": "New Orleans",
    "Type": "VIP"
}

  它会给你以下输入:

  这里显示文档已创立并增加到索引中。
  当初,如果您尝试在不更改标识的状况下更改字段详细信息,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

  当初,让咱们尝试搜寻“customer”索引中存在的所有客户的详细信息。

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 Stack 的下一个工具 Logstash。

Logstash

  正如我曾经探讨的那样,Logstash 是一种管道工具,通常用于收集和转发日志或事件。它是一个开源数据收集引擎,能够动静集成来自各种起源的数据并将其标准化到指定的指标地位。

  应用多个输出,过滤器和输入插件,Logstash 能够轻松转换各种事件。至多,Logstash 须要在其配置文件中指定的输出和输入插件来执行转换。以下是 Logstash 配置文件的构造:

input {...}

filter {...}

output {...}

  如您所见,整个配置文件分为三个局部,每个局部都蕴含一个或多个插件的配置选项。这三个局部是:

  1. input(输出)
  2. filter(过滤)
  3. output(输入)

  您也能够在配置文件中利用多个过滤器。在这种状况下,其应用程序程序将与配置文件中的标准程序雷同。
  当初,让咱们尝试配置 CSV 文件格式的美国客户数据集文件。

    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 服务器。
  为此,请执行以下步骤:

  1. 关上命令提示符
  2. 进入 Logstash 的 bin 目录
  3. 输出:logstash –f X:/foldername/config_filename.config 而后按回车。一旦您的 logstash 服务器启动并运行,它将开始将文件中的数据传输到 Elasticsearch 中。

      如果要查看是否胜利插入了数据,请转到 Sense 插件并键入:GET /customers/
      它会为您提供已创立的文档数。
      当初,如果要可视化此数据,则必须应用 ELK Stack 的最初一个工具,即 Kibana。因而,在本教程的下一部分中,我将探讨 Kibana 及其应用形式,以可视化您的数据。

    Kibana

      如前所述,Kibana 是一个开源的可视化和剖析工具。它有助于可视化 Logstash 管道传输并存储到 Elasticsearch 中的数据。您能够应用 Kibana 来搜寻,查看此存储的数据并与之交互,而后在各种图表,表格和地图中对其进行可视化。Kibana 的基于浏览器的界面简化了海量数据并反映了 Elasticsearch 查问中的实时变动。此外,您还能够轻松创立、自定义、保留和共享仪表板。
      一旦您理解了如何与 Elasticsearch 和 Logstash 一起应用,学习 Kibana 就不是什么小事了。在本教程的这一部分,我将向您介绍为了对数据进行剖析所需的各种性能。

    治理页面

      在这里,您必须执行 Kibana 的运行时配置。在此页面中,您须要指定一些搜寻内容。请参见以下示例,在该示例中,我曾经配置了“customer”索引的条目。

      如您所见,在“索引模式(Index Patterns)”字段中,您须要指定要应用的索引。确保在“工夫过滤器字段名称”中将其抉择为@timestamp。而后,您能够持续并单击创立以创立索引。如果索引创立胜利,您将看到以下页面类型:

      在这里,您能够依据须要从下拉列表中抉择不同的过滤器。此外,要开释内存,您还能够删除特定的索引。

    发现页面

      通过“发现”页面,您能够拜访存在于每个与所选索引模式匹配的每个索引的文档。您能够轻松地交互和浏览 Kibana 服务器上存在的所有数据。此外,您能够查看文档中存在的数据并对其进行搜寻查问。上面你能够看到,我正在搜寻来自“洛杉矶”的“VIP”客户。

      因而,如您所见,咱们只有一位来自洛杉矶的 VIP 客户。

    可视化页面

      可视化 页面使您能够可视化以图表、条形图、饼图等模式显示在 Elasticsearch 索引中的数据。您甚至能够在此处构建仪表板,这些仪表板将基于 Elasticsearch 查问显示相干的可视化成果。通常,应用一系列 Elasticsearch 聚合查问来提取和解决数据。当您转到“可视化”页面并搜寻保留的可视化时,或者能够创立一个新的可视化。

      您能够以任何模式汇总数据。为了不便用户,提供了不同类型的可视化选项。

      让我向您展现如何依据用户类型可视化美国客户数据。

      要执行可视化,请依照以下步骤操作:

  4. 抉择可视化类型。[这里我用的是饼图]
  5. 在汇总字段中,从下拉列表中抉择“术语(term)”。
  6. 在“字段(field)”中,抉择要执行搜寻的字段类型。
  7. 您还能够指定可视化的程序和大小。
  8. 当初单击执行按钮以生成饼图。

    仪表盘页面

    “仪表板”页面显示已保留的可视化的汇合。在这里,您能够增加新的可视化成果,也能够应用任何保留的可视化成果。

    Timelion 页面

      Timelion 是一个工夫序列数据可视化工具,它将齐全独立的数据源整合到一个界面中。它由一种单行表白语言驱动,可用于检索工夫序列数据,执行计算以简化简单问题并可视化后果。

    开发工具页面

      Kibana 的“开发工具”页面蕴含诸如“Beta Sense”插件之类的开发工具,可用于与 Elasticsearch 中存在的数据进行交互。它通常被称为 Kibana 的控制台。以下是一个示例,其中我应用了 Kibana 的 Sense 插件来搜寻类型为“US_based_cust”的“客户(customers)”索引:

      本文到此结束。当初,您能够应用 Logstash、Elasticsearch 和 Kibana 对任何数据执行各种搜寻和剖析。

正文完
 0