首页 文章

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

提问于
浏览
3

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

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

  • 保留单独的应用程序日志并配置将使用来自不同应用程序的信息的Kibana仪表板 . 我担心这可能是一项具有挑战性的任务,我甚至不确定Kibana是否完全支持它 .

  • 修改应用程序日志记录,以便它们都将记录到同一索引 . 我不喜欢的是,日志事件结构必须在应用程序之间统一,并且由不同语言的不同人员构建 . 我已经失去了对集中控制日志等低级细节的信心 .

  • 保留应用程序日志和相应的Elastichsearch索引,但是设置一个包含聚合信息的新索引 . This article描述了如何配置Elasticsearch将其日志转储到Logstash,然后Logstash将它们插回Elasticsearch进行搜索 . 乍一看,这种方法可能看起来很令人惊讶:为什么需要再次将日志数据重新插入到同一个数据库中?它是另一个索引,它增加了开销,使用了更多空间等 . 但它提供了以适合聚合Kibana仪表板的方式设置索引的机会 .

我想知道是否有人经历过类似的困境,可以分享他们的经历 .

2 回答

  • 1

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

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

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

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

  • 3

    我们面临同样的问题,但从不同的角度来看 .

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

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

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

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

相关问题