xObserve

  1. 入门教程
  2. 从 Prometheus 查询数据

上一个章节中创建的仪表盘很强大,但是它也有巨大的限制:它从 Testdata 数据源中查询数据,而 Testdata 数据源是一个假数据源。现在是时候使用真实的数据源来构建一个真实的仪表盘了。

在本文档中,我们将使用 Prometheus 作为数据源来构建一个仪表盘,所以你需要:

  1. 安装 Prometheust, 并确保 Prometheus 已经在运行
  2. 在 prometheus 的目录下,找到并运行 node_exporter , 这个服务会从你的机器上收集 cpu,memory,disk,network 等信息

假设 Prometheus 运行在 http://localhost:9090 , 首先,我们需要为 Prometheus 创建一个新的数据源。

创建 Prometheus 数据源

点击左侧导航栏底部的 + 按钮,然后选择 新建数据源 标签页。

然后填入如下数据:

create-prometheus-ds

点击 保存&测试 按钮,如果一切正常,你会在表单底部看到一个绿色的提示信息 Datasource is added, redirecting.. , 然后页面会跳转到数据源管理页面:

接着会跳转到数据源管理页面:

datasource-managing

你可以看到 Prometheus 数据源已经在表格中了,它在默认的 Testdata 数据源的下面,而 Testdata 数据源是我们在前面章节中使用的。

为图表设置数据源

在从 Prometheus 查询数据之前,我们需要先创建一个新的仪表盘,让我们把它命名为 Hosts info

然后添加一个名为 go gc info 的新表格,打开面板编辑器并选择 Graph 类型。

在面板编辑器左下角的 Query 标签页中,你可以看到默认的数据源是 Testdata ,我们需要把它改为 Prometheus

从 Prometheus 中查询数据

从面板名称中,我们可以知道这个面板是用来从 Prometheus 查询 go gc 信息的,所以我们需要写一个 PromQL 查询来获取数据,有两种方式:

手动编写 PromQL 查询

在图表编辑面板左下角的 查询 标签中,你可以看到一个输入框,它提示你输入一个 PromQL 查询,让我们输入 go_gc_duration_seconds ,你会看到如下结果:

enter-prometheus-query

从 metrics 下拉列表中选择

在图表编辑面板左下角的 metrics 标签中,你可以看到一个下拉列表,它包含了所有的 metrics,让我们选择 go_gc_duration_seconds ,你同样会看到如上图所示的结果。

select-metrics

为图表曲线设置别名

我们可以使用 Prometheus legend 设置 Graph 图表的曲线别名,让我们创建一个新的面板,命名为 Cpu idle,然后打开面板编辑器,选择 Graph 类型和 Prometheus 数据源。

该图表将显示我们主机的 cpu 空闲使用率,为了实现这一点,我们需要在 PromQL 输入框中输入 sum(rate(node_cpu_seconds_total{mode="idle"}[1m])) by (instance) / sum(rate(node_cpu_seconds_total[1m])) by (instance) * 100

然后将图例 legend 设置为 cpu idle - {{instance}} ,结果如下:

prometheus-legend

在上图中,{{instance}} 是一个标签提取语法,它会被替换为查询结果中的 instance 标签值。

别忘了给 cpu idle 面板添加单位,% 是一个不错的选择。