本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用亚马逊 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
下表显示了呈现注释时考虑的列的值:
名称 | 描述 |
---|---|
|
日期或时间字段的名称。可以是具有原生 SQL 日期或时间数据类型或纪元值的列。 |
|
结束日期或时间字段的可选名称。可以是具有本机 SQL 日期或时间数据类型或纪元值的列。 |
|
事件描述字段。 |
|
用于事件标签的可选字段名称,以逗号分隔的字符串。 |