AWS 模块

编辑

此模块使用 GetMetricData API 定期从 AWS CloudWatch 获取 AWS 服务的监控指标。

默认情况下,所有指标均已启用。

此模块会产生额外的 CloudWatch API 请求 AWS 费用。有关更多详细信息,请参阅 AWS API 请求

模块特定配置说明

编辑
  • AWS 凭证

为了进行 AWS API 调用,aws 模块需要 AWS 凭证配置。用户可以使用 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 和/或 AWS_SESSION_TOKEN,也可以使用共享的 AWS 凭证文件。有关更多详细信息,请参阅 AWS 凭证选项

如果您使用 AWS CloudWatch 跨账户可观测性,则此处应使用监控账户的凭证,Metricbeat 将从监控账户和链接的源账户收集所有指标。

  • regions

此模块还接受可选配置 regions,以指定要从中查询指标的 AWS 区域。如果配置文件中未设置 regions 参数,则默认情况下,aws 模块将从所有可用的 AWS 区域查询指标。如果指定了 endpoint,则 regions 将成为必需的配置参数。

  • latency

某些 AWS 服务会将监控指标发送到 CloudWatch,处理延迟时间大于 Metricbeat 收集周期。这将导致数据点缺失或 Metricbeat 未收集任何数据点。在这种情况下,请指定一个 latency 参数,以便收集开始时间和结束时间将按给定的延迟量进行偏移。

  • data_granularity

AWS CloudWatch 允许通过在查询指标时设置“周期”来定义返回数据点的粒度。有关更多信息,请参阅 MetricDataQuery 参数

默认情况下,metricbeat 将查询 CloudWatch,并将“周期”设置为 Metricbeat 收集周期。如果您希望为“周期”设置自定义值,请指定一个 data_granularity 参数。通过将 perioddata_granularity 一起设置,您可以分别控制希望收集指标的频率以及指标必须具有的粒度。

如果您担心由于 Metricbeat 发出的 CloudWatch API 调用而导致成本增加,并且以延迟检索指标作为权衡,则可以考虑设置 data_granularity 并增加 Metricbeat 收集周期。例如,将 data_granularity 设置为当前 period 的值,并将 period 的值加倍,可能会在 GetMetricData API 调用成本方面节省 50%。

  • endpoint

大多数 AWS 服务都提供可用于发出请求的区域端点。区域端点的一般语法为 protocol://service-code.region-code.endpoint-code。某些服务(如 IAM)不支持区域。这些服务的端点不包括区域。在 aws 模块中,endpoint 配置用于设置 endpoint-code 部分,例如 amazonaws.comamazonaws.com.cnc2s.ic.govsc2s.sgov.gov

如果指定了端点,则需要 regions 配置。

  • include_linked_accounts

include_linked_accounts 参数用于启用包含来自链接到主监控账户的不同账户的指标。通过将此参数设置为 true,用户可以从通过 CloudWatch 跨账户可观测性链接的多个 AWS 账户收集指标。默认情况下,include_linked_accounts 参数设置为 true,这意味着会收集来自主监控账户和所有链接账户的指标。设置为 false 时,该参数允许 CloudWatch 服务仅检索来自监控账户的指标。

如果您需要从特定的链接账户收集指标,请使用 owning_account 配置。

注意用户应确保正确设置必要的 IAM 角色和策略,以便将监控账户和源账户链接在一起。有关更多详细信息,请参阅 将监控账户与源账户链接

  • owning_account

此配置与 include_linked_accounts 配置一起工作,并允许从特定的链接账户收集指标。该配置接受有效的账户 ID,并在内部映射到 ListMetrics APIOwningAccount 参数。

请注意,应启用 include_linked_accounts(这是默认值)才能使用此参数。

include_linked_accounts: true
owning_account: 111111111111
  • tags_filter

要筛选的标签。如果在配置中给定了标签,则仅从具有标签键和标签值与筛选器匹配的资源收集指标。例如,如果在 AWS/ELB 命名空间下将 tags 参数指定为 Organization=Engineering,则仅从标签名称等于 Organization 且标签值等于 Engineering 的 ELB 收集指标。为了筛选同一键的不同值,请将这些值添加到值数组(请参阅示例)

注意:标签筛选仅适用于在特定于 metricset 的配置中指定了 resource_type 的 metricset。

- module: aws
  period: 5m
  endpoint: amazonaws.com.cn
  regions: cn-north-1
  metricsets:
    - ec2
  tags_filter:
    - key: "Organization"
      value: ["Engineering", "Product"]
  • fips_enabled

