Grafana中如何让sql_datasource与sql_datasource_auto值同步?
解决Grafana变量
sql_datasource与sql_datasource_auto同步的方法 由于sql_datasource是数据源类型变量,Grafana原生不支持直接和其他非数据源变量绑定,但可以通过以下几种方式实现需求:
方法1:直接修改sql_datasource的查询逻辑(推荐)
既然sql_datasource的格式固定为{instance}_{mssql_instance},可以直接让它动态匹配前两个变量的组合值,无需单独维护sql_datasource_auto:
- 编辑
sql_datasource变量,保持类型为Data source - 在Filter by name输入框中填入变量表达式:
${instance}_${mssql_instance} - 开启Auto refresh,触发条件设置为
instance或mssql_instance变化时刷新 - 完成后,选择
instance和mssql_instance时,sql_datasource会自动过滤并选中匹配格式的数据源
方法2:用JavaScript变量强制同步
如果必须保留sql_datasource_auto变量,可通过JavaScript类型变量实现联动:
- 删除原
sql_datasource变量,新建一个JavaScript类型变量,命名仍为sql_datasource - 在Script输入框中写入逻辑,直接返回
sql_datasource_auto的当前值:return [vars.sql_datasource_auto]; - 开启Auto refresh,触发条件设置为
instance、mssql_instance或sql_datasource_auto变化时刷新 - 注意:必须保证
sql_datasource_auto生成的值是Grafana中已存在的SQL数据源名称,否则会出现无效选择
方法3:利用变量顺序与默认值自动选中
通过调整变量刷新顺序,让sql_datasource自动继承sql_datasource_auto的值:
- 调整变量顺序为:
instance→mssql_instance→sql_datasource_auto→sql_datasource - 编辑
sql_datasource变量,在Default value中填入:${sql_datasource_auto} - 开启
sql_datasource的Auto refresh,触发条件设为sql_datasource_auto变化时刷新 - 每次
sql_datasource_auto更新后,sql_datasource会自动选中匹配的数据源选项(前提是该选项存在)
注意事项
- 所有方案都要求
instance和mssql_instance的组合值,必须对应Grafana中已存在的SQL数据源名称,否则会出现无匹配项的问题 - 方法1无需额外维护变量,逻辑最简洁,优先推荐使用
内容的提问来源于stack exchange,提问作者Blax
相关产品推荐
相关产品推荐

