使用 Athena 数据源 - Amazon Managed Grafana

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

使用 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) $__parseTimevarchar 转换为具有给定格式的时间戳 $__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

下表显示了可用于呈现注释的列的描述:

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

异步查询数据支持

为了避免超时,Amazon Managed Grafana 中的 Athena 查询以异步方式处理。异步查询使用单独的请求来启动查询,然后检查其进度,最后获取结果。这样可以避免长时间运行的查询超时。

查询结果重用

您可以重复使用先前查询的结果来提高查询性能。要启用查询重用,请在查询编辑器的 “查询结果重用” 部分中启用。必须对要重复使用查询的每个查询执行此操作。

注意

此功能要求您的 Athena 实例使用引擎版本 3。有关更多信息,请参阅亚马逊 Athena 用户指南中的更改 Athena 引擎版本。