插件 〉Amazon Redshift


开发者

Grafana Labs

订阅以接收不定期的产品新闻和更新



数据源
grafana

Amazon Redshift

  • 概述
  • 安装
  • 更新日志
  • 相关内容

兼容性

由于 UI 组件的破坏性变更,AWS Redshift 数据源插件 >=2.0.0 不兼容 Grafana <=10.4.x 版本。

Grafana 10 破坏性变更:更新 Redshift 数据源插件到 >=1.8.3

Grafana 10.0.0 随新的 React 18 升级发布。React 18 中状态更新批处理的变更导致 Redshift <=1.8.2 版本查询编辑器中出现错误。如果您使用的是 Grafana >=10.0.0,请在您的 Grafana 实例管理控制台中将插件更新到 1.8.3 或更高版本。

适用于 Grafana 的 Redshift 数据源

Redshift 数据源插件允许您在 Grafana 内部查询和可视化 Redshift 数据指标。

本主题解释了此数据源特有的选项、变量、查询及其他设置。关于如何向 Grafana 添加数据源的说明,请参阅添加数据源

在 Grafana 中配置数据源

要访问数据源设置,请将鼠标悬停在配置(齿轮)图标上,然后点击数据源,再点击 Amazon Redshift 数据源。

名称描述
名称数据源名称。这是在面板和查询中引用此数据源的方式。
默认默认数据源意味着它将为新面板预先选中。
身份验证提供者指定获取凭据的提供者。
访问密钥 ID如果选择了访问密钥和私有密钥,请指定要使用的安全凭据的访问密钥。
私有访问密钥如果选择了访问密钥和私有密钥,请指定要使用的安全凭据的私有密钥。
凭据配置文件名称指定要使用的配置文件名称(如果您使用 ~/.aws/credentials 文件),留空表示默认。
Assume Role Arn(可选)指定要假定的角色的 ARN。
External ID(可选)如果您正在假定另一个帐户中已使用外部 ID 创建的角色,请在此处指定该外部 ID。
Endpoint(可选)可选地,指定服务的自定义端点。
默认区域部署集群的区域。
AWS Secrets Manager使用 AWS Secrets Manager 对 Amazon Redshift 进行身份验证。
临时凭据使用临时数据库凭据对 Amazon Redshift 进行身份验证。
Serverless使用 Redshift Serverless 工作组。
集群标识符要使用的 Redshift 预置集群(如果使用 AWS Secrets Manager 则自动设置)。
工作组要使用的 Redshift Serverless 工作组。
托管密钥使用 AWS Secrets Manager 时,选择包含访问数据库凭据的密钥。请注意,预置和无服务器存储凭据的格式不同。请参阅在 AWS Secrets Manager 中存储数据库凭据获取说明。
数据库用户数据库用户。如果使用 AWS Secrets Manager 则自动设置。
数据库集群或工作组内的数据库名称。
将事件发送到 Amazon EventBridge将 Data API 事件发送到 Amazon EventBridge 进行监控。

身份验证

有关身份验证选项和配置详情,请参阅AWS 身份验证主题。

IAM 策略

Grafana 需要通过 IAM 授予权限才能读取 Redshift 指标。您可以将这些权限附加到 IAM 角色,并利用 Grafana 内置的假定角色支持。请注意,在将数据源添加到 Grafana 之前,您需要配置所需策略。您可以在此处查看 AWS 提供的一些预定义策略。您可以查看 AWS 提供的一些预定义策略。

这是一个最小策略示例

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowReadingMetricsFromRedshift",
      "Effect": "Allow",
      "Action": [
        "redshift-data:ListTables",
        "redshift-data:DescribeTable",
        "redshift-data:GetStatementResult",
        "redshift-data:DescribeStatement",
        "redshift-data:ListStatements",
        "redshift-data:ListSchemas",
        "redshift-data:ExecuteStatement",
        "redshift-data:CancelStatement",
        "redshift:GetClusterCredentials",
        "redshift:DescribeClusters",
        "redshift-serverless:ListWorkgroups",
        "redshift-serverless:GetCredentials",
        "secretsmanager:ListSecrets"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadingRedshiftQuerySecrets",
      "Effect": "Allow",
      "Action": ["secretsmanager:GetSecretValue"],
      "Resource": "*",
      "Condition": {
        "Null": {
          "secretsmanager:ResourceTag/RedshiftQueryOwner": "false"
        }
      }
    }
  ]
}

