Grafana: Grafana 元查询(时间序列查询结果的通用转换)

创建于 2016-01-07  ·  90评论  ·  资料来源: grafana/grafana

将支持对所有数据源的缩放、导数、timeShift、movingAverage 等转换函数。

prioritimportant-longterm typfeature-request

最有用的评论

你至少可以实现一些简单的东西,比如加法和减法吗?

  • 指标 C:#A - #B
  • 指标 D:#A + #B

所有90条评论

我希望这个功能不会到目前为止发布:-)

:+1:

预计此功能何时发布用于 elasticsearch 数据源?

不是 ETA,希望今年 :)

如果我们有兴趣/有可能帮助开发 - 我们从哪里开始? 是否存在一些代码作为起点?

我认为还没有任何代码。 必须做出一般决定,元查询是在服务器端还是客户端执行。 我赞成做这个服务器端,以便它也可以用于警报。 缺点是这只适用于代理数据源,但我认为这是大多数人正在做的事情。

如果它有帮助的话 - 我已经考虑过这个问题并在 timelion 发布之前与 Rashid 进行了讨论(第一次私人提交来自我们讨论之前,所以我不能声称任何功劳:)

https://drive.google.com/drive/folders/0B9HCLnVMhNurTVY1UUJWZGxOdEU

我不知道这是否是正确的愿景,但我一直在考虑模块化组件,其中一些可能是用户客户端或服务器端。 服务器的优点包括缓存和最小化更大查询/组合的数据传输。 客户端的一个优势是其他数据源的权限是通过浏览器授予的,或者可能向现有图表添加新系列 - 客户端可以直接查询它。

我认为 timelion 代码将是一个有趣的开始。 我们使用 timelion 的 iframe 共享和 grafana 中的模板在 grafana 中创建模板化的 timelion 查询 - 有点 hacky,但要解决问题,直到出现更好的解决方案。

谢谢!

@yehosef嘿,感谢所有这些材料。 我也开始了这方面的工作,但后来,在经历了这些讨论之后,我意识到仅仅为 ES 添加 timeshift 并不是一个更好的主意,就像添加像 Torkeo 这样的元查询上面所建议的那样。 如果你们已经开始编写这部分代码,我可以帮助你们。 如果没有,我很高兴在稍后对您的设计进行评论时将其推进..

干杯。

@arcolife我们还没有开始研究它——如果有人能够拿起它会很高兴。

我不知道这些东西是如何工作的,但如果这使得这些功能更可行的话,我们可能会/愿意为这些功能的开发付费。 我不知道是否有针对此类事物的赏金系统 - 例如,raintank 或其他公司表示开发该功能将花费“$ x”,并且不同的相关方可以做出贡献。 对我们来说,这和执行 SQL 查询的能力真的很有价值。

@yehosef嘿,谢谢! 我很高兴能够做出贡献。 :)
PS:如果尽快召开会议(讨论这些模型)有帮助,让我们开始吧?

我很乐意尽我所能来帮助这件事向前发展。 如果您想尝试安排会议,请通过[email protected]与我联系 - 或者只是就继续进行的想法通信。

@yehosef “您尝试访问的电子邮件帐户不存在。” :)
我在你的 [github_id] @google [dot] com 上试过了。

抱歉-它的gmail.com

嗨,所以我们有一个关于 OpenTSDB 数据源何时可以使用此功能的 ETA。

还没有预计到达时间,可能在 4.1 或 4.2 中,这意味着希望在 6 个月内

我不确定这个问题是否类似于“功能请求:两个不同的时间范围序列数据显示在同一个图表 #3235 中”,因为我担心 #3235 。
因此,如果您能具体告诉我,此功能何时可用于 OpenTSDB 数据源。

@torkelo每当审查这个问题时,请复制我和@yehosef ,因为我们围绕这个想法和 Yehosef 在这个线程中提出的设计进行了一些电子邮件交流,我意识到最好将这些想法带回这里更广泛接触。 谢谢。

对此更新非常感兴趣!

此功能的发布日期有任何更新吗? 我真的很期待为 Elasticsearch 数据源使用 timeshift 选项。

我们也会对此非常感兴趣。 Atm 只有 Timelion 用于 Kibana

+1

可以创建一个可以访问其他数据源的数据源插件吗?
这种方式可以包装数据源响应并随后进行转换。

是的,

包含的 -- 混合 -- 数据源这样做:

https://github.com/grafana/grafana/blob/master/public/app/plugins/datasource/mixed/datasource.ts#L13