强制使用 FIPS 服务端点。有关更多信息,请参阅 AWS 凭证选项

- module: aws
  period: 5m
  fips_enabled: true
  regions:
    - us-east-1
    - us-east-2
    - us-west-1
    - us-west-2
  metricsets:
    - ec2
  • apigateway_max_results

此配置与 AWS/APIGateway 命名空间一起工作。它定义了每页返回的最大结果数。默认值为 25,最大值为 500。请参阅 GetRestApisInput.Limit

- module: aws
      period: 10s
      regions:
        - us-east-1
      metricsets:
        - cloudwatch
      metrics:
        - namespace: "AWS/ApiGateway"
          resource_type: "apigateway:restapis"
          apigateway_max_results: 40

aws 模块附带预定义的仪表板。例如

metricbeat aws overview

Metricsets

编辑

目前,在 aws 模块中,我们有 billingcloudwatchdynamodbebsec2elbkinesis lambdamtestnatgatewayrdss3_daily_storages3_requestsnssqstransitgatewayusagevpn metricset。

billing

编辑

账单指标数据包括 AWS 账户中每个服务的估计费用以及 AWS 账户的估计总费用。估计费用每天计算并多次发送到 CloudWatch。因此,aws 模块配置中的 period 设置为 12h

账单 metricset 附带预定义的仪表板

metricbeat aws billing overview

cloudwatch

编辑

此 metricset 允许用户使用任何给定的命名空间或具有给定周期的特定实例从 AWS CloudWatch 查询指标。有关将指标发布到 CloudWatch 的 AWS 服务列表,请参阅 发布 CloudWatch 指标的 AWS 服务

dynamodb

编辑

DynamoDB 会定期将指标发送到 CloudWatch,以便更好地监控 Web 应用程序或服务的性能。

dynamodb metricset 附带预定义的仪表板

metricbeat aws dynamodb overview

对于 AWS EBS 卷中的基本监控,数据在 5 分钟周期内自动提供,且无需付费。这包括 EBS 支持的实例的根设备卷的数据。用户还可以为预配置的 IOPS SSD (io1) 卷启用详细监控,以自动将一分钟指标发送到 CloudWatch。aws 模块配置中的默认周期为 ebs metricset 设置为 5m

ebs metricset 附带预定义的仪表板

metricbeat aws ebs overview

默认情况下,Amazon EC2 每 5 分钟向 CloudWatch 发送指标数据。使用这种基本监控,aws 模块配置中的 period 应该大于或等于 300s。如果 period 设置为小于 300s,则会多次收集相同的 CloudWatch 指标,这会导致额外的费用,而不会获得更精细的指标。例如,在 美国东部(弗吉尼亚北部) 区域,使用 GetMetricData 请求 1000 个指标的成本为 0.01 美元。有关更多详细信息,请参阅 AWS CloudWatch 定价。为了避免不必要的费用,period 最好设置为 300s300s 的倍数,例如 600s900s。对于更精细的监控数据,您可以启用实例上的详细监控,以每 1 分钟获取指标。有关如何启用详细监控的说明,请参阅 启用详细监控。启用详细监控后,aws 模块配置中的 period 可以是大于 60s 的任何数字。由于 AWS 以 1 分钟为周期向 CloudWatch 发送指标数据,因此将 Metricbeat 模块 period 设置为小于 60s 将导致额外的 API 请求,这意味着 AWS 上会产生额外费用。为了避免不必要的费用,period 最好设置为 60s60s 的倍数,例如 120s180s

ec2 指标集附带一个预定义的仪表板

metricbeat aws ec2 overview

elb 指标集从经典负载均衡器、应用程序负载均衡器和网络负载均衡器收集 CloudWatch 指标。

只有在请求流经负载均衡器时,这三种弹性负载均衡才会向 CloudWatch 报告指标。如果有请求流经负载均衡器,弹性负载均衡将以 60 秒的间隔测量并发送其指标。如果没有请求流经负载均衡器或某个指标没有数据,则不会报告该指标。因此,aws 模块配置中的 period 设置为 1m

elb 指标集附带一个预定义的仪表板

metricbeat aws elb overview

lambda

编辑

当调用完成时,Lambda 会为该调用向 CloudWatch 发送一组指标。lambda 指标集的 aws 模块配置中的默认周期设置为 5m。lambda 指标集附带一个预定义的仪表板

