菜单
文档breadcrumb arrow Grafana 文档breadcrumb arrow 数据源breadcrumb arrow Amazon CloudWatch
Grafana Cloud Enterprise 开源 RSS

Amazon CloudWatch 数据源

Grafana 内置支持 Amazon CloudWatch。本主题介绍特定于 CloudWatch 数据源的查询、模板、变量和其他配置。

有关如何向 Grafana 添加数据源的说明,请参阅管理文档。只有具有组织管理员角色的用户才能添加数据源。管理员还可以使用 Grafana 的供应系统供应数据源,并应相应地控制定价管理服务配额

添加数据源后,您可以对其进行配置,以便 Grafana 实例的用户在构建仪表盘和使用探索时,可以在其查询编辑器中创建查询。

注意

在设置 CloudWatch 数据源时遇到问题,请查看 /var/log/grafana/grafana.log 文件。

配置数据源

  1. 单击左侧菜单中的连接

  2. 在“您的连接”下,单击数据源

  3. 在搜索栏中输入 CloudWatch

  4. 单击CloudWatch

    显示数据源的设置选项卡。

配置 AWS 身份验证

Grafana 插件向 AWS 发出的请求代表 AWS Identity and Access Management (IAM) 角色或 IAM 用户进行。IAM 用户或 IAM 角色必须具有执行某些 API 操作的关联策略。

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

IAM 策略示例

要读取 CloudWatch 指标和 EC2 标签、实例、区域和告警,您必须通过 IAM 向 Grafana 授予权限。您可以将这些权限附加到您在AWS 身份验证中配置的 IAM 角色或 IAM 用户。

仅指标权限
json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowReadingMetricsFromCloudWatch",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:DescribeAlarmsForMetric",
        "cloudwatch:DescribeAlarmHistory",
        "cloudwatch:DescribeAlarms",
        "cloudwatch:ListMetrics",
        "cloudwatch:GetMetricData",
        "cloudwatch:GetInsightRuleReport"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadingTagsInstancesRegionsFromEC2",
      "Effect": "Allow",
      "Action": ["ec2:DescribeTags", "ec2:DescribeInstances", "ec2:DescribeRegions"],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadingResourcesForTags",
      "Effect": "Allow",
      "Action": "tag:GetResources",
      "Resource": "*"
    },
    {
      "Sid": "AllowReadingResourceMetricsFromPerformanceInsights",
      "Effect": "Allow",
      "Action": "pi:GetResourceMetrics",
      "Resource": "*"
    }
  ]
}
仅日志权限
json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowReadingLogsFromCloudWatch",
      "Effect": "Allow",
      "Action": [
        "logs:DescribeLogGroups",
        "logs:GetLogGroupFields",
        "logs:StartQuery",
        "logs:StopQuery",
        "logs:GetQueryResults",
        "logs:GetLogEvents"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadingTagsInstancesRegionsFromEC2",
      "Effect": "Allow",
      "Action": ["ec2:DescribeTags", "ec2:DescribeInstances", "ec2:DescribeRegions"],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadingResourcesForTags",
      "Effect": "Allow",
      "Action": "tag:GetResources",
      "Resource": "*"
    }
  ]
}
指标和日志权限
json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowReadingMetricsFromCloudWatch",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:DescribeAlarmsForMetric",
        "cloudwatch:DescribeAlarmHistory",
        "cloudwatch:DescribeAlarms",
        "cloudwatch:ListMetrics",
        "cloudwatch:GetMetricData",
        "cloudwatch:GetInsightRuleReport"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadingResourceMetricsFromPerformanceInsights",
      "Effect": "Allow",
      "Action": "pi:GetResourceMetrics",
      "Resource": "*"
    },
    {
      "Sid": "AllowReadingLogsFromCloudWatch",
      "Effect": "Allow",
      "Action": [
        "logs:DescribeLogGroups",
        "logs:GetLogGroupFields",
        "logs:StartQuery",
        "logs:StopQuery",
        "logs:GetQueryResults",
        "logs:GetLogEvents"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadingTagsInstancesRegionsFromEC2",
      "Effect": "Allow",
      "Action": ["ec2:DescribeTags", "ec2:DescribeInstances", "ec2:DescribeRegions"],
      "Resource": "*"
    },
    {
      "Sid": "AllowReadingResourcesForTags",
      "Effect": "Allow",
      "Action": "tag:GetResources",
      "Resource": "*"
    }
  ]
}
跨账户可观测性权限
json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": ["oam:ListSinks", "oam:ListAttachedLinks"],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}

注意

跨账户可观测性允许您在单个区域内检索不同账户的指标和日志,但您无法跨账户查询 EC2 实例属性,因为这些属性来自 EC2 API 而非 CloudWatch API。

配置 CloudWatch 设置

自定义指标的命名空间

Grafana 无法通过 CloudWatch GetMetricData API 加载自定义命名空间。

要使自定义指标出现在数据源的查询编辑器字段中,请在数据源配置的“自定义指标的命名空间”字段中指定包含自定义指标的命名空间的名称。该字段接受多个以逗号分隔的命名空间。

超时

专门为 CloudWatch Logs 查询配置超时。

日志查询不会保持单个请求打开,而是定期轮询结果。因此,它们无法识别标准的 Grafana 查询超时。由于 CloudWatch 中并发运行查询的限制,它们完成也可能需要更长时间。

当日志包含 @xrayTraceId 字段时,要自动在日志中添加链接,请在数据源配置的“X-Ray 追踪链接”部分链接一个 X-Ray 数据源。

Trace link configuration
追踪链接配置

数据源选择仅包含类型为 X-Ray 的现有数据源实例。要使用此功能,您必须已经配置了一个 X-Ray 数据源。有关详细信息,请参阅 X-Ray 数据源文档

要查看 X-Ray 链接,请在探索视图或仪表盘日志面板中选择日志行以查看日志详情部分。

要记录 @xrayTraceId,请参阅 AWS X-Ray 文档

要向 Grafana 提供该字段,您的日志查询也必须包含 @xrayTraceId 字段,例如使用查询 fields @message, @xrayTraceId

Trace link in log details
日志详情中的追踪链接

使用 grafana.ini 配置数据源

Grafana 配置文件包含一个 AWS 部分,您可以在其中配置数据源选项

配置选项描述
allowed_auth_providers指定 CloudWatch 数据源允许使用的身份验证提供者。以下提供者在开源 Grafana 中默认启用:default (AWS SDK default),keys (Access and secret key),credentials (Credentials file),ec2_IAM_role (EC2 IAM role)。
assume_role_enabled允许您在 CloudWatch 数据源中禁用 asumir 角色 (ARN)。在开源 Grafana 中, asumir 角色 (ARN) 默认启用。
list_metrics_page_limit设置 List Metrics API 页面的限制。在查询编辑器中指定自定义命名空间时,List Metrics API 会填充指标字段和维度字段。API 是分页的,每页最多返回 500 条结果,并且数据源默认也限制页面数为 500。此设置可自定义该限制。

供应数据源

您可以将数据源定义和配置在 YAML 文件中,作为 Grafana 供应系统的一部分。有关供应的更多信息以及可用的配置选项,请参阅供应 Grafana

供应示例

使用 AWS SDK(默认)
yaml
apiVersion: 1
datasources:
  - name: CloudWatch
    type: cloudwatch
    jsonData:
      authType: default
      defaultRegion: eu-west-2
使用凭据配置文件名(非默认)
yaml
apiVersion: 1

datasources:
  - name: CloudWatch
    type: cloudwatch
    jsonData:
      authType: credentials
      defaultRegion: eu-west-2
      customMetricsNamespaces: 'CWAgent,CustomNameSpace'
      profile: secondary
使用 accessKey 和 secretKey
yaml
apiVersion: 1

datasources:
  - name: CloudWatch
    type: cloudwatch
    jsonData:
      authType: keys
      defaultRegion: eu-west-2
    secureJsonData:
      accessKey: '<your access key>'
      secretKey: '<your secret key>'
使用 AWS SDK 默认和要假定的 IAM 角色 ARN
yaml
apiVersion: 1
datasources:
  - name: CloudWatch
    type: cloudwatch
    jsonData:
      authType: default
      assumeRoleArn: arn:aws:iam::123456789012:root
      defaultRegion: eu-west-2

查询数据源

CloudWatch 数据源可以从 CloudWatch 指标和 CloudWatch Logs API 查询数据,每个都有其专用的查询编辑器。

有关详情,请参阅查询编辑器文档

查询缓存

启用查询和资源缓存时,Grafana 会临时存储数据源查询和资源请求的结果。查询缓存可在 Grafana Cloud 和 Grafana Enterprise 的 CloudWatch 指标中使用。由于从 AWS 轮询查询结果的方式,在 CloudWatch Logs Insights 中不可用。

使用模板变量

您可以使用变量,而不是在指标查询中硬编码服务器、应用程序和传感器名称等详细信息。Grafana 在仪表盘顶部的下拉选择框中列出这些变量,以帮助您更改仪表盘中显示的数据。Grafana 将此类变量称为模板变量。

有关详情,请参阅模板变量文档

导入预配置的仪表盘

CloudWatch 数据源附带了为五个最受欢迎的 AWS 服务精心策划和预配置的仪表盘

  • Amazon Elastic Compute Cloud: Amazon EC2
  • Amazon Elastic Block Store: Amazon EBS
  • AWS Lambda: AWS Lambda
  • Amazon CloudWatch Logs: Amazon CloudWatch Logs
  • Amazon Relational Database Service: Amazon RDS

导入精选仪表盘

  1. 导航到数据源的配置页面

  2. 选择仪表盘选项卡。

    这将显示精选的可导入仪表盘。

  3. 选择要导入的仪表盘进行导入

CloudWatch dashboard import
CloudWatch 仪表盘导入

自定义导入的仪表盘

要自定义其中一个仪表盘,建议您将其另存为其他名称。如果您不这样做,升级 Grafana 可能会用新版本覆盖自定义的仪表盘。

创建用于告警的查询

告警需要返回数字数据的查询,CloudWatch Logs 支持这一点。例如,您可以通过使用 stats 命令启用告警。

这也是一个有效的查询,用于对包含文本“Exception”的消息进行告警

filter @message like /Exception/
    | stats count(*) as exceptionCount by bin(1h)
    | sort exceptionCount desc

注意

如果您在尝试对查询进行告警时收到类似 input data must be a wide series but got ... 的错误,请确保您的查询返回有效的数字数据,该数据可以输出到时序面板。

有关 Grafana 告警的更多信息,请参阅告警

控制定价

Grafana 的 Amazon CloudWatch 数据源使用ListMetricsGetMetricData CloudWatch API 调用来列出和检索指标。CloudWatch Logs 的定价基于通过 CloudWatch Logs Insights 查询摄取、归档和分析的数据量。每次在查询编辑器中选择一个维度时,Grafana 都会发出一个 ListMetrics API 请求。每次在查询编辑器中更改查询时,Grafana 都会向 GetMetricData API 发出新的请求。

注意

Grafana 将所有 GetMetricStatistics API 请求替换为 GetMetricData 调用,以更好地支持 CloudWatch 指标数学,并在使用通配符或禁用“匹配精确”选项时自动生成搜索表达式。GetMetricStatistics API 符合 CloudWatch API 免费层级,但 GetMetricData 调用不符合。

有关详细信息,请参阅 CloudWatch 定价页面

管理服务配额

AWS 为您的 AWS 账户中的资源、操作和项目定义了配额或限制。根据仪表盘中的查询数量以及访问仪表盘的用户数量,您可能会达到各种 CloudWatch 和 CloudWatch Logs 资源的用量限制。配额按账户和区域定义。

如果您使用多个区域或配置了多个 CloudWatch 数据源来查询多个账户,则必须为您达到限制的每个账户和区域请求增加配额。

要请求增加配额,请访问 AWS Service Quotas 控制台。有关详细信息,请参阅 AWS 文档中的服务配额CloudWatch 限制

跨账户可观测性

CloudWatch 插件使您能够跨多个区域账户监控和排除应用故障。使用跨账户可观测性,您可以无缝搜索、可视化和分析指标和日志,无需担心账户边界问题。

要使用此功能,请在 AWS 控制台的 CloudWatch 设置下配置监控账户和源账户,然后按照上述说明添加必要的 IAM 权限。

CloudWatch Logs 数据保护

CloudWatch Logs 可以使用日志组数据保护策略来保护数据。如果您的日志组启用了数据保护,则任何与您选择的数据标识符匹配的敏感数据都将被屏蔽。要查看被屏蔽的数据,您需要启用 logs:Unmask IAM 权限。有关更多信息,请参阅 AWS 文档关于如何使用掩码帮助保护敏感日志数据的内容。