如何用同一数据源变量在Grafana中访问InfluxDB与MSSQL数据
用单个服务器变量关联InfluxDB与MSSQL数据源的实现步骤
1. 创建统一的服务器名称变量
先搭建一个能覆盖两个数据源所有目标服务器的全局变量:
- 进入仪表盘右上角齿轮图标 → Variables 设置页面,点击
Add variable - 变量配置:
- Name:自定义为
server_name(方便后续查询引用) - Type:选择
Query - 点击
Add query,先选InfluxDB数据源,编写查询获取服务器列表(根据你的实际measurement和tag调整):SHOW TAG VALUES FROM `server_metrics` WITH KEY = "server_name" - 再次点击
Add query,切换到MSSQL数据源,编写查询获取服务器列表(根据你的表结构调整):SELECT DISTINCT ServerName FROM dbo.ServerStatus - 切换到
Options标签页,可勾选Include all option(方便查看全量数据)或Multi-value(支持多选服务器) - 保存变量
- Name:自定义为
2. 在面板查询中引用变量关联数据源
在需要展示数据的面板里,分别针对两个数据源编写查询并引用$server_name变量:
InfluxDB查询示例
- 新建面板,选择InfluxDB作为数据源
- 编写带变量过滤的查询:
SELECT mean("cpu_usage") FROM `server_metrics` WHERE "server_name" = '$server_name' AND $timeFilter GROUP BY time($__interval) fill(null)
MSSQL查询示例
- 在同面板添加新查询,切换到MSSQL数据源
- 编写带变量过滤的查询:
SELECT Timestamp, MemoryUsage FROM dbo.ServerStatus WHERE ServerName = '$server_name' AND Timestamp BETWEEN $__timeFrom() AND $__timeTo()
3. 关键注意事项
- 必须保证两个数据源中的服务器名称完全一致(大小写、拼写无差异),否则变量无法匹配对应数据
- 链式变量适用于变量间依赖场景(比如先选集群再选服务器),本场景不需要使用,单个全局变量即可关联双数据源查询
- InfluxDB的匹配规则可按需调整:如果是模糊匹配用
=~ /^$server_name$/,精确匹配用= "$server_name"
内容的提问来源于stack exchange,提问作者Leo Torres
相关产品推荐
相关产品推荐

