如何为多个 Prometheus 数据源配置 Grafana 仪表板?
Posted
技术标签:
【中文标题】如何为多个 Prometheus 数据源配置 Grafana 仪表板?【英文标题】:How to configure a Grafana dashboard for multiple Prometheus datasources? 【发布时间】:2020-11-30 14:22:09 【问题描述】:我正在尝试为多个 Prometheus 数据源配置 Grafana 仪表板。这两个数据源存在于两个不同的服务器中。
Prometheus 从三个作业中抓取指标,prometheus 本身,用于主机指标的节点导出器,用于 docker 容器指标的顾问。
这是prometheus.yaml
的样子:
global:
scrape_interval: 5s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']
- job_name: 'cadvisor'
static_configs:
- targets: ['cadvisor:8080']
两台服务器都使用相同的 yaml 配置。
我在 Grafana UI 中创建了两个数据源,它们各自的名称是 Prometheus
和 Prometheus-Certify
。第一个数据源是默认数据源。我正在使用 Grafana v7.1.0。
这是我的仪表板对于数据源Prometheus
的样子:
还有其他面板,但显示这些面板就足以解释问题。
如果我单击Host
下拉选项,则可以看到主机cadvisor:8080
、localhost:9090
和node-exporter:9100
。
要求:
我想要实现的是为两个数据源配置此仪表板。我可以在datasource
下拉菜单default
、Prometheus
、Prometheus-Certify
中看到所有选项。当我选择特定数据源时,我希望仪表板向我显示来自特定源的数据。这就是我卡住的地方。
我对此进行了研究,发现我们可以在一个面板中同时显示来自两个不同来源的数据。我在 Grafana 文档中看到了 this 选项,还有这个 thread 实际上让我更接近我想要实现的目标。
所以我遵循这种方法并为面板配置了--Mixed--
数据源。
它完美无缺地工作,在不同的面板上执行相同的操作,结果如下:
虽然它有效,但这不是我想要做的。这里的问题是:
-
我必须对每个面板都执行此操作才能查看来自两个来源的数据。
它同时显示来自两个来源的数据。我只想查看来自所选数据源的数据,而不是两者。
如果我以后添加另一个数据源,我将不得不重新执行所有操作。
我看到很多地方都建议使用[模板和变量][6]。我试了一下,但它什么也没做。
如果更改变量是可行的方法,那么请仅提供针对此问题的建议,因为我已经浏览了该部分并且找不到任何具体的内容。
我希望我能够向你们解释我的问题。我只想查看来自所选数据源的数据而不创建新仪表板。您的帮助将不胜感激。谢谢。
【问题讨论】:
【参考方案1】:我意识到我导入的仪表板创建了一个变量DS_PROMETHEUS
,它的类型是Datasource
。
此变量保存所选数据源的值。我无法看到来自所选数据源的数据,因为面板查询中的数据源有点硬编码。
如上图所示,预选数据源为Prometheus
。将此值更改为 $DS_PROMETHEUS
就可以了。
所以这一切都归结为如何使这个变量作为每个面板中每个查询的数据源?现在的问题是如何运行查询/命令来一次修改多个面板的设置。
在做了一些研究后,我发现了这个thread。它已被归类为功能请求。 Person/People 已经开发了一个tool 来处理这些场景。到目前为止,我还没有使用过这个工具,但我会在使用后更新我的答案。
简单而老式的方法是在仪表板的 JSON 中将 prometheus
替换为 $DS_PROMETHEUS
。所以我做到了,瞧!成功了。
【讨论】:
以上是关于如何为多个 Prometheus 数据源配置 Grafana 仪表板?的主要内容,如果未能解决你的问题,请参考以下文章
如何为多个数据源创建/配置 Spring Actuator?
如何为多个用户配置 phpMyAdmin - 每个用户只能访问他们的数据库
如何为 microk8s grafana 设置 SMTP(prometheus 插件)
Spring Cloud,配置服务器无法启动,如何为git配置uri