博客/工程

我们如何与Elastic团队合作,使Grafana的Elasticsearch数据源更加强大

2021年7月29日 4分钟

早在3月份,我们就宣布了这一点bob电竞频道Grafana Labs与Elastic合作为Grafana构建官方Elasticsearch插件。正如我们的首席执行官Raj Dutt当时所写的,我们的“大帐篷”哲学“意味着我们希望支持用户所热衷的数据源。Elasticsearch是最受欢迎的数据平台之一,可以在Grafana中可视化。”

事实上,Grafana实验室和Elastic之间的合作甚至在这一消息宣bob电竞频道布之前就已经开始了。对于今年年初发布的Grafana 7.4.0,我们使用React完全重写了Elasticsearch查询编辑器,并从Elastic工作人员那里得到了许多有价值的反馈。与此同时,Elastic工程师开始为Grafana贡献一些bug修复和特性实现。从那时起,我们开始接触我们的公共Slack,并讨论共享路线图。

一起制定路线图

在正式合作后的前几周,我们讨论了插件的未来,如何消除技术债务以让我们更快地前进,以及如何专注于实现这一目标。

最重要的步骤之一是慢慢地(但稳定地)远离查询构建器的前端实现。这对用户来说是完全不可见的,但到目前为止,这两种不同的实现是Elasticsearch数据源中出现错误和缓慢开发的主要原因。我们的两个团队都认为,为了在实现新功能之前使数据源更加可靠,这是非常必要的一步。

Grafana 8.1新增功能

到目前为止,Grafana的目标是只支持OSS-Elasticsearch特性,但从Grafana 8.1.0(现在是beta版)开始,目标已经转移到包含X-Pack的功能仍然可以免费使用

考虑到这一点,我们与Elastic团队合作,在8.1.0中添加了以下特性。

对搜索冻结索引的额外支持

在基于时间的索引中切片数据是Elasticsearch用户的一个流行选择,通常较旧的索引(或包含较旧数据的索引)被访问的频率较低,并且不会获得任何新数据。

但是,这些旧数据对于执行数据的长期分析仍然很有用,在这种情况下,响应时间不需要是即时的。在这种情况下,冻结这些旧索引允许Elasticsearch减少其资源占用。

允许搜索冻结指数是一个很受欢迎的请求,它可以解除Elasticsearch用户的封锁,这样他们就可以更好地利用他们在Grafana仪表板中的数据。

因为Elasticsearch不会在内存中保存冻结索引信息,所以在这些索引上执行搜索可能会导致集群上的负载比通常情况下更高。因此,用户需要在数据源级别手动启用该特性:

聚合速率

速率聚合计算出现在date_histogram bucket中的文档或字段的速率。这是一个高度Elasticsearch中请求的特性在7.10.0版本中引入,将使Grafana用户能够从他们的数据中获得更多的信息。

它可以帮助回答以下问题:“我的应用程序每秒生成多少日志?”或者“我的电子商务应用每天能产生多少销售额?”

Top_metrics聚合

类似于top_hits聚合, top_metrics聚合允许用户使用最高(或最低)排序值从文档中选择指标。Top_metrics通常更有效,所以我们将重点放在这个版本中实现它。关于此聚合的更多信息可以在Elasticsearch文档

其他修复和改进

在这个版本和之前的版本中也有许多修复和改进,比如更好地支持模板变量,现在可以在每个输入字段中引用模板变量。

未来的计划

下一步,我们想让数据源更容易使用,为lucene查询引入语法高亮显示和自动完成,SQL支持和一些新的聚合。我们也期待着支持更高级的可观察性用例,比如像Kibana (Elastic APM)一样可视化存储在Elasticsearch中的跟踪。

我们很高兴能继续与Elastic团队合作,使Elasticsearch和Grafana的使用更好。特别感谢Ester, Chris和Dimitri的贡献和宝贵的反馈!