2016 年 11 月 23 日,星期三,下午 3:26,Bruno Meneguello [email protected]
写道:

可以创建一个可以访问另一个的数据源插件
数据源?
这种方式可以包装数据源响应并随后进行转换。


你收到这个是因为你被提到了。
直接回复此邮件,在 GitHub 上查看
https://github.com/grafana/grafana/issues/3677#issuecomment -262526082,
或使线程静音
https://github.com/notifications/unsubscribe-auth/AAAq94YeRbQxzw_CDfEiDjjbZj4pJLmTks5rBE0wgaJpZM4HAses
.

太棒了! 我想我会尝试在此基础上构建一些东西,创建一些语言来从其他数据源中获取序列,然后使用函数进行处理。
还有人感兴趣吗?

@bkmeneguello 请务必阅读我的评论: https ://github.com/grafana/grafana/issues/3677#issuecomment -230233579。 在实施任何事情之前,我们应该就这应该在客户端(js)还是服务器端完成达成一致。

当然,如果这个实现是核心,但为了预览它可以作为一个数据源插件。

@torkelo这将允许“划分”两个查询吗?

对这个功能也很感兴趣。

我也会对此感兴趣。 我可以使用它来在堆叠的面板上的所有指标的悬停中显示“组合总数”。

@torkelo嗨,我们现在有一个预计何时该功能可用于 OpenTSDB 数据源。

@shivam009目前没有预计到达时间

@torkelo你好,

#3677 有 ETA 吗? 以与 Graphite 数据源相同的方式在多个指标的结果上组合 sum/avg/etc 时,这将非常有帮助。
这里使用 Elasticsearch 作为数据源。

还没有预计到达时间,但这是我们希望在今年实现的目标。

与任意时间范围(例如,“数据参考”)进行比较可能很有用

@torkelo

#3677 的任何更新?

