首页 > 解决方案 > 为什么 Grafana ElasticSearch 查询在硬编码时可以工作,但在使用 Grafana 变量值替换时会失败?以及如何解决?

问题描述

问题图片

ElasticSearch 查询在硬编码时有效,但在使用 Grafana 变量值替换时失败:

查询:+nginx.access.upstream.response: [*, 1**, 2**, 3**, 4**, 5**, 500]
当您在查询中硬编码这些值时,这些查询中的每一个都有效.

Example Query: +nginx.access.upstream.response: 1** 
               ^That works shows a table of data instead of "No data to show"

尽管这样可行,但最好使用具有 7 个值的变量,这样您就可以使用 1 个面板来显示可以放入 7 个硬编码面板中的相同数据,以便您最终获得更清晰的用户界面。

现在的问题是您已将硬编码值切换为变量填充值,查询不再有效。
插入的变量值 [* 和 500] 起作用
插入的变量值 [1**, 2**, 3**, 4**, 5**] 不起作用/导致“无数据显示”如上所示。

当值被替换到查询中时,会发生一些有趣的事情。
Q1.) 在替换后调试变量真实值的最佳工具/方法是什么/找出它失败的原因?
Q2.) 有什么方法可以修复它/达到预期的最终结果?

标签: elasticsearchelastic-stackgrafanagrafana-templatinggrafana-variable

解决方案


Q1.) 在替换后调试变量真实值的最佳工具/方法是什么/找出它失败的原因?

答案 1:Query Inspector
1** --when 被替换成 --> 1\\*\\*
这解释了为什么它不起作用

A1.) 查询检查器

Q2.) 有什么方法可以修复它/达到预期的最终结果?

答案 2:对我有用的是避免在变量值中使用特殊字符 *。
我将变量重命名为 HTTP 代码前缀并使用值 [*,1,2,3,4,5]
然后使用查询:+nginx.access.upstream.response: $http_code_prefix*


推荐阅读