使用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: ****