没有更新:(如果我有任何更新,我会在这里发布更新

@torkelo

感谢您及时的回复。 本质上,我的要求是平均从 ES 返回的数据点,并在 1 分钟的时间间隔内将它们分桶。 在 Elasticsearch 中是否有其他替代方法可以实现 summarise 和 sumSeries 功能?

@shiv6146你不能为此使用 Elasticsearch 日期直方图间隔函数吗?

@torkelo我可以使用日期直方图进行嵌套分组,但不幸的是Grafana不允许我隐藏内部分组的输出并仅绘制聚合数据点:(

你至少可以实现一些简单的东西,比如加法和减法吗?

  • 指标 C:#A - #B
  • 指标 D:#A + #B

@mstipanov它在我们的路线图上,但我们一直忙于其他功能,直到夏天之后。

@mtipanov
也期待尽快看到这个。 使用 influxdb

•公制C:#A - #B
•公制D:#A + #B

如果有规格,我肯定想在这方面提供帮助。 我可以在任何地方开始为这个工作吗? 也可能有一些指标可能需要现有“A”上可用的更多数据,例如,需要 7 天的移动平均值(当前系列 + 7 天前的数据)

@torkelo您对您认为我们应该如何实施它有什么想法吗? 我愿意花一些时间来构建它。 需要在德鲁伊之上的前端。

研究通过插件扩展。 必须将datasourceSrv传递给meta-queries-plugin ,然后让插件回调数据源。 计划首先研究移动平均线和时移。

大家好,我遇到了@f1-outsourcing 和@mstipanov (度量 A (+-) 度量 B)之类的问题。 然后,我开发了一个面板插件来做到这一点,称为“计算统计插件”。 如果您有兴趣,这是我的 github https://github.com/fabiojose/grafana-calcltdstat-plugin

@fabiojose谢谢,我看了你的插件。 谢谢你把它放出来。 我认为将它实现为数据源可能会更好,这样我们就可以使用任何面板,如表格或图表。 我已经完成了 Time Shift。 将在一两天内开源它。 届时也将使用移动平均线完成

Poshmark 已开源https://github.com/GoshPosh/grafana-meta-queries ,它支持计算列、移动平均线和时移

感人的! 干得好伙计们!

@torkelo ,如果您有时间可以请您对插件提供反馈吗?

@Gauravshah是的! 抱歉,hole 团队一直忙于准备并前往我们本周赞助的开发者大会,所以插件评论和反馈的速度很慢。 也许下周或后一周

@torkelo不用担心,请慢慢来。 谢谢

@torkelo有更新吗?

我也希望尽快实现此功能

你好,
将 grafana v4.5.2 与 Elasticsearch 一起使用。
需要根据自时间戳以来经过的时间是否小于 5 分钟,将时间戳转换为布尔值。
脚本字段值(时间是一个返回当前纪元的函数):
布尔值(时间 - _value > 300)
这也在你的计划中吗?
此外,我们需要生成一个图表,该图表是随着时间的推移,来自不同查询的两个值的除法。
谢谢,

@lilachmaliniak
你可以做((new Date()).getTime() - A['_value']) > 300
两个不同的数据源可以工作

谢谢@Gauravshah
我无法完全按照您的建议进行操作,可能是由于值类型是数字/整数。
我得到错误:500
那就是我将选项脚本设置为: (((new Date()).getTime() - _value) < 300000 )
这是查询:
{"search_type":"query_then_fetch","ignore_unavailable":true,"index":"beaconindex"} {"size":0,"query":{"bool":{"filter":[{"range": {"private_data.timestamp":{"gte":"1513673225106","lte":"1513676825106","format":"epoch_millis"}}},{"query_string":{"analyze_wildcard":true,"query" :"private_data.kes_hostname.keyword:(\"lilach\-centos\-vm.com\")"}}]}},"aggs":{"5":{"terms":{"field":" private_data.kes_hostname.keyword","size":10,"order":{"_term":"desc"},"min_doc_count":1},"aggs":{"1":{"max":{" field":"private_data.timestamp","missing":0,"script":{"inline":"((( new Date()).getTime() - _value) < 300000 ) "}}},"3 ":{"min":{"field":"private_data.systemMetrics.systemData.system.uptime"}}}}}} "
从 Kibana 运行相同的查询,我得到:
{
“错误”: {
“根本原因”: [
{
“类型”:“class_cast_exception”,
“原因”:空
}
],
"type": "search_phase_execution_exception",
"reason": "所有分片失败",
“阶段”:“查询”,
“分组”:是的,
“失败的碎片”:[
{
“碎片”:0,
“索引”:“信标索引”,
“节点”:“TGW3SyrEQHSnIi8qQt3rNw”,
“原因”: {
“类型”:“class_cast_exception”,
“原因”:空
}
}
]
},
“状态”:500
}

所以我在选项中使用了以下脚本: (((new Date()).getTime() - _value) < 300000 ) ? 1 : 0
它可以将值转换为范围:[0,1]

我的问题是:如何在 Grafana 中进一步转换值,以显示令牌(例如向上/向下)

我认为这必须得到 grafana 的支持,而不是这个插件本身。 您也许可以分配(((new Date()).getTime() - _value) < 300000 ) ? '↑' : '↓'还没有尝试过

@Gauravshah ,谢谢
你能更具体一点,我在哪里设置这个?
如果我在 Metric->Options->Script 下的 Metric 选项卡中编写它,该脚本将作为内联属性包含在 Lucene 查询中,并且查询失败,错误状态为 500。
"script":{"inline":"(((new Date()).getTime() - _value) < 300000) ? 'up' : 'down'"}

我想我误解了你的问题。 我对弹性搜索查询了解不多。 我以为你在问如何在元查询插件上做到这一点

@Gauravshah ,是的,我正在尝试使用 ES 查询来做到这一点。 我已经安装了元查询插件,但由于某种原因未能使用它创建仪表板。 创建新仪表板时,MetaQuery 类型的选项不可用。 我再试一次,谢谢。

@Gauravshah ,如何将 MetaQuery 与 ES 数据源一起使用?
我在哪里可以找到插件文档?
因为我在 git 中找不到文档: https ://github.com/GoshPosh/grafana-meta-queries
谢谢

@Gauravshah
安装 MetaQueries 数据源插件后,我设法创建了一个新仪表板。
创建新表并将表数据源设置为--混合后--
添加了2个查询:
A ($datasource) Metrics: Max(private_data.timestamp), Group by:Term(private_data.kes_hostname.keyword)
B (MetaQuery 数据源) 类型算术表达式 ((new Date()).getTime() - A['_value']) < 300000 ? “上”:“下”
查询 A 返回期望值,并成功显示在表格中。
但是,我无法显示来自查询 B 的表达式值的列,并且我看不到表达式输出是什么,无论它是成功还是失败。 没有任何迹象。
我的问题:如何调试查询(使用 metaQuery DS 的查询),并将表中的表达式值显示为附加列?
干杯

数据源应设置为Meta Queries & 不混合。 将其添加到插件的自述文件中:(

@Gauravshah
谢谢。
按照您的建议,将表数据源更改为“MetaQuery 数据源”。
现在我得到错误“无法读取未定义的属性'长度'”并且表格无法显示想法,就像之前来自 ES 的查询以预期值成功一样。

@lilachmaliniak您可以在https://github.com/GoshPosh/grafana-meta-queries上创建问题吗,还请附上浏览器中的堆栈跟踪

@Gauravshah
添加了新问题: https ://github.com/GoshPosh/grafana-meta-queries/issues/9

👍

这个问题已经超过 2 年了。 此功能请求是否已合并到另一个功能请求中?

👍

许多时间序列数据存储可以为您执行此操作,但有些(看看您的 cloudwatch)不支持,也可能永远不会支持这种事情。

同时,我们至少可以使用两个面板进行 timeShift,但是在同一个面板中进行比较图的每个查询 timeshift 将非常棒。

+1

@matschaffer & @JJMVG你应该可以使用https://github.com/GoshPosh/grafana-meta-queries

@SwathiMuppalla你应该在插件仓库中创建问题而不是在这里。

+1

+1 这将是 yuge - 我在 6.4 的 grafana-meta-queries 插件上没有取得太大成功:(

作为支持多种数据源的可视化层,这可能是监控功能的皇冠上的明珠。 我们将来自 MySQL、Elasticsearch 和 Prometheus 的数据合并到我们的仪表板中,基于另一个来源对来自一个来源的数据进行规范化可能是产品在我们监控堆栈中的重要性的巨大飞跃。

这不是另一个 +1 评论。

这是+100🙏🏼✌🏼

@torkelo也许可以使用https://github.com/wesm/featherhttps://arrow.apache.org/docs/python/ipc.html之类的东西作为一种“列存储缓存”然后可以用于额外的处理或操作。

您可能会从https://www.dremio.com/的工作中获得其他想法 - 这似乎是一个稍微相关的问题空间(查询各种数据源并在 Arrow 等中缓存以进行进一步操作和查询。)

@torkelo也许可以使用https://github.com/wesm/featherhttps://arrow.apache.org/docs/python/ipc.html之类的东西作为一种“列存储缓存”然后可以用于额外的处理或操作。

虽然拥有用于高级功能的外部工具很好,但这并不能解决简单性或与 Grafana 集成方面的问题。 在两个系列上提供非常基本的算术运算可以只用 20% 的时间解决 80% 的问题。

@redlus @yehosef为什么https://github.com/GoshPosh/grafana-meta-queries不是解决方案?

@torkelo如果您认为https://github.com/GoshPosh/grafana-meta-queries解决了此问题中提到的问题,我们应该关闭解决该问题的问题,该问题正在由 grafana 插件解决。 人们很难通过浏览长问题来发现有解决问题的插件。

@Gauravshah
希望看到一个有效的插件,但我们在使用这个插件和较新版本的 Grafana 时遇到了问题; IE
https://github.com/GoshPosh/grafana-meta-queries/issues/82

@redlus你应该再试一次,它确实适用于 grafana 6.4。 此外,如果最新的 grafana 版本是唯一的问题,则可以选择返回一个次要版本。 不知道你为什么要打电话给would love to see a working plugin

@Gauravshah不幸的是仍然无法使用 Grafana 6.5.1 - 我没有尝试使用 6.4,但大多数用户可能无法接受切换到旧版本。

没有进展 ...

我看到很多人在这里弹跳,试图聚合多个数据源。 我想知道 blendstat 面板是否解决了某些人的问题,以及该设计是否可以在其他面板中重复使用?

https://grafana.com/grafana/plugins/farski-blendstat-panel

Blendstat 确实填补了一个空白,但它不适用于所有变量的重复或循环。 如果有办法我不知道怎么做。

我刚刚遇到另一个用例,希望能解决。 我用百分比 (0.0-0.1) 返回 CloudWatch 指标,这给了我整数 5、7 等。我期待 0.5%、0.7%,但我看不到改变它的方法。

嗨,如果我在这里踩老路,我很抱歉,但这是一个很长的话题:

我是否认为此功能请求是支持由于组合多个查询而生成的图形? 例如,如果这项工作已经完成,您可以从 Prometheus 获取时间序列,然后将其与来自 Stack Driver? 的时间序列相加。

如果是这样:这项工作是否仍在计划中,路线图是什么,您需要帮助吗? :)

那,加上(我希望)时间移动任何图表,以便我可以将今天的图表与昨天的图表或 7 天的平均值进行比较。
是的,一些数据存储已经可以做到这一点,但这应该是一个通用特性。

此页面是否有帮助?
0 / 5 - 0 等级