使用IAM角色执行Prometheus的EC2发现

在AmazonLinux2上执行
Prometheus版本
2.12.0

我想停止使用像以下这样的AWS API密钥来编写的方法。

- job_name: 'ec2'
   ec2_sd_configs:
      - region: ap-northeast-1
        access_key: XXXXXXXXXXXXXXXXXXXXXXX
        secret_key: XXXXXXXXXXXXXXXXXXXXXXX
        port: ****

创建一个分配了AWS管理策略AmazonEC2ReadOnlyAccess的IAM角色,然后将其写入prometheus.yml中,并尝试使用IAM角色实现它。

  - job_name: 'ec2'
    ec2_sd_configs:
      - region: ap-northeast-1
        role_arn: 'arn:aws:iam::**********:role/*********'
        port: ****

输出以下类似错误,无法获取EC2信息。

level=error ts=2019-09-25T09:40:50.917Z caller=refresh.go:95 component="discovery manager scrape" discovery=ec2 msg="Unable to refresh target groups" err="could not describe instances: AccessDenied: Access denied\n\tstatus code: 403, request id: 8f82e364-df78-11e9-829e-0d4c861ec02a"

以下是在https://github.com/prometheus/prometheus/issues/4686上的讨论。

只要IAM角色已经分配给EC2,就可以通过以下设置来实现。

  - job_name: 'ec2'
    ec2_sd_configs:
      -  port: ****
广告
将在 10 秒后关闭
bannerAds