Logstash Shipper和Logstash Indexer在ELK堆栈中的作用是什么?

时间:2017-06-06 11:14:06

标签: elastic-stack

我一直在网上研究我的新项目的ELK堆栈。

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

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

  1. 什么是Logstash?此外,Logstash Shipper和Indexer。
  2. Elasticsearch的角色是什么?
  3. 如果没有正确的答案,任何线索也会受到赞赏。

2 个答案:

答案 0 :(得分:5)

我将尝试用一个例子向你解释elk堆栈。

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

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

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

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

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

答案 1 :(得分:0)

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

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

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

if([WCSession isSupported] && [self.session isPaired] && [self.session isWatchAppInstalled] && self.session.activationState == WCSessionActivationStateActivated)
{
    NSError *error;
    NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
    [self.session updateApplicationContext:dic error:&error];
}

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

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

Kibana是一种可视化工具。它使您可以大致了解索引结构和服务器状态,并为ElasticSearch数据创建图表

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