cloudwatch_exporter
cloudwatch_exporter copied to clipboard
0.10.0 - setting `role_arn` also requires setting `region` or exporter fails, complaining on missing region.
updated description - setting region in the config file works.
0.9.0 works as expected. Error:
Exception in thread "main" java.lang.NullPointerException: region must not be null.
at software.amazon.awssdk.utils.Validate.paramNotBlank(Validate.java:156)
at software.amazon.awssdk.regions.Region.of(Region.java:134)
at software.amazon.awssdk.regions.Region.of(Region.java:130)
at io.prometheus.cloudwatch.CloudWatchCollector.getRoleCredentialProvider(CloudWatchCollector.java:284)
at io.prometheus.cloudwatch.CloudWatchCollector.loadConfig(CloudWatchCollector.java:168)
at io.prometheus.cloudwatch.CloudWatchCollector.loadConfig(CloudWatchCollector.java:136)
at io.prometheus.cloudwatch.CloudWatchCollector.<init>(CloudWatchCollector.java:101)
at io.prometheus.cloudwatch.WebServer.main(WebServer.java:27)
Config:
apiVersion: v1
data:
config.yml: |-
delay_seconds: 300
# period_seconds: 60
range_seconds: 120
role_arn: arn:aws:iam::<reducted>
metrics:
- aws_namespace: AWS/CloudHSM
aws_metric_name: HsmUnhealthy
aws_dimensions: [ClusterId, HsmId]
aws_dimension_select:
ClusterId: ['<reducted>']
aws_statistics: [Maximum, Average]
<reducted>
kind: ConfigMap
metadata:
labels:
app: cloudwatch-exporter-hsm
monitoring: prometheus
name: cloudwatch-exporter-hsm
namespace: kube-system
Expected: AWS region is picked up automatically as described in here,
This might be fallout from the AWS SDK v2 update.
As a workaround, it does it work to supply a configuration file and make the exporter use it via environment variables?
@matthiasr thank you for looking into this. I have double checked the finding and found an error, setting region in the config works as expected. I've update the title and description to match. While still a regression - it is much less severe IMHO.
Hi, the AWS region is picked up automatically if your application runs in AWS infrastructure
. If the app runs elsewhere, the was SDK tries to pick up the default region following its Default Region Provider Chain.
Cloudwatch is a regionalized service so the SDK has to know which region it interacts with, otherwise it would fail during initializtion.