本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon Redshift 数据来源
IAM 策略
Grafana 需要使用 IAM 授予的权限才能读取 Redshift 指标。您可以将这些权限附加到 IAM 角色,并利用 Grafana 的内置支持来担任这些角色。AWS 托管策略: AmazonGrafanaRedshiftAccess 这一节中定义了内置的 Amazon Grafana Redshift 访问策略。
查询 Amazon 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};
时间序列和图表可视化
对于时间序列和图表可视化,有一些要求需要满足:
- 
                    必须选择 date或datetime类型的列。
- 
                    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 中)。要查看完整的插值查询,请选择查询检测器菜单,查询选项卡上会显示完整的查询。
模板和变量
有关如何添加新的 Redshift 查询变量的详细信息,请参阅添加查询变量。使用您的 Redshift 数据来源作为可用查询的数据来源。
从 Amazon Redshift 表中查询的任何值都可以用作变量。请务必避免选择太多值,因为这可能会导致性能问题。
创建变量后,您可以通过使用 变量语法 在 Redshift 查询中使用该变量。有关变量的更多信息,请参阅 模板和变量。
Annotations
Annotations允许您将丰富的事件信息叠加在图表之上。您可以通过选择面板来添加注释,也可以通过使用从控制面板菜单打开的注释视图添加注释查询来添加注释。
自动添加注释的查询示例:
SELECT time as time, environment as tags, humidity as text FROM $__table WHERE $__timeFilter(time) and humidity > 95
下表代表的是呈现注释时考虑的列的值:
| 名称 | 描述 | 
|---|---|
|  | 日期或时间字段的名称。可以是具有原生 SQL 日期或时间数据类型或纪元值的列。 | 
|  | 结束日期或时间字段的可选名称。可以是具有原生 SQL 日期或时间数据类型或纪元值的列。 | 
|  | 事件描述字段。 | 
|  | 用于事件标签的可选字段名称,显示为以逗号分隔的字符串。 |