You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用AWS ADOT Collector跨账户收集并发送EKS容器日志?

跨账户使用AWS ADOT Collector推送CloudWatch日志的解决方案

针对ADOT Collector的awscloudwatchlog exporter无Assume Role ARN选项的问题,可通过以下几种方式实现跨账户日志收集:

方案1:基于IAM角色链的凭证自动获取

  1. 工作负载账户配置:
    • 创建IAM角色(如ADOTCrossAccountRole),信任策略允许ADOT对应的K8s服务账户(IRSA角色)扮演该角色。
    • 给该角色添加权限策略,允许执行sts:AssumeRole操作,目标为监控账户中用于CloudWatch日志推送的角色ARN。
  2. 监控账户配置:
    • 创建IAM角色(如CloudWatchLogPushRole),信任策略允许工作负载账户的ADOTCrossAccountRole扮演该角色。
    • 给该角色添加CloudWatchLogs:*相关权限,确保能创建日志组、推送日志事件等。
  3. ADOT Collector配置:
    • 无需在awscloudwatchlog exporter中额外配置角色,ADOT会通过AWS SDK默认凭证链自动获取跨账户临时凭证。确保ADOT Pod使用绑定了工作负载账户IRSA角色的K8s服务账户运行。

方案2:使用OTEL Collector的awsauth扩展

  1. 配置awsauth扩展:
    在ADOT Collector配置文件中添加扩展,指定要扮演的监控账户角色ARN:
    extensions:
      awsauth:
        role_arn: "arn:aws:iam::监控账户ID:role/CloudWatchLogPushRole"
        region: "监控账户所在区域"
    
  2. 关联扩展与exporter:
    在awscloudwatchlog exporter配置中引用该扩展:
    exporters:
      awscloudwatchlogs:
        log_group_name: "/eks/workloads/app-logs"
        log_stream_name: "{pod-name}"
        region: "监控账户所在区域"
        auth:
          authenticator: awsauth
    
  3. 启用扩展:
    在service部分的extensions列表中加入awsauth确保生效:
    service:
      extensions: [awsauth]
      pipelines:
        logs:
          receivers: [otlp]
          processors: [batch]
          exporters: [awscloudwatchlogs]
    
    需确保ADOT运行所用的IRSA角色有权限执行sts:AssumeRole操作目标角色。

方案3:通过环境变量指定跨账户角色

在ADOT Collector的Pod部署配置中添加AWS SDK相关环境变量,强制使用跨账户角色:

  • 环境变量AWS_ROLE_ARN:值为监控账户的CloudWatch日志推送角色ARN。
  • 环境变量AWS_WEB_IDENTITY_TOKEN_FILE:值为IRSA令牌路径(通常为/var/run/secrets/eks.amazonaws.com/serviceaccount/token)。
  • 确保工作负载账户的IRSA角色有权限Assume监控账户的目标角色,且监控账户角色信任该IRSA角色。
    这种方式依赖AWS SDK自动角色切换逻辑,ADOT的awscloudwatchlog exporter会自动使用跨账户凭证。

内容的提问来源于stack exchange,提问作者Jatin Mehrotra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:33:11