Selection Options 是一项可以用来管理变量选择项的功能。所有选择项都是可选的,默认情况下都是关闭的。
对选择了多个值的变量进行插值非常棘手,因为如何将多个值格式化为在使用变量的给定上下文中有效的字符串并非易事。Grafana 试图通过允许每个数据源插件通知模板插值引擎多个值应使用什么格式来解决这个问题。
注意:变量上的 “Custom all value” 选项必须为空,Grafana 才能将所有值格式化为单个字符串。如果留空,Grafana 会将查询中的所有值连接(加在一起)。比如 value1,value2,value3。如果使用自定义的 all 值,则该值将是 * 或 all 之类的值。
例如:勾选变量的“Multi-value”复选框。
在仪表板上面使用该变量,点击变量下拉列表,多了一个“Selected”复选框:
当我们点击该复选框,选中所有变量值,效果如下:
Graphite 使用 glob 表达式。在这种情况下,如果当前变量的值是 host1、host2 和 host3,则具有多个值的变量会被插值为 {host1,host2,host3}。
InfluxDB 和 Prometheus 使用 regex 表达式,因此同一变量会被插值为 (host1|host2|host3)。每个值也都会经过 regex 转义。否则,带有 regex 控制字符的值将会破坏 regex 表达式。
Elasticsearch 使用 lucene 查询语法,因此同一变量的格式应为("host1" OR "host2" OR "host3")。在这种情况下,每个值都必须转义,以便值中只包含 lucene 控制字和引号。
自动转义和格式化可能会造成问题,而且很难掌握其背后的逻辑。特别是对于 InfluxDB 和 Prometheus,使用 regex 语法需要在 regex 操作符上下文中使用变量。
如果不想让 Grafana 自动进行 regex 转义和格式化,则必须执行以下操作之一:
关闭 "Multi-value"或 "Include All" 选项。
使用原始变量格式。
Grafana 在变量下拉列表中添加了 “All” 选项。如果用户选择了该选项,那么所有变量选项都会被选中。
在仪表板上面的效果:
该选项只有在选择 "Include All option" 时才可见。
在 “Custom all value” 字段中输入 regex、globs 或 lucene 语法,以定义 All 选项的值。
默认情况下,"All" 值包括组合表达式中的所有选项。这可能会变得非常冗长,并可能产生性能问题。有时最好指定一个自定义的 All 值,如通配符 regex。
如果要在 “Custom all value” 选项中使用自定义 regex、globs 或 lucene 语法,则永远不会转义,因此您必须考虑什么是数据源的有效值。
在仪表板中使用该变量,效果图: