为什么 Grafana ElasticSearch 查询在硬编码时有效,但在使用 Grafana 变量值替换时失败?以及如何解决?
Why do Grafana ElasticSearch queries work when hard coded, but fail when using Grafana variable value substitution? and how to fix it?
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**] 不起作用/导致 "No data to show",如上所示。
将值代入查询时会发生一些有趣的事情。
Q1.) tool/method 在 substitution/Figure 失败后调试变量的真实值的最佳方法是什么?
Q2.) 固定 it/achieving 所需最终结果的方法是什么?
Q1.) tool/method 在 substitution/Figure 找出变量失败原因后调试变量真实值的最佳方法是什么?
答案 1:查询检查器
1** --当替换为--> 1\\*\\*
这解释了为什么它不起作用
Q2.) 固定 it/achieving 所需最终结果的方法是什么?
答案 2:对我有用的是避免在变量值中使用特殊字符 *。
我将变量重命名为 HTTP 代码前缀并使用值 [*,1,2,3,4,5]
然后我使用了查询:+nginx.access.upstream.response: $http_code_prefix*
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**] 不起作用/导致 "No data to show",如上所示。
将值代入查询时会发生一些有趣的事情。
Q1.) tool/method 在 substitution/Figure 失败后调试变量的真实值的最佳方法是什么?
Q2.) 固定 it/achieving 所需最终结果的方法是什么?
Q1.) tool/method 在 substitution/Figure 找出变量失败原因后调试变量真实值的最佳方法是什么?
答案 1:查询检查器
1** --当替换为--> 1\\*\\*
这解释了为什么它不起作用
Q2.) 固定 it/achieving 所需最终结果的方法是什么?
答案 2:对我有用的是避免在变量值中使用特殊字符 *。
我将变量重命名为 HTTP 代码前缀并使用值 [*,1,2,3,4,5]
然后我使用了查询:+nginx.access.upstream.response: $http_code_prefix*