metricbeat aws lambda overview

natgateway

编辑

CloudWatch 从 NAT 网关收集信息并创建可读的、近乎实时的指标。此指标集使用户能够从 CloudWatch 收集这些指标,以监控和排查 NAT 网关的故障。NAT 网关指标数据以 1 分钟的间隔提供,因此,建议 natgateway 指标集的 period1m1m 的倍数。

建议 rds 指标集的 period60s60s 的倍数,因为 Amazon RDS 每分钟向 Amazon CloudWatch 发送指标和维度。

rds 指标集附带一个预定义的仪表板

metricbeat aws rds overview

s3_daily_storage

编辑

S3 存储桶的每日存储指标每天报告一次,无需额外费用。由于它们是每日指标,因此建议 s3_daily_storage 指标集的 period86400s86400s 的倍数。

s3_request

编辑

请求指标以 1 分钟的间隔提供,但会产生额外费用。s3_request 指标集将提供更精细的数据来跟踪 S3 存储桶的使用情况。可以将 s3_request 指标集的 period 设置为 60s60s 的倍数。但是,由于查询这些指标会产生额外费用,因此建议将 period 设置为 86400s。用户始终可以将其调整为他们想要的粒度。默认情况下,S3 存储桶未启用请求指标。有关如何为每个 S3 存储桶启用请求指标的说明,请参阅 如何为 S3 配置请求指标

s3_daily_storage 和 s3_request 指标集附带一个预定义的组合仪表板

metricbeat aws s3 overview

Amazon SQS 队列的 CloudWatch 指标会自动收集并每 5 分钟推送到 CloudWatch,建议 sqs 指标集的 period300s300s 的倍数。

sqs 指标集附带一个预定义的仪表板

metricbeat aws sqs overview

transitgateway

编辑

只有在请求流经传输网关时,Amazon VPC 才会向 CloudWatch 报告指标。如果有请求流经传输网关,Amazon VPC 将以 60 秒的间隔测量并发送其指标。建议 transitgateway 指标集的 period1m1m 的倍数。

usage

编辑

CloudWatch 收集跟踪某些 AWS 资源使用情况的指标。这些指标与 AWS 服务配额相对应。跟踪这些指标有助于主动管理配额。服务配额使用情况指标位于 AWS/Usage 命名空间中,并且每分钟收集一次。因此,使用情况指标集的 aws 模块配置中的 period 设置为 1m

usage 指标集附带一个预定义的仪表板

metricbeat aws usage overview

CloudWatch 从 VPN 服务收集和处理原始数据,并将其转换为可读的、近乎实时的指标,使用户能够更好地了解其 Web 应用程序和服务的性能。

AWS API 请求计数

编辑

本节旨在记录 aws 模块中每个指标集调用的 AWS API。这将有助于用户估算使用 aws 模块的成本。

注意:某些 AWS API 需要分页,例如 ListMetrics 和 GetMetricData。计数取决于结果的数量。

ListMetrics 最大页面大小:500,基于 AWS API ListMetrics

GetMetricData 最大页面大小:100,基于 AWS API GetMetricData

AWS API 名称

AWS API 计数

频率

IAM ListAccountAliases

1

启动时一次

STS GetCallerIdentity

1

启动时一次

EC2 DescribeRegions

1

启动时一次

未在配置中指定命名空间的 CloudWatch ListMetrics

结果总数 / ListMetrics 最大页面大小

每个区域每个收集周期

在配置中指定了特定命名空间的 CloudWatch ListMetrics

结果总数 / ListMetrics 最大页面大小 * 唯一命名空间的数量

每个区域每个收集周期

CloudWatch GetMetricData

结果总数 / GetMetricData 最大页面大小

每个区域每个命名空间每个收集周期

billingebselbsnsusagelambdacloudwatch 指标集相同。

AWS 凭证配置

编辑

要配置 AWS 凭证,请将凭证放入 Metricbeat 配置中,或使用共享凭证文件,如下面的示例所示。

配置参数

