View a markdown version of this page

使用 Prometheus 数据来源 - Amazon Managed Grafana

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Prometheus 数据来源

重要

从亚马逊托管 Grafana 版本 12 开始,Core Prometheus 插件中的 Sigv4 身份验证支持已被删除。之前使用 Core Prometheus 插件的所有亚马逊 Prometheus 托管服务数据源都会自动迁移到亚马逊 Prometheus 托管服务插件中。使用这些数据源的任何仪表板都会自动更新以反映这一变化。请参阅连接到 Prometheus 数据源的亚马逊托管服务

Prometheus 设置

Name 说明
Name 数据来源名称。您将在面板和查询中通过其名称查看数据来源。
Default 默认数据来源意味着将为新面板预先选择该数据来源。
Url Prometheus 服务器的 URL,例如 https://prometheus.example.org:9090
Access 服务器(默认)= 必须可以从 Grafana backend/server 访问网址。
Basic Auth 启用对 Prometheus 数据来源的基本身份验证。
User 用于基本身份验证的用户名。
Password 用于基本身份验证的密码。
Scrape interval 将其设置为 Prometheus 中配置的典型抓取和评估间隔。默认值为 15 秒。
Disable metrics lookup 选中此选项将禁用指标选择器和查询字段自动完成中的 metric/label 支持。如果您在使用较大的 Prometheus 实例时遇到性能问题,这会有所帮助。
Custom Query Parameters 在 Prometheus 查询 URL 中添加自定义参数。例如,timeoutpartial_responsededupmax_source_resolution。应使用 "&" 将多个参数连接在一起。

Prometheus 查询编辑器

以下部分提供了控制面板和 Explore 中 Prometheus 查询编辑器的信息和选项。

控制面板中的查询编辑器

在编辑模式下打开图形,方法是选择标题,然后选择编辑(或在面板上暂停时按 e 键)。

Name 说明
Query expression 有关 Prometheus 查询表达式的更多信息,请参阅 Prometheus 文档
Legend format 使用名称或模式控制时间序列的名称。例如,{{hostname}} 替换为标签 hostname 的标签值。
Min step Prometheus 范围查询的 step 参数以及 $__interval$__rate_interval 变量的附加下限。该限制是绝对的,不受分辨率设置的影响。
Resolution 1/1 设置了 $__interval 变量以及 Prometheus 范围查询的 step 参数,使每个像素对应一个数据点。为了获得更好的性能,请使用较低的分辨率。1/2 每隔一个像素仅检索一个数据点,而 1/10 每 10 个像素检索一个数据点。请注意,最小时间间隔最小步长都限制了 $__intervalstep 的最终值。
Metric lookup 在此输入字段中搜索指标名称。
Format as TableTime seriesHeatmap 之间切换。Table 仅在表面板中起作用。Heatmap 适用于在热图面板上显示直方图类型的指标。其将累积直方图转换为常规直方图,并按存储桶边界对序列进行排序。
Instant 执行 "instant" 查询,仅返回 Prometheus 为请求的时间序列抓取的最新值。Instant 查询返回结果的速度比正常范围查询快得多。使用这些结果来查找标签集。
Min time interval 将该值乘以分辨率设置的分母,为 $__interval 变量和 Prometheus 范围查询的 step 参数设置下限。默认为数据来源选项中设置的抓取间隔
注意

Amazon Managed Grafana 会修改查询的请求日期,使其与动态计算的步骤保持一致。这样可确保指标数据一致显示,但可能会导致图形右边缘出现小的数据间隙。

控制面板中的即时查询

Prometheus 数据来源允许运行即时查询,仅查询最新值。您可以在表面板中可视化结果,以查看时间序列的所有可用标签。

即时查询结果仅包含每个序列的一个数据点。借助序列覆盖,可在图形面板中显示结果。要在图形中显示为最新值点,请添加序列覆盖并选择 Points > true。要在整个图形中显示一条水平线,请添加序列覆盖并选择 Transform > constant。有关序列覆盖的更多信息,请参阅 序列覆盖

Explore 中的查询编辑器

Name 说明
Query expression 有关 Prometheus 查询表达式的更多信息,请参阅 Prometheus 文档
Step Prometheus 范围查询的 Step 参数。此处可以使用时间单位,例如:5s、1m、3h、1d、1y。如果未指定单位,默认单位为 s(秒)。
Query type RangeInstant 或者 Both。运行范围查询时,查询结果将以图形和表的形式显示。即时查询仅返回 Prometheus 为请求的时间序列抓取的最新值,并显示在表中。如果选择二者,则同时运行即时查询和范围查询。范围查询结果以图形的形式显示,即时查询结果以表的形式显示。

