本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Athena 数据源
IAM 策略
Grafana 需要通过 IAM 授予的权限才能读取 Athena 的指标。您可以将这些权限附加到 IAM 角色,并利用 Grafana 的内置支持来代入角色。请注意,在将数据源添加到 Grafana 之前,您需要为角色配置所需的策略。您需要管理员或编辑者角色才能添加数据源。本节定义了内置的 Amazon Grafana Athena 访问策略。AWS 托管策略: AmazonGrafanaAthenaAccess
查询 Athena 数据
Athena 数据源提供了标准的 SQL 查询编辑器。Amazon Managed Grafana 包含一些宏来帮助编写更复杂的时间序列查询。
宏
宏 | 描述 | 示例 | 输出示例 |
---|---|---|---|
$__dateFilter(column)
|
$__dateFilter 创建条件筛选器,根据面板的日期范围选择数据(使用column )。 |
$__date(my_date)
|
my_date BETWEEN date '2017-07-18' AND date
'2017-07-18' |
$__parseTime(column,format)
|
$__parseTime 将 varchar 转换为具有给定格式的时间戳。 |
$__parseTime(eventtime,
'yyyy-MM-dd''T''HH:mm:ss''Z')
|
parse_datetime(time,'yyyy-MM-dd''T''HH:mm:ss''Z') |
$__timeFilter(column,format)
|
$__timeFilter 创建根据面板的时间范围筛选数据(使用column )的条件。第二个参数用于选择性地将列从 varchar 解析为具有特定格式的时间戳。 |
$__timeFilter(time, 'yyyy-MM-dd
HH:mm:ss') |
TIMESTAMP time BETWEEN TIMESTAMP
'2017-07-18T11:15:52Z' AND TIMESTAMP
'2017-07-18T11:15:52Z' |
$__timeFrom()
|
$__timeFrom 用引号输出面板范围的当前开始时间。 |
$__timeFrom() |
TIMESTAMP '2017-07-18 11:15:52' |
$__timeTo()
|
$__timeTo 用引号输出面板范围的当前结束时间。 |
$__timeTo() |
TIMESTAMP '2017-07-18 11:15:52' |
$__timeGroup(column, '1m', format)
|
$__timeGroup 对时间戳进行分组,以便图表上的每个周期只有 1 个点。第三个参数用于选择性地将列从 varchar 解析为具有特定格式的时间戳。 |
$__timeGroup(time,'5m','yyyy-MM-dd''T''HH:mm:ss.SSSSSS''Z') |
FROM_UNIXTIME(FLOOR(TO_UNIXTIME(parse_datetime(time,'yyyy-MM-dd''T''HH:mm:ss.SSSSSS''Z'))/300)*300) |
$__table
|
$__table 返回在表格选择器中选择的表。 |
$__table |
my_table |
$__column
|
$__column 返回在列选择器中选择的列(它需要一个表)。 |
$__column
|
col1
|
可视化
Athena 中的大多数查询最好用表格可视化来表示。查询在表中显示返回数据。如果可以查询,则可以将其显示为表格。
此示例返回表格可视化的结果:
SELECT {column_1}, {column_2} FROM {
table
};
时间序列/图表可视化
对于时间序列和图表可视化,您必须:
-
选择
datetime
类型为date
或的列。该date
列必须按升序排列(使用ORDER BY column ASC
)。 -
还要选择一个数字列。
检查查询
Amazon Managed Grafana 支持 Athena 不支持的宏,这意味着将查询直接复制并粘贴到 Athena 中后可能无法运行。要查看直接在 Athena 中运行的完整插值查询,请单击 Query Inspector 按钮。完整的查询显示在 “查询” 选项卡下。
模板和变量
有关添加 Athena 查询变量的更多信息,请参阅。添加查询变量使用您的 Athena 数据源作为可用查询的数据源。
从 Athena 表中查询的任何值都可以用作变量。避免选择太多值,因为这可能会导致性能问题。
创建变量后,您可以通过使用在 Athena 查询中使用该变量。变量语法有关变量的更多信息,请参阅模板和变量。
注释
注释允许您将丰富的事件信息叠加在图表之上。您可以通过选择面板来添加注释,也可以使用仪表板菜单的 “批注” 视图添加注释查询。
自动添加注释的查询示例:
SELECT time as time, environment as tags, humidity as text FROM tableName WHERE $__dateFilter(time) and humidity > 95
下表显示了可用于呈现注释的列的描述:
名称 | 描述 |
---|---|
|
日期/时间字段的名称。可以是具有原生 SQL 日期/时间数据类型或纪元值的列。 |
|
结束日期/时间字段的可选名称。可以是具有原生 SQL 日期/时间数据类型或纪元值的列。(Grafana v6.6+) |
|
事件描述字段。 |
|
用于事件标签的可选字段名称,以逗号分隔的字符串。 |
异步查询数据支持
为了避免超时,Amazon Managed Grafana 中的 Athena 查询以异步方式处理。异步查询使用单独的请求来启动查询,然后检查其进度,最后获取结果。这样可以避免长时间运行的查询超时。
查询结果重用
您可以重复使用先前查询的结果来提高查询性能。要启用查询重用,请在查询编辑器的 “查询结果重用” 部分中启用。必须对要重复使用查询的每个查询执行此操作。
注意
此功能要求您的 Athena 实例使用引擎版本 3。有关更多信息,请参阅亚马逊 Athena 用户指南中的更改 Athena 引擎版本。