本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Prometheus 数据来源
Prometheus 设置
名称 | 描述 |
---|---|
Name
|
数据来源名称。您将在面板和查询中通过其名称查看数据来源。 |
Default
|
默认数据来源意味着将为新面板预先选择该数据来源。 |
Url
|
Prometheus 服务器的 URL,例如 https://prometheus.example.org:9090 。 |
Access
|
服务器(默认)= 必须可从 Grafana 后端/服务器访问 URL。 |
Basic Auth
|
启用对 Prometheus 数据来源的基本身份验证。 |
User
|
用于基本身份验证的用户名。 |
Password
|
用于基本身份验证的密码。 |
Scrape interval
|
将其设置为 Prometheus 中配置的典型抓取和评估间隔。默认值为 15 秒。 |
Disable metrics lookup
|
选中此选项将禁用查询字段自动完成中的指标选择器和指标/标签支持。如果您在使用较大的 Prometheus 实例时遇到性能问题,这会有所帮助。 |
Custom Query Parameters
|
在 Prometheus 查询 URL 中添加自定义参数。例如,timeout 、partial_response 、dedup 或 max_source_resolution 。应使用 "&" 将多个参数连接在一起。 |
Prometheus 查询编辑器
以下部分提供了控制面板和 Explore 中 Prometheus 查询编辑器的信息和选项。
控制面板中的查询编辑器
在编辑模式下打开图形,方法是选择标题,然后选择编辑(或在面板上暂停时按 e 键)。
名称 | 描述 |
---|---|
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 个像素检索一个数据点。请注意,最小时间间隔和最小步长都限制了 $__interval 和 step 的最终值。 |
Metric lookup
|
在此输入字段中搜索指标名称。 |
Format as
|
在 Table 、Time
series 或 Heatmap 之间切换。Table 仅在表面板中起作用。Heatmap 适用于在热图面板上显示直方图类型的指标。其将累积直方图转换为常规直方图,并按存储桶边界对序列进行排序。 |
Instant
|
执行 "instant" 查询,仅返回 Prometheus 为请求的时间序列抓取的最新值。Instant 查询返回结果的速度比正常范围查询快得多。使用这些结果来查找标签集。 |
Min time interval
|
将该值乘以分辨率设置的分母,为 $__interval 变量和 Prometheus 范围查询的 step 参数 |
注意
Amazon Managed Grafana 会修改查询的请求日期,使其与动态计算的步骤保持一致。这样可确保指标数据一致显示,但可能会导致图形右边缘出现小的数据间隙。
控制面板中的即时查询
Prometheus 数据来源允许运行即时查询,仅查询最新值。您可以在表面板中可视化结果,以查看时间序列的所有可用标签。
即时查询结果仅包含每个序列的一个数据点。借助序列覆盖,可在图形面板中显示结果。要在图形中显示为最新值点,请添加序列覆盖并选择 Points > true
。要在整个图形中显示一条水平线,请添加序列覆盖并选择 Transform > constant
。有关序列覆盖的更多信息,请参阅 序列覆盖。
Explore 中的查询编辑器
名称 | 描述 |
---|---|
Query expression
|
有关 Prometheus 查询表达式的更多信息,请参阅 Prometheus 文档 |
Step
|
Prometheus 范围查询的 Step 参数s (秒)。 |
Query type
|
Range 、Instant 或者 Both 。运行范围查询时,查询结果将以图形和表的形式显示。即时查询仅返回 Prometheus 为请求的时间序列抓取的最新值,并显示在表中。如果选择二者,则同时运行即时查询和范围查询。范围查询结果以图形的形式显示,即时查询结果以表的形式显示。 |
指标浏览器
通过指标浏览器,您可以快速查找指标并选择相关标签来构建基本查询。打开浏览器后,您将看到所有可用的指标和标签。如果 Prometheus 实例支持,则每个指标都将以工具提示的形式显示 HELP 和 TYPE。
选择指标时,浏览器会缩小可用标签的范围,仅显示适用于该指标的标签。然后,您可以选择一个或多个标签,可用标签值显示在底部的列表中。为每个标签选择一个或多个值,以缩小查询范围。
注意
如果您不记得开头的指标名称,也可以先选择几个标签,缩小列表范围,然后再查找相关标签值。
指标浏览器中的所有列表上方都有一个搜索字段,可快速筛选与特定字符串匹配的指标或标签。值部分只有一个搜索字段。其筛选适用于所有标签,以帮助您在选择标签后跨标签查找值,例如,在标签 app、job、job_name 中,只有一个标签可能具有您要查找的值。
如果对查询感到满意,请单击“使用查询”来运行查询。用作速率查询按钮可在查询中添加 rate(...)[$__interval],来帮助编写计数器指标查询。“验证选择器”按钮将向 Prometheus 核实该选择器有多少时间序列可用。
限制
指标浏览器的硬限制为 10000 个标签(键)和 50000 个标签值(包括指标名称)。如果 Prometheus 实例返回更多结果,浏览器将继续运行。但是,如果超过最大限制,结果集将被截断。
模板化
您可以在指标查询中使用变量来代替服务器、应用程序和传感器名称等硬编码。变量显示为控制面板顶部的下拉选择框。您可以使用这些下拉框来更改控制面板中显示的数据。
有关模板化和模板变量的更多信息,请参阅 模板和变量。
查询变量
查询类型的变量允许您查询 Prometheus 以获取指标、标签或标签值的列表。Prometheus 数据来源插件提供了以下函数,您可以在查询输入字段中使用。
名称 | 描述 |
---|---|
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])
为什么是两种? 第一种语法更容易读写,但不能在词中间使用变量。启用多值或包含所有值选项后,Grafana 会将标签从纯文本转换为兼容正则表达式的字符串。这意味着必须使用 =~
而不是 =
。
注释
您可以使用注释在图形上叠加丰富的事件信息。您可以使用控制面板菜单或注释视图添加注释查询。有关更多信息,请参阅 注释。
Prometheus 支持两种查询注释的方式。
-
常规指标查询
-
Prometheus 查询待处理和触发警报。有关更多信息,请参阅运行时检查警报
。
step 选项可用于限制查询返回的事件数量。