编辑
  • access_key_id:访问密钥的第一部分。
  • secret_access_key:访问密钥的第二部分。
  • session_token:使用临时安全凭证时需要。
  • credential_profile_name:共享凭证文件中的配置文件名称。
  • shared_credential_file:共享凭证文件的目录。
  • role_arn:要担任的 AWS IAM 角色。
  • external_id:在另一个账户中担任角色时要使用的外部 ID,请参阅 AWS 文档,了解如何使用外部 ID
  • proxy_url:用于连接到 AWS Web 服务的代理的 URL。语法为 http(s)://<IP/Hostname>:<port>
  • fips_enabled:启用此选项会指示 Metricbeat 使用服务的 FIPS 端点。Metricbeat 使用的所有服务都与 FIPS 兼容,但 tagging 除外,但只有某些区域与 FIPS 兼容。请参阅 https://aws.amazon.com/compliance/fips/ 或相应的服务页面,https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html,以获取 FIPS 端点和区域的完整列表。
  • ssl:这指定了 SSL/TLS 配置。如果缺少 ssl 部分,则主机的 CA 将用于 HTTPS 连接。有关更多信息,请参阅 SSL
  • default_region:如果未设置其他区域,则查询的默认区域。大多数 AWS 服务都提供可用于发出请求的区域端点。某些服务(例如 IAM)不支持区域。如果未以任何其他方式(环境变量、凭证或实例配置文件)提供区域,则将使用此处设置的值。
  • assume_role.duration:请求的担任角色会话的持续时间。如果未设置,则默认为 15 分钟。AWS 允许的最大会话持续时间在 1 小时到 12 小时之间,具体取决于您的最大会话持续时间策略。
  • assume_role.expiry_window:expiry_window 允许在会话过期之前刷新会话。这有利于防止过期的令牌导致请求失败,并出现 ExpiredTokenException。

支持的格式

编辑

本节中的示例是指 Metricbeat,但使用 AWS 进行身份验证的凭证选项是相同的,无论使用哪个 Beat。

  • 使用 access_key_idsecret_access_key 和/或 session_token

用户可以将凭证放入 Metricbeat 模块配置中,也可以改为使用环境变量 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 和/或 AWS_SESSION_TOKEN

如果在 Docker 上运行,则应将这些环境变量添加为 docker 命令的一部分。例如,使用 Metricbeat

$ docker run -e AWS_ACCESS_KEY_ID=abcd -e AWS_SECRET_ACCESS_KEY=abcd -d --name=metricbeat --user=root --volume="$(pwd)/metricbeat.aws.yml:/usr/share/metricbeat/metricbeat.yml:ro" docker.elastic.co/beats/metricbeat:7.11.1 metricbeat -e -E cloud.auth=elastic:1234 -E cloud.id=test-aws:1234

示例 metricbeat.aws.yml 如下所示

metricbeat.modules:
- module: aws
  period: 5m
  access_key_id: ${AWS_ACCESS_KEY_ID}
  secret_access_key: ${AWS_SECRET_ACCESS_KEY}
  session_token: ${AWS_SESSION_TOKEN}
  metricsets:
    - ec2

也可以通过文件添加环境变量。例如

$ cat env.list
AWS_ACCESS_KEY_ID=abcd
AWS_SECRET_ACCESS_KEY=abcd

$ docker run --env-file env.list -d --name=metricbeat --user=root --volume="$(pwd)/metricbeat.aws.yml:/usr/share/metricbeat/metricbeat.yml:ro" docker.elastic.co/beats/metricbeat:7.11.1 metricbeat -e -E cloud.auth=elastic:1234 -E cloud.id=test-aws:1234
  • 使用 credential_profile_name 和/或 shared_credential_file

如果未提供 access_key_idsecret_access_keyrole_arn,则 Metricbeat 将检查 credential_profile_name。如果为不同的工具或应用程序使用不同的凭证,则可以使用配置文件在同一配置文件中配置多个访问密钥。如果未提供 credential_profile_name,则将使用默认配置文件。

shared_credential_file 是可选的,用于指定共享凭证文件的目录。如果为空,则将使用默认目录。在 Windows 中,共享凭证文件位于 C:\Users\<您的用户名>\.aws\credentials。对于 Linux、macOS 或 Unix,该文件位于 ~/.aws/credentials。作为服务运行时,主路径取决于管理该服务的用户,因此可以使用 shared_credential_file 参数来避免歧义。有关更多详细信息,请参阅 创建共享凭证文件

  • 使用 role_arn

role_arn 用于指定要承担哪个 AWS IAM 角色以生成临时凭证。如果提供了 role_arn,则 Metricbeat 将检查是否提供了访问密钥。如果没有,Metricbeat 将检查凭证配置文件名称。如果两者都没有提供,则将使用默认凭证配置文件。请确保在凭证配置文件或访问密钥下提供凭证。

