Grafana 支持多种类型的数据源。数据源查询会返回 Grafana 可以转换和可视化的数据。每个数据源都使用自己的查询语言,每个数据源插件都实现了一个称为查询编辑器的查询创建用户界面。
Grafana 面板通过查询与数据源通信,为可视化检索数据。查询是用数据源使用的查询语言编写的问题。
您可以在面板的数据源选项中配置查询频率和数据收集限制。Grafana 每个面板最多支持 26 个查询。
重要:您必须熟悉数据源的查询语言。
每个数据源的查询编辑器都提供定制的用户界面,可帮助您利用其独特的功能编写查询。
由于查询语言不同,每个数据源查询编辑器的外观和功能也不同。根据数据源的不同,查询编辑器可能会提供自动完成功能、指标名称、变量建议或可视化查询创建界面。
每个数据源使用不同的查询语言来请求数据。
PostgreSQL 示例:
SELECT hostname FROM host WHERE region IN($region)
PromQL 示例:
query_result(max_over_time(<metric>[${__range_s}s]) != <state>)
Grafana 还包括三种特殊数据源: Grafana、Mixed 和 Dashboard。
面板的 "Query" 选项卡由以下元素组成:
数据源选择器(Data source selector): 选择要查询的数据源。
查询选项(Query options):设置最大数据检索参数和查询执行时间间隔。
查询检查器按钮(Query inspector button):打开查询检查器面板,可在此查看和优化查询。
查询编辑器列表(Query editor list):列出已编写的查询。
表达式(Expressions):使用表达式生成器创建警报表达式。
查询会返回 Grafana 在仪表板面板中可视化的数据。创建面板时,Grafana 会自动选择默认数据源。
要添加查询,请执行以下操作:
(1)编辑要添加查询的面板。
(2)单击查询选项卡。
(3)单击数据源下拉菜单并选择数据源。如果创建的是新的仪表盘,则在添加第一个面板时会提示选择数据源。
(4)单击查询选项配置所需的最大数据点数。
(5)使用查询编辑器编写查询。
(6)单击“Apply”。
Grafana 就会查询数据源并将数据可视化。
Grafana 在可折叠的查询行中组织查询。每个查询行包含一个查询编辑器,并用字母标识(A、B、C 等)。
您可以:
图标 | 描述 |
切换查询编辑器帮助。如果数据源支持,单击此图标可显示有关如何使用查询编辑器的信息,或提供对常用查询的快速访问。 | |
复制查询。在处理多个相似的复杂查询时,如果想尝试不同的变体或进行细微改动,复制查询非常有用。 | |
隐藏查询。Grafana 不会向数据源发送隐藏查询。 | |
删除查询。删除查询会永久删除该查询,但有时可以通过还原以前保存的面板版本来恢复已删除的查询。 | |
重新排列查询。单击并按住拖动图标,然后将查询拖动到所需位置,即可更改查询顺序。结果的顺序反映了查询的顺序,所以你可以经常根据查询顺序调整可视化结果。 |
单击数据源选择器旁边的查询选项,查看所选数据源的设置。在此进行的更改只会影响在此面板中进行的查询。如下图:
Grafana 设置的默认值以深灰色文本显示。更改以白色文本显示。要将字段恢复为默认设置,请删除字段中的白色文本。
面板数据源查询选项包括:
Max data points(最大数据点):如果数据源支持,则设置每个系列返回的最大数据点数。如果查询返回的数据点数多于最大数据点数设置,则数据源会通过平均值、最大值或其他函数将它们聚合在一起,从而减少返回的点数。默认值是图表的宽度(或像素数),因为只有图表面板有足够的空间显示尽可能多的数据点,才能实现可视化。流式数据是连续的数据流,而缓冲则将数据流分成若干块。例如,Loki 以实时尾随模式流式传输数据。
Min interval(最小间隔):设置自动计算间隔的最小限制,通常是最小抓取间隔。如果每 15 秒保存一个数据点,那么间隔时间小于该值将不会有任何好处。您也可以将其设置为比抓取间隔更高的最小值,以检索更粗粒度和功能更强的查询。
Interval(时间间隔):设置一个时间跨度,以便在按时间聚合或分组数据点时使用。Grafana 会自动计算一个适当的时间间隔,您可以将其用作模板查询中的变量。变量的单位是秒 ($__interval) 或毫秒 ($__interval_ms)。区间通常用于求和或求取平均值等聚合函数。例如,这是一个使用区间变量的 Prometheus 查询:rate(http_requests_total[$__interval])。当用户放大可视化图时,区间会变大,从而产生更粗粒度的聚合。同样,如果用户放大图形,间隔就会缩小,从而形成更精细的聚合。
Relative time(相对时间): 覆盖单个面板的相对时间范围,使其不同于仪表盘右上角时间选择器中的选择。注意:如果仪表盘的时间范围是绝对的,则面板时间覆盖无效。
示例 | Relative time 字段 |
Last 5 minutes | now-5m |
The day so far | now/d |
Last 5 days | now-5d/d |
This week so far | now/w |
Last 2 years | now-2y/y |
Time shift(时间移动): 通过相对于时间选择器移动开始和结束时间来覆盖单个面板的时间范围。例如,可以将面板的时间范围移到比仪表板时间选择器早两个小时的位置。注意:如果仪表板的时间范围是绝对的,则面板时间覆盖无效。
示例 | Time shift 字段 |
Last entire week | 1w/w |
Two entire weeks ago | 2w/w |
Last entire month | 1M/M |
This entire year | 1d/y |
Last entire year | 1y/y |
Cache timeout(缓存超时):(仅在数据源中可用时可见)如果时间序列存储有查询缓存,则覆盖默认缓存超时,请将此值指定为以秒为单位的数值。