查询 Redshift 数据

提供的查询编辑器是一个标准的 SQL 查询编辑器。Grafana 包含一些宏,有助于编写更复杂的时间序列查询。

描述输出示例
$__timeEpoch(column)$__timeEpoch 将被替换为一个表达式,用于转换为 UNIX 时间戳并将列重命名为 timeUNIX_TIMESTAMP(dateColumn) as "time"
$__timeFilter(column)$__timeFilter 创建一个条件,根据面板的时间范围过滤数据(使用 columntime 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 输出一个表(默认使用 public 模式)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};

时间序列 / 图形可视化

对于时间序列 / 图形可视化,有几个要求

  • 必须选择一个 datedatetime 类型的列
  • 日期列必须按升序排列(使用 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 支持 Redshift 不支持的宏,因此可以在“查询检查器”中查看完全渲染的查询,该查询可以直接复制/粘贴到 Redshift 中。要查看完整的插值查询,请点击“查询检查器”按钮,完整查询将显示在“查询”选项卡下。

模板和变量

要添加新的 Redshift 查询变量,请参阅添加查询变量。使用您的 Redshift 数据源作为以下可用查询的数据源

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

要为变量显示自定义名称,您可以使用类似 SELECT hostname AS text, id AS value FROM MyTable 的查询。在这种情况下,变量值字段必须是字符串类型或强制转换为字符串类型。

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

注解

注解允许您在图表上方叠加丰富的事件信息。您可以通过点击面板或通过仪表盘菜单 / 注解视图添加注解查询来添加注解。

自动添加注解的查询示例

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

下表表示用于渲染注解的列的值

名称描述
time日期/时间字段的名称。可以是具有原生 SQL 日期/时间数据类型或 epoch 值(shí yuánzhí)的列。
timeend可选的结束日期/时间字段名称。可以是具有原生 SQL 日期/时间数据类型或 epoch 值(shí yuánzhí)的列。(Grafana v6.6+)
text事件描述字段。
tags用作事件标签的可选字段名称,以逗号分隔的字符串形式。

预置 Redshift 数据源

您可以使用配置文件通过 Grafana 的预置系统配置 Redshift 数据源。更多信息,请参阅预置文档页面

这里是一些预置示例。

使用 AWS SDK(默认)

apiVersion: 1
datasources:
  - name: Redshift
    type: redshift
    jsonData:
      authType: default
      defaultRegion: eu-west-2

使用凭据配置文件名(非默认)

apiVersion: 1

datasources:

  • name: Redshift type: redshift jsonData: authType: credentials defaultRegion: eu-west-2 profile: secondary

使用 accessKey 和 secretKey

apiVersion: 1

datasources:

  • name: Redshift type: grafana-redshift-datasource jsonData: authType: keys defaultRegion: eu-west-2 secureJsonData: accessKey: ‘<your access key>’ secretKey: ‘<your secret key>’

使用 AWS SDK 默认和要假定的 IAM 角色的 ARN

apiVersion: 1
datasources:
  - name: Redshift
    type: grafana-redshift-datasource
    jsonData:
      authType: default
      assumeRoleArn: arn:aws:iam::123456789012:root
      defaultRegion: eu-west-2

预配置的 Redshift 仪表盘

Redshift 数据源附带了一个预配置的仪表盘,用于显示一些高级监控参数。此精心策划的仪表盘基于AWS Labs 仓库中用于 Redshift 的类似仪表盘。查看了解更多详情。

按照这些说明在 Grafana 中导入仪表盘。

导入的仪表盘位于 配置 > 数据源 > 选择您的 Redshift 数据源 > 选择“仪表盘”选项卡,即可查看可用的预制仪表盘。

最大限度地利用此插件

异步查询数据支持

异步查询数据支持启用了异步查询处理流程。启用异步查询数据支持后,查询将通过多个请求(启动、检查状态和获取结果)进行处理,而不是通过单个请求启动和解决查询。这对于可能长时间运行并超时的查询非常有用。您需要确保 Grafana 使用的 IAM 策略允许以下操作 redshift-data:ListStatementsredshift-data:CancelStatement

异步查询数据支持在所有 Redshift 数据源中默认启用。

异步查询缓存

要为异步查询启用查询缓存,您需要使用 Grafana 10.1 或更高版本,并将功能开关 useCachingServiceawsAsyncQueryCaching 设置为 true。您还需要为特定的 Redshift 数据源配置查询缓存

在 Grafana Cloud 上安装 Amazon Redshift

更多信息,请访问插件安装文档。

更新日志

2.1.0

  • 从 Grafana 启用 dataproxy.row_limit 配置选项,位于 #375
  • 更新 go_modules 组中的 golang.org/x/net 从 0.34.0 到 0.36.0,位于 #372
  • 更新 all-go-dependencies 组,包含 2 个更新,位于 #364
  • 更新 all-node-dependencies 组,在 1 个目录中包含 4 个更新,位于 #366

2.0.1

  • 更新 plugin-ui,修复 Monaco 语言特性,位于 #365
  • 更新 all-go-dependencies 组中的 github.com/grafana/grafana-plugin-sdk-go 从 0.265.0 到 0.266.0,位于 #362
  • 更新 all-node-dependencies 组,包含 8 个更新,位于 #361

2.0.0

  • (破坏性变更:) 将 UI 组件迁移到 grafana/plugin-ui,位于 #353
  • 更新 all-node-dependencies 组,在 1 个目录中包含 7 个更新,位于 #359
  • 更新 github.com/grafana/grafana-plugin-sdk-go 到 v0.265.0,位于 #357
  • 日常任务:为外部贡献添加标签,位于 #354
  • 将 E2E 测试迁移到 Playwright,位于 #346
  • 更新 all-node-dependencies 组,在 1 个目录中包含 22 个更新,位于 #344
  • 更新 all-go-dependencies 组,在 1 个目录中包含 4 个更新,位于 #343

1.20.0

  • 添加 PDC 支持,位于 #333
  • 更新 node 依赖项,包含 29 个更新,忽略 dependabot 中的 react 和 react-dom 主要版本更新,位于 #336
  • 更新 all-go-dependencies 组,在 1 个目录中包含 3 个更新,位于 #335
  • 添加 pre-commit hook,位于 #327

1.19.1

  • Dependabot:更新依赖项 #302, #303, #313, #308, #323, #322
    • npm_and_yarn 组中的 path-to-regexp 从 1.8.0 到 1.9.0
    • npm_and_yarn 组中的 micromatch 从 4.0.5 到 4.0.8
    • actions/checkout 从 2 到 4
    • actions/setup-node 从 3 到 4
    • tibdex/github-app-token 从 1.8.0 到 2.1.0
    • github.com/aws/aws-sdk-go 从 1.51.31 到 1.55.5
    • github.com/grafana/grafana-plugin-sdk-go 从 0.254.0 到 0.259.4
    • github.com/grafana/grafana-aws-sdk 从 0.31.3 到 0.31.4
    • github.com/grafana/sqlds/v4 从 4.1.2 到 4.1.4
    • npm_and_yarn 组中的 braces 从 3.0.2 到 3.0.3
    • github.com/stretchr/testify 从 1.9.0 到 1.10.0 (#321)
    • @emotion/css 11.13.4 到 11.13.5
    • @grafana/async-query-data 从 0.2.0 到 0.3.0
    • @grafana/data 从 11.2.2 到 11.3.1
    • @grafana/experimental 从 2.1.2 到 2.1.4
    • @grafana/runtime 从 11.2.2 到 11.3.1
    • tslib 从 2.8.0 到 2.8.1
    • @babel/core 从 7.25.8 到 7.26.0
    • @grafana/eslint-config 从 7.0.0 到 8.0.0
    • @swc/core 从 1.7.36 到 1.9.3
    • @swc/helpers 从 0.5.13 到 0.5.15
    • @swc/jest 从 0.2.36 到 0.2.37
    • @testing-library/jest-dom 从 6.6.0 到 6.6.3
    • @types/jest 从 29.5.13 到 29.5.14
    • @types/lodash 从 4.17.10 到 4.17.13
    • @types/node 从 22.7.5 到 22.10.1
    • cspell 从 8.15.2 到 8.16.1
    • cypress 从 7.7.0 到 13.16.0
    • prettier 从 3.3.3 到 3.4.1
    • sass 从 1.79.5 到 1.81.0
    • sass-loader 从 16.0.2 到 16.0.3
    • typescript 从 5.6.3 到 5.7.2
    • webpack 从 5.95.0 到 5.96.1
    • npm_and_yarn 组中的 cross-spawn 从 7.0.3 到 7.0.6

1.19.0

  • 日常任务:更新依赖项 #300
  • 日常任务:更新依赖项 #299
  • 日常任务:更新 plugin.json 关键词 #298
  • 为 grafana/plugin-sdk-go 添加 dependabot #296
  • 修复:在检查长度之前不要检查 slice 的 nilness #294

1.18.0

  • 添加 errorsource,位于 #292

1.17.0

  • 更新 grafana/aws-sdk 以获取新区域

1.16.0

  • 在配置和查询编辑器中迁移到新的表单样式,位于 #287

1.15.2

  • 修复:使用 ReadAuthSettings 获取 authSettings,位于 #288

1.15.1

  • 升级 grafana-aws-sdk,将 GetSession 用法替换为 GetSessionWithAuthSettings #284

1.15.0

  • 由 @kevinwcyu 在 https://github.com/grafana/redshift-datasource/pull/273 中添加关键词
  • 由 @iwysiu 在 https://github.com/grafana/redshift-datasource/pull/276 中添加缺失的区域并在前端使用区域资源处理程序
  • 由 @leventebalogh 在 https://github.com/grafana/redshift-datasource/pull/277 中更新 Plugin.json:更新 schema 引用 URL
  • 由 @idastambuk 在 https://github.com/grafana/redshift-datasource/pull/280 中修复 E2E:在发送 /secrets 资源请求之前更新区域
  • 由 @njvrzm 在 https://github.com/grafana/redshift-datasource/pull/279 中更新 grafana-aws-sdk 中添加的上下文

新贡献者

  • @leventebalogh 在 https://github.com/grafana/redshift-datasource/pull/277 中进行了首次贡献
  • @njvrzm 在 https://github.com/grafana/redshift-datasource/pull/279 中进行了首次贡献

1.14.0

  • 移除 redshiftAsyncQuerySupport 功能开关 + 样式改进,位于 https://github.com/grafana/redshift-datasource/pull/272

1.13.3

  • 升级 @grafana/async-query-data 从 0.1.10 到 0.1.11,位于 https://github.com/grafana/redshift-datasource/pull/269

1.13.2

  • 更新 grafana/aws-sdk-go 到 0.20.0,位于 https://github.com/grafana/redshift-datasource/pull/268

1.13.1

  • 由 @dependabot 在 https://github.com/grafana/redshift-datasource/pull/257 中将 go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace 从 0.37.0 更新到 0.44.0
  • 由 @fridgepoet 在 https://github.com/grafana/redshift-datasource/pull/265 中升级 grafana-plugin-sdk-go;将 underscore, debug 添加到包解析

完整更新日志:https://github.com/grafana/redshift-datasource/compare/v1.13.0...v1.13.1

1.13.0

  • 在功能开关下将查询和配置编辑器迁移到新的表单样式,位于 #255
  • 支持 Node 18,位于 #249
  • 修复预置文档中的数据源类型,位于 #246

1.12.2

  • 通过不在 GetQueryID 中调用 ListStatements 来修复异步查询,位于 #252

1.12.1

  • 升级 @grafana/aws-sdk 以修复临时凭据中的错误

1.12.0

  • 更新 grafana-aws-sdk 到 v0.19.1,将 il-central-1 添加到可选区域列表

1.11.1

  • 升级 @grafana/async-query-data 以减少最小查询时间,位于 https://github.com/grafana/redshift-datasource/pull/237

1.11.0

  • 升级 grafana/aws-sdk-react 依赖项 #239
  • 修复更改访问密钥和私有密钥时的连接错误 #235
  • 支持异步查询缓存 #233

1.10.0

  • 由 @yota-p 在 https://github.com/grafana/redshift-datasource/pull/228 中添加 Redshift Serverless 支持

1.9.0

  • 升级 @grafana/aws-sdk 到 v0.0.47,以支持将模板变量应用于 SQL 查询时的数值
  • 修复异步查询和表达式 https://github.com/grafana/redshift-datasource/pull/225

1.8.4

  • 更新 Readme.md 关于 Grafana 10 的内容 https://github.com/grafana/redshift-datasource/pull/224

1.8.3

  • 升级 grafana/aws-sdk-react 到 0.0.46 https://github.com/grafana/redshift-datasource/pull/223

1.8.2

  • 更新 grafana-aws-sdk 版本,在可选区域列表中包含新区域 https://github.com/grafana/grafana-aws-sdk/pull/80
  • 安全:将构建过程中的 Go 升级到 1.20.4
  • 更新 grafana-plugin-sdk-go 版本到 0.161.0,以避免潜在的 http header 问题。 https://github.com/grafana/athena-datasource/issues/233

1.8.1

  • 更新 async-query-data,包含错误修复,位于 #220

1.8.0

  • 更新后端依赖项

1.7.0

  • 由 @iwysiu 在 #213 中修复转换包含 FLOAT, FLOAT4 和 BOOLEAN 类型的行的问题
  • 由 @idastambuk 在 #214 中向查询编辑器添加头部组件
  • 由 @iwysiu 在 #210 中使用范围受限的组织 ISSUE_COMMANDS_TOKEN

1.6.0

  • 移除注解编辑器中的运行和取消按钮,位于 https://github.com/grafana/redshift-datasource/pull/206

1.5.0

  • 由 @iwysiu 在 https://github.com/grafana/redshift-datasource/pull/195 中迁移到 create-plugin
  • 由 @idastambuk 在 https://github.com/grafana/redshift-datasource/pull/198 中将工作流中的代码覆盖率更新到最新
  • 由 @kevinwcyu 在 https://github.com/grafana/redshift-datasource/pull/199 中更新 @grafana/aws-sdk
  • 由 @idastambuk 在 https://github.com/grafana/redshift-datasource/pull/201 中更新 @grafana/ 包
  • 由 @fridgepoet 在 https://github.com/grafana/redshift-datasource/pull/202 中升级 grafana-aws-sdk 到 v0.12.0

1.4.1

  • 当异步查询数据支持未启用时隐藏停止按钮 https://github.com/grafana/redshift-datasource/pull/196

1.4.0

  • 添加异步查询数据支持 https://github.com/grafana/redshift-datasource/pull/177

1.3.3

  • 更新 @grafana 依赖项到 v8.5.10 https://github.com/grafana/redshift-datasource/pull/194

1.3.2

  • 安全:将构建过程中的 Go 升级到 1.19.3

1.3.1

  • 安全:将构建过程中的 Go 升级到 1.19.2

1.3.0

  • 由 @fridgepoet 在 https://github.com/grafana/redshift-datasource/pull/183 中升级到 grafana-aws-sdk v0.11.0

1.2.0

  • 由 @yota-p 在 https://github.com/grafana/redshift-datasource/pull/175 中添加数据库安全监控仪表盘

1.1.0

  • 由 @sunker 在 https://github.com/grafana/redshift-datasource/pull/174 中添加上下文感知自动完成支持

1.0.7

  • 使用密钥时的身份验证问题错误修复和依赖项升级 (https://github.com/grafana/redshift-datasource/pull/165)
  • 代码覆盖率更新

1.0.6

更新内容

  • 由 @andresmgot 在 https://github.com/grafana/redshift-datasource/pull/146 中更新 grafana-aws-sdk
  • 由 @sunker 在 https://github.com/grafana/redshift-datasource/pull/151 中自动完成:在功能开关启用时渲染 SQL 编辑器
  • 由 @vgkowski 在 https://github.com/grafana/redshift-datasource/pull/152 中修复:WLM 面板查询修复
  • 由 @sunker 在 https://github.com/grafana/redshift-datasource/pull/154 中自定义 Redshift 语言
  • 由 @sunker 在 https://github.com/grafana/redshift-datasource/pull/156 中将 Monaco 语言与官方语言参考对齐

完整更新日志:https://github.com/grafana/redshift-datasource/compare/v1.0.5...v1.0.6

1.0.5

  • 降低检索结果的回退时间因子。
  • 升级内部依赖项。

1.0.4

  • 在数据源卡片中添加详细信息 #130
  • 启用 WithEvent 将事件发送到 AWS EventBridge #132

1.0.3

修复 Endpoint 和 Assume Role 设置的错误。

1.0.2

修复阻止在查询中获取空值的错误。

1.0.1

修复阻止在同一实例中创建该插件的多个数据源的错误。

1.0.0

初版发布。

0.4.1

改进的精心策划的仪表盘。

0.4.0

允许使用 AWS Secret Manager 进行身份验证。更多错误修复。

0.3.0

第三次预览发布。包括精心策划的仪表盘。

0.2.0

第二版发布。

0.1.0

初版发布。