如果在 Docker 上运行,则需要通过卷挂载提供凭证文件。例如,使用 Metricbeat

docker run -d --name=metricbeat --user=root --volume="$(pwd)/metricbeat.aws.yml:/usr/share/metricbeat/metricbeat.yml:ro" --volume="/Users/foo/.aws/credentials:/usr/share/metricbeat/credentials:ro" docker.elastic.co/beats/metricbeat:7.11.1 metricbeat -e -E cloud.auth=elastic:1234 -E cloud.id=test-aws:1234

示例 metricbeat.aws.yml 如下所示

metricbeat.modules:
- module: aws
  period: 5m
  credential_profile_name: elastic-beats
  shared_credential_file: /usr/share/metricbeat/credentials
  metricsets:
    - ec2
  • 在 Metricbeat 配置中使用 AWS 凭证

    metricbeat.modules:
    - module: aws
      period: 300s
      metricsets:
        - ec2
      access_key_id: '<access_key_id>'
      secret_access_key: '<secret_access_key>'
      session_token: '<session_token>'

    metricbeat.modules:
    - module: aws
      period: 300s
      metricsets:
        - ec2
      access_key_id: '${AWS_ACCESS_KEY_ID:""}'
      secret_access_key: '${AWS_SECRET_ACCESS_KEY:""}'
      session_token: '${AWS_SESSION_TOKEN:""}'
  • 使用 IAM 角色 ARN

    metricbeat.modules:
    - module: aws
      period: 300s
      metricsets:
        - ec2
      role_arn: arn:aws:iam::123456789012:role/test-mb
  • 使用共享的 AWS 凭证文件

    metricbeat.modules:
    - module: aws
      period: 300s
      metricsets:
        - ec2
      credential_profile_name: test-mb
  • 将 IAM 角色 ARN 与共享的 AWS 凭证文件一起使用

    metricbeat.modules:
    - module: aws
      period: 5m
      role_arn: arn:aws:iam::123456789012:role/test-mb
      shared_credential_file: /Users/mb/.aws/credentials_backup
      credential_profile_name: test
      metricsets:
        - ec2

AWS 凭证类型

编辑

可以使用两种不同类型的 AWS 凭证:访问密钥和临时安全凭证。

  • 访问密钥

AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 是访问密钥的两个部分。它们是 IAM 用户或 AWS 账户根用户的长期凭证。有关更多详细信息,请参阅 AWS 访问密钥和秘密访问密钥

  • IAM 角色 ARN

IAM 角色是您可以在账户中创建的 IAM 身份,它具有特定的权限,这些权限确定该身份可以在 AWS 中执行的操作和不能执行的操作。角色没有与之关联的标准长期凭证,例如密码或访问密钥。相反,当您承担角色时,它会为您提供角色会话的临时安全凭证。IAM 角色 Amazon 资源名称 (ARN) 可用于指定要承担哪个 AWS IAM 角色以生成临时凭证。有关更多详细信息,请参阅 AssumeRole API 文档

以下是使用 AWS CLI 为 Metricbeat 设置 IAM 角色的步骤。请将 123456789012 替换为您自己的账户 ID。

步骤 1. 创建 example-policy.json 文件以包含所有权限

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "sqs:ReceiveMessage"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "sqs:ChangeMessageVisibility",
            "Resource": "arn:aws:sqs:us-east-1:123456789012:test-fb-ks"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "sqs:DeleteMessage",
            "Resource": "arn:aws:sqs:us-east-1:123456789012:test-fb-ks"
        },
        {
            "Sid": "VisualEditor3",
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole",
                "sqs:ListQueues",
                "tag:GetResources",
                "ec2:DescribeInstances",
                "cloudwatch:GetMetricData",
                "ec2:DescribeRegions",
                "iam:ListAccountAliases",
                "sts:GetCallerIdentity",
                "cloudwatch:ListMetrics"
            ],
            "Resource": "*"
        }
    ]
}

步骤 2. 使用 aws iam create-policy 命令创建 IAM 策略

$ aws iam create-policy --policy-name example-policy --policy-document file://example-policy.json

步骤 3. 创建 JSON 文件 example-role-trust-policy.json,该文件定义 IAM 角色的信任关系

{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Principal": { "AWS": "arn:aws:iam::123456789012:root" },
        "Action": "sts:AssumeRole"
    }
}

步骤 4. 创建 IAM 角色并附加策略