指标浏览器

通过指标浏览器,您可以快速查找指标并选择相关标签来构建基本查询。打开浏览器后,您将看到所有可用的指标和标签。如果 Prometheus 实例支持,则每个指标都将以工具提示的形式显示 HELP 和 TYPE。

选择指标时,浏览器会缩小可用标签的范围,仅显示适用于该指标的标签。然后,您可以选择一个或多个标签,可用标签值显示在底部的列表中。为每个标签选择一个或多个值,以缩小查询范围。

注意

如果您不记得开头的指标名称,也可以先选择几个标签,缩小列表范围,然后再查找相关标签值。

指标浏览器中的所有列表上方都有一个搜索字段,可快速筛选与特定字符串匹配的指标或标签。值部分只有一个搜索字段。其筛选适用于所有标签,以帮助您在选择标签后跨标签查找值,例如,在标签 app、job、job_name 中,只有一个标签可能具有您要查找的值。

如果对查询感到满意,请单击“使用查询”来运行查询。用作速率查询按钮可在查询中添加 rate(...)[$__interval],来帮助编写计数器指标查询。“验证选择器”按钮将向 Prometheus 核实该选择器有多少时间序列可用。

限制

指标浏览器的硬限制为 10000 个标签(键)和 50000 个标签值(包括指标名称)。如果 Prometheus 实例返回更多结果,浏览器将继续运行。但是,如果超过最大限制,结果集将被截断。

模板化

您可以在指标查询中使用变量来代替服务器、应用程序和传感器名称等硬编码。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。

有关模板化和模板变量的更多信息,请参阅 模板和变量

查询变量

查询类型的变量允许您查询 Prometheus 以获取指标、标签或标签值的列表。Prometheus 数据来源插件提供了以下函数,您可以在查询输入字段中使用。

Name 说明
label_names() 返回标签名称列表。
label_values(label) 返回每个指标中 label 的标签值列表。
label_values(metric, label) 返回指定指标中 label 的标签值列表。
metrics(metric) 返回匹配指定 metric 正则表达式的指标列表。
query_result(query) 返回 query 的 Prometheus 查询结果列表。

有关指标名称标签名称标签值的信息,请参阅 Prometheus 文档

使用间隔和范围变量

注意

仅从 Grafana v5.3 开始支持 $__range$__range_s$__range_ms

您可以在查询变量中使用一些全局变量:$__interval$__interval_ms$__range$__range_s$__range_ms。有关更多信息,请参阅 全局变量。由于 label_values 函数不支持查询,因此当需要筛选变量查询时,可以很方便地将其与 query_result 函数配合使用。

要在更改控制面板上的时间范围时获得正确的实例,请确保将变量的 refresh 触发器设置为 On Time Range Change

以下代码示例显示了如何根据控制面板中显示的时间范围内的平均 QPS,用最繁忙的 5 个请求实例填充变量。

Query: query_result(topk(5, sum(rate(http_requests_total[$__range])) by (instance))) Regex: /"([^"]+)"/

以下代码示例显示了如何使用 $__range_s 在控制面板中显示的时间范围内,用具有特定状态的实例填充变量。

Query: query_result(max_over_time(<metric>[${__range_s}s]) != <state>) Regex:

使用 $__ rate_interval 变量

$__rate_interval 变量旨在用于 rate 函数。定义为最大值($__interval + 抓取间隔,4 * 抓取间隔)。抓取间隔是最小步长设置(又名 query_interval,每个 PromQL 查询的设置)(如已设置),否则为 Prometheus 数据来源中设置的抓取间隔(但忽略面板中的任何最小间隔设置,因为后者由分辨率设置修改)。

在查询中使用变量

共有两种语法:

  • $<varname> 示例:rate(http_requests_total{job=~"$job"}[5m])

  • [[varname]] 示例:rate(http_requests_total{job=~"[[job]]"}[5m])

为什么是两种? 第一种语法更容易读写,但不能在词中间使用变量。启用Multi-value包含所有值选项后,Grafana 会将标签从纯文本转换为与正则表达式兼容的字符串。这意味着必须使用 =~ 而不是 =

Annotations

您可以使用注释在图形上叠加丰富的事件信息。您可以使用控制面板菜单或注释视图添加注释查询。有关更多信息,请参阅 Annotations

Prometheus 支持两种查询注释的方式。

  • 常规指标查询

  • Prometheus 查询待处理和触发警报。有关更多信息,请参阅运行时检查警报

step 选项可用于限制查询返回的事件数量。