【问题标题】:What is the role of Logstash Shipper and Logstash Indexer in ELK stack?Logstash Shipper 和 Logstash Indexer 在 ELK 堆栈中的作用是什么?
【发布时间】:2017-06-06 11:14:06
【问题描述】:

我一直在为我的新项目在线学习 ELK 堆栈。

虽然大多数技术博客都是关于如何设置 ELK。

虽然我需要更多信息才能开始。

  1. 什么是 Logstash?此外,还有 Logstash Shipper 和 Indexer。
  2. Elasticsearch 的作用是什么?

如果不是正确的答案,任何线索也将不胜感激。

【问题讨论】:

  • Elasticsearch 是一个具有有效搜索机制的美化数据库。 Logstash 是可以以 Elasticsearch 友好的方式交付数据的众多数据前端之一 - 因此,Logstash 的索引器对数据进行索引(提取字段,决定将数据存储在哪个索引中等),其 Shipper 将数据发送到 Elasticsearch。 ..

标签: elastic-stack


【解决方案1】:

我会试着用一个例子给你解释一下 elk stack。

应用程序在我们集群中的任何机器上生成具有相同格式(timestamp | loglevel | message)的日志,并将这些日志写入某个文件。

Filebeat(来自 elk 的 logshipper)跟踪该文件,定期收集对文件的任何更新,并通过网络将它们转发到 logstash。与 logstash 不同,Filebeat 是一个轻量级的应用程序,它使用的资源非常少,所以我不介意在集群中的每台机器上运行它。它会注意到 logstash 何时关闭并等待传输数据,直到 logstash 再次运行(没有日志丢失)。

Logstash 通过网络接收来自所有 log shiller 的消息,并对消息应用过滤器。在我们的例子中,它将每个条目拆分为时间戳、日志级别和消息。这些是单独的字段,以后可以轻松搜索。任何不符合该格式的消息都会得到一个字段:invalid logformat。这些带有字段的消息现在以弹性搜索可以处理的速度转发到弹性搜索。

弹性搜索存储所有消息和索引(准备快速搜索)消息中的所有字段。这是我们的数据库。

然后我们使用 Kibana(也来自 elk)作为 gui 来访问日志。在 kibana 中,我可以执行以下操作:显示今天下午 3 点到 5 点之间的所有日志,日志级别错误,其消息包含 MyClass。 Kibana 会向 elasticsearch 询问结果并显示出来

【讨论】:

  • 我相信当你在这种情况下说 Logstash 时,你的意思是 Logstash Indexer。因为 elogstash Shipper 只运送日志。我说的对吗?
  • 据我所知,logstash shipper 已被 beats 取代。有不同的节拍都充当logstash的托运人,但用于不同类型的数据(文件日志、性能数据、网络活动......)。是的,当我谈论 logstash 时,它的 logstash 索引器
  • Beats 安装在轻量级 beat 代理将数据发送到 logstash 托运人的机器上。我的疑问是(如果我是对的),logstash 托运人是否从各种节拍中获取日志并通过某种方式合并它们将它们发送到索引器?只是一个疑问。
  • 基本上忘记了logstash托运人。甚至它的 github 页面也引用了其他更好的解决方案。
  • 据我了解,在集群系统中,您可以进行以下设置:Shipper --> Logstash --> Elastic ||| Logstash --> Logstash --> 弹性 |||托运人 --> 弹性 ||| Logstash --> Elastic 如果您在每个节点上使用 logstash,那么您将区分 logstash shipper(在每个节点上运行并简单地转发消息的 logstash)和 logstash indexer(应用过滤器并转发到 elasticsearch 的那个)
【解决方案2】:

我不知道,这是否有帮助,但是......无论如何......让我们举一个非常愚蠢的例子:我想对我附近的松鼠进行统计。每只松鼠都有一个名字,我们知道它们长什么样。每当看到松鼠吃坚果时,每个邻居都会记录一个日志。

ElasticSearch 是一个文档数据库,它在所谓的索引中构造数据。它能够将这些索引的片段(碎片)冗余地保存在多个服务器上,并为您提供出色的搜索功能。因此您可以非常快速地访问大量数据。

在这里,我们可能已经完成了如下所示的事件:

{
  "_index": "squirrels-2018",
  "_id": "zr7zejfhs7fzfud",
  "_version": 1,
  "_source": {
    "squirrel": "Bethany",
    "neighbor": "A",
    "@timestamp": "2018-10-26T15:22:35.613Z",
    "meal": "hazelnut",
  }
}

Logstash 是数据收集器和转换器。它能够通过其输入插件接受来自许多不同来源(文件、数据库、传输协议等)的数据。使用其中一个输入插件后,所有数据都存储在一个 Event 对象中,该对象可以使用过滤器进行操作(添加数据、删除数据、从其他来源加载其他数据)。当数据具有所需的格式时,可以将其分发到许多不同的输出。

如果邻居 A 提供的 MySQL 数据库包含 'squirrel'、'time' 和 'ate' 列,但邻居 B 喜欢使用列 'name'、'nut' 和 'when' 编写 CSV,我们可以使用Logstash 接受两个输入。然后我们重命名这些字段并解析这些邻居可能使用的不同日期时间格式。如果其中一位喜欢称 Bethany 为“Beth”,我们可以在此处更改数据以使其保持一致。最终我们将结果发送到 ElasticSearch(可能还有其他输出)。

Kibana 是一个可视化工具。它使您可以概览您的索引结构和服务器状态,并为您的 ElasticSearch 数据创建图表

在这里我们可以制作有趣的图表,例如“每分钟的松鼠目击数”或“最胖的松鼠(基于坚果摄入量)”

【讨论】:

    猜你喜欢
    • 2019-08-16
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 2021-03-27
    • 2014-08-13
    相关资源
    最近更新 更多