$ aws iam create-role --role-name example-role --assume-role-policy-document file://example-role-trust-policy.json
$ aws iam attach-role-policy --role-name example-role --policy-arn "arn:aws:iam::123456789012:policy/example-policy"

完成这些步骤后,IAM 角色 ARN 可用于 Metricbeat aws 模块中的身份验证。

  • 临时安全凭证

临时安全凭证具有有限的生命周期,由访问密钥 ID、秘密访问密钥和安全令牌组成,安全令牌通常从 GetSessionToken 返回。启用 MFA 的 IAM 用户在调用 GetSessionToken 时需要提交 MFA 代码。有关更多详细信息,请参阅 临时安全凭证sts get-session-token AWS CLI 可用于生成临时凭证。例如,使用启用 MFA 的情况

aws> sts get-session-token --serial-number arn:aws:iam::1234:mfa/[email protected] --token-code 456789 --duration-seconds 129600

由于临时安全凭证是短期的,因此在它们过期后,用户需要生成新的凭证并使用新的凭证修改 aws.yml 配置文件。除非为 Metricbeat 启用了 实时重新加载功能,否则用户需要在更新配置文件后手动重启 Metricbeat,以便继续收集 Cloudwatch 指标。如果在旧凭证过期之前未用新凭证更新配置文件,则会导致数据丢失。对于 Metricbeat,我们建议用户在配置文件中使用访问密钥,以使 aws 模块能够进行 AWS API 调用,而无需频繁生成新的临时凭证和更新配置。

IAM 策略是一个实体,它定义了对 AWS 环境中对象的权限。需要将特定的权限添加到 IAM 用户的策略中,以授权 Metricbeat 收集 AWS 监控指标。请参阅每个指标集下的文档以了解所需的权限。

在 EKS 上运行

编辑
  • WebIdentity 身份验证流程

请参阅文档以创建服务账户的 IAM 角色:https://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html

创建 IRSA 后,可以使用它来注释 metricbeat 服务账户

apiVersion: v1
kind: ServiceAccount
metadata:
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::<ACCOUNT_ID>:role/<IRSA_ID>
  name: metricbeat
  namespace: kube-system
  labels:
    k8s-app: metricbeat

为了启用 WebIdentity 身份验证流程,您需要向 IRSA 添加信任关系

    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::<ACCOUNT_ID>:oidc-provider/oidc.eks.<REGION>.amazonaws.com/id/<OIDC_PROVIDER_ID>"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringEquals": {
          "oidc.eks.REGION.amazonaws.com/id/<OIDC_PROVIDER_ID>:sub": "system:serviceaccount:kube-system:metricbeat",
          "oidc.eks.REGION.amazonaws.com/id/<OIDC_PROVIDER_ID>:aud": "sts.amazonaws.com"
        }
      }
    }

在这种情况下,无需向模块配置添加 role_arn

配置示例

AWS 模块支持 模块 中描述的标准配置选项。这是一个配置示例

metricbeat.modules:
- module: aws
  period: 300s
  credential_profile_name: test-mb
  metricsets:
    - ec2
  tags_filter:
    - key: "Organization"
      value: "Engineering"
- module: aws
  period: 300s
  credential_profile_name: test-mb
  metricsets:
    - sqs
  regions:
    - us-west-1
- module: aws
  period: 86400s
  metricsets:
    - s3_request
    - s3_daily_storage
  access_key_id: '${AWS_ACCESS_KEY_ID:""}'
  secret_access_key: '${AWS_SECRET_ACCESS_KEY:""}'
  session_token: '${AWS_SESSION_TOKEN:""}'
- module: aws
  period: 300s
  credential_profile_name: test-mb
  metricsets:
    - cloudwatch
  include_linked_accounts: true
  # owning_account: 111111111111
  metrics:
    - namespace: AWS/EC2
      name: ["CPUUtilization"]
      dimensions:
        - name: InstanceId
          value: i-0686946e22cf9494a
    - namespace: AWS/EBS
    - namespace: AWS/ELB
      resource_type: elasticloadbalancing
      tags:
        - key: "Organization"
          value: "Engineering"
- module: aws
  period: 60s
  credential_profile_name: test-mb
  tags_filter:
    - key: "dept"
      value: "eng"
  metricsets:
    - elb
    - natgateway
    - rds
    - transitgateway
    - usage
    - vpn
- module: aws
  period: 1m
  latency: 5m
  include_linked_accounts: false
  metricsets:
    - s3_request

指标集

以下指标集可用