使用亚马逊 Redshift 数据源 - Amazon Managed Grafana

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

使用亚马逊 Redshift 数据源

IAM 策略

Grafana 需要使用 IAM 授予权限才能读取 Redshift 指标。您可以将这些权限附加到 IAM 角色,并利用 Grafana 的内置支持来代入角色。本节定义了内置的 Amazon Grafana Redshift 访问策略。AWS 托管策略: AmazonGrafanaRedshiftAccess

查询亚马逊 Redshift 数据

Amazon Redshift 数据源提供了标准的 SQL 查询编辑器。Amazon Managed Grafana 包含一些宏来帮助编写更复杂的时间序列查询。

描述 输出示例
$__timeEpoch(column) $__timeEpoch将替换为转换为 UNIX 时间戳的表达式并将该列重命名为时间 UNIX_TIMESTAMP(dateColumn) as "time"
$__timeFilter(column) $__timeFilter创建根据面板的时间范围筛选数据(使用column)的条件 time BETWEEN '2017-07-18T11:15:52Z' AND '2017-07-18T11:15:52Z'
$__timeFrom() $__timeFrom用引号输出面板范围的当前开始时间 '2017-07-18T11:15:52Z'
$__timeTo() $__timeTo用引号输出面板范围的当前结束时间 '2017-07-18T11:15:52Z'
$__timeGroup(column, '1m') $__timeGroup对时间戳进行分组,以便图表上的每个周期只有 1 个点 floor(extract(epoch from time)/60)*60 AS "time"
$__schema $__schema 使用选定的架构 public
$__table $__table从给定的表中输出一个表$__schema(默认情况下它使用公共架构) sales
$__column $__column从当前输出一列 $__table date
$__unixEpochFilter(column) $__unixEpochFilter替换为使用指定列名的时间范围过滤器,时间表示为 Unix 时间戳 column >= 1624406400 AND column <= 1624410000
$__unixEpochGroup(column) $__unixEpochGroup等于,$__timeGroup但对于存储为 Unix 时间戳的时间 floor(time/60)*60 AS "time"

可视化

Redshift 中的大多数查询最好用表格可视化来表示。任何查询都将在表中显示数据。如果可以查询,则可以将其放入表中。

此示例返回表格可视化的结果:

SELECT {column_1}, {column_2} FROM {table};

时间序列和图表可视化

对于时间序列和图形可视化,有一些要求:

  • 必须选择datetime类型为date或的列。

  • date列必须按升序排列(使用ORDER BY column ASC)。

  • 必须选择一个数字列。

要绘制更合理的图表,请务必使用$__timeFilter$__timeGroup宏。

时间序列查询示例:

SELECT avg(execution_time) AS average_execution_time, $__timeGroup(start_time, 'hour'), query_type FROM account_usage.query_history WHERE $__timeFilter(start_time) group by query_type,start_time order by start_time,query_type ASC;

填充模式

Grafana 还会使用一些默认值自动完成没有值的帧。要配置此值,请在查询编辑器中更改填充值

检查查询

由于 Grafana 支持 Redshift 不支持的宏,因此可以在查询检查器中看到完全呈现的查询(可以直接复制并粘贴到 Redshift 中)。要查看完整的插值查询,请选择 Query Inspector 菜单,查询选项卡上会显示完整的查询

模板和变量

有关如何添加新的 Redshift 查询变量的更多信息,请参阅。添加查询变量使用您的 Redshift 数据源作为可用查询的数据源。

从 Amazon Redshift 表中查询的任何值都可以用作变量。请务必避免选择太多值,因为这可能会导致性能问题。

创建变量后,您可以通过使用在 Redshift 查询中使用该变量。变量语法有关变量的更多信息,请参阅模板和变量

注释

注释允许您将丰富的事件信息叠加在图表之上。您可以通过选择面板来添加注释,也可以使用从仪表板菜单打开的 “注释” 视图添加注释查询。

自动添加注释的查询示例:

SELECT time as time, environment as tags, humidity as text FROM $__table WHERE $__timeFilter(time) and humidity > 95

下表显示了呈现注释时考虑的列的值:

名称 描述
Time 日期或时间字段的名称。可以是具有原生 SQL 日期或时间数据类型或纪元值的列。
Timeend 结束日期或时间字段的可选名称。可以是具有本机 SQL 日期或时间数据类型或纪元值的列。
Text 事件描述字段。
Tags 用于事件标签的可选字段名称,以逗号分隔的字符串。