如何为多个Prometheus数据源配置Grafana仪表板?

时间:2020-08-10 23:21:08

标签: grafana grafana-templating grafana-variable

我正在尝试为多个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中创建了两个数据源,它们的名称分别为PrometheusPrometheus-Certify。第一个数据源是默认的数据源。我正在使用Grafana v7.1.0。

这是我的数据源Prometheus的仪表板的样子:

dashboard-1

也有其他面板,但是显示这些面板足以解释问题。

如果单击Host下拉选项,则可以看到主机cadvisor:8080localhost:9090node-exporter:9100

要求

我要实现的目的是为两个数据源配置此仪表板。我可以在datasource下拉菜单defaultPrometheusPrometheus-Certify中看到所有选项。我希望仪表板在选择特定数据源时向我显示来自特定数据源的数据。这就是我被困住的地方。

我对此进行了研究,发现可以在一个面板中同时显示来自两个不同来源的数据。我在Grafana文档中看到了this选项,并且在thread中看到了这个选项,实际上使我更接近要实现的目标。

因此,我采用了这种方法,并为面板配置了--Mixed--数据源。

dashboard-2

它可以完美工作,并且在不同的面板上执行相同的操作会导致:

dashboard-3

虽然可以,但是,这不是我要尝试的。这里的问题是:

  1. 我必须为每个面板执行此操作,以便查看来自两个来源的数据。
  2. 它同时显示来自两个来源的数据。我只想查看所选数据源中的数据,而不是两者。
  3. 如果以后再添加另一个数据源,则必须重新执行所有操作。

我看到很多地方都建议使用[模板和变量] [6]。我试了一下,但什么也没做。

如果要更改变量,那么请只提供针对此问题的建议,因为我已经阅读了本节的内容,但找不到与此相关的任何东西。

我希望我能向大家解释我的问题。我只想查看所选数据源中的数据,而无需创建新的仪表板。您的帮助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

我意识到导入的仪表板创建了一个变量DS_PROMETHEUS,其类型为Datasource

dashboard-1

此变量保存所选数据源的值。我无法看到所选数据源中的数据,因为该数据源在面板的查询中有点硬编码。

dashboard-2

如您在图像上方看到的那样,预选择的数据源是Prometheus。将此值更改为$DS_PROMETHEUS即可完成工作。

dashboard-3

因此,这归结为我如何使此变量作为每个面板中每个查询的数据源?现在的问题是如何运行查询/命令一次修改多个面板的设置。

经过一些研究,我发现了这个thread。它已被分类为功能请求。人员/人员已经开发了tool来处理这类情况。到目前为止,我还没有使用过该工具,但是一旦使用它,我就会更新答案。

一种简单而古老的方法是在仪表板的JSON中的任何地方用prometheus替换$DS_PROMETHEUS。所以我做到了,瞧!它奏效了。