如何在多个Elasticsearch索引中聚合Kibana信息?

时间:2014-09-01 10:53:06

标签: logging elasticsearch logstash kibana

我们正在设置来自多个相关应用程序的日志,以便将日志事件导入Elasticsearch(通过Logstash)。可以直接创建Kibana仪表板来显示每个应用程序的日志索引,但由于应用程序是相关的,并且其活动属于同一个管道,因此构建一个显示从不同应用程序收集的聚合信息的仪表板会很棒。这样的仪表板对跟踪故障和性能问题特别有用。

现在我可以看到实现聚合仪表板的三种主要方式:

  1. 保留单独的应用程序日志并配置将使用来自不同应用程序的信息的Kibana仪表板。我担心这可能是一项具有挑战性的任务,我甚至不确定Kibana是否完全支持它。
  2. 修改应用程序日志记录,以便它们都将记录到同一索引。我不喜欢的是,日志事件结构必须在应用程序之间统一,并且由不同语言的不同人员构建。我已经失去了对集中控制日志等低级细节的信念。
  3. 保留应用程序日志和相应的Elastichsearch索引,但是设置一个包含聚合信息的新索引。 This article描述了如何配置Elasticsearch以将其日志转储到Logstash,然后Logstash将它们插回Elasticsearch进行搜索。乍一看,这种方法可能看起来令人惊讶:为什么需要再次将日志数据重新插入到同一个数据库中?它是另一个索引,它增加了开销,使用了更多空间等。但它提供了以适合聚合Kibana仪表板的方式设置索引的机会。
  4. 我想知道是否有人经历过类似的困境,可以分享他们的经历。

2 个答案:

答案 0 :(得分:3)

如果您不打算使用带时间戳的索引,我相信您可以将默认索引设置为_all

使用菜单,转到配置,单击索引选项卡,然后将时间戳设置为"无"和_all的默认索引。 JSON模式最终将包含以下内容:

  "index": {
    "interval": "none",
    "pattern": "[logstash-]YYYY.MM.DD",
    "default": "_all",
    "warm_fields": false
  },

如果您需要带时间戳的索引,则需要选择适当的间隔并输入以逗号分隔的索引列表,每个索引都以正确的格式指定。

答案 1 :(得分:1)

我们遇到了同样的问题,但是从不同的角度来看。

我需要从Kibana的2个指数中获取数据。我们的数据结构在两个指数中是相同的。

所以,我手动添加了第二个索引(部分设置 - >对象):

{
  "index": [
    "index_one",
    "index_two"
  ],
 ...
}

它帮助我从那些我需要的指数中获取数据。