AWS CloudWatch (OpenTelemetry)
| Version | 0.6.0
|
| Subscription level What's this? |
Basic |
| Developed by What's this? |
Elastic |
| Minimum Kibana version(s) | 9.5.0 |
To use pre-release integrations, go to the Integrations page in Kibana, scroll down, and toggle on the Display beta integrations option.
The AWS CloudWatch OpenTelemetry Input collects Amazon CloudWatch metrics for selected AWS services using the AWS CloudWatch receiver from the OpenTelemetry Collector.
Instead of listing individual metrics, the integration automatically discovers the metrics published in each service's CloudWatch namespace, so newly available metrics are picked up without any configuration changes. This makes it a low-maintenance way to bring AWS infrastructure metrics into Elastic for dashboards, alerting, and analysis.
This integration configures the AWS CloudWatch receiver in the EDOT (Elastic Distribution of OpenTelemetry) Collector, which:
- Authenticates to AWS using the credentials you provide.
- Discovers the metrics available in the selected service's CloudWatch namespace.
- Polls CloudWatch on a regular interval and retrieves the configured statistics (such as Average, Sum, and Maximum) for each metric.
- Forwards the metrics to Elastic Agent, which ships them to Elasticsearch for indexing and visualization.
You add the integration once for each AWS service you want to monitor.
This integration can be deployed in two ways:
- Elastic Managed (default): Elastic manages the collector for you, with no infrastructure to run. This is the recommended option for most users.
- Elastic Agent: Run the collector on your own Elastic Agent.
Each AWS service is available as a separate option when you add the integration.
| Service | CloudWatch namespace |
|---|---|
| AWS EC2 | AWS/EC2 |
| AWS Lambda | AWS/Lambda |
| AWS RDS | AWS/RDS |
| AWS SQS | AWS/SQS |
| AWS Application ELB | AWS/ApplicationELB |
| AWS ECS / Fargate | AWS/ECS |
Each service collects a set of statistics chosen to suit that service's metrics (for example, averages for utilization metrics and sums for counters). These defaults work well out of the box and require no configuration.
- An AWS account with the services you want to monitor.
- AWS credentials with permission to read CloudWatch metrics. At minimum, the credentials must allow:
cloudwatch:ListMetricscloudwatch:GetMetricData
- The AWS region your resources run in.
| Setting | Description |
|---|---|
| AWS Region | The AWS region to collect metrics from (for example, us-east-1). |
| AWS Access Key ID | The access key used to authenticate to AWS. |
| AWS Secret Access Key | The secret key paired with the access key. |
| AWS Session Token | Required only when using temporary (STS) credentials. |
Each service template exposes two settings that control how metrics are polled from CloudWatch:
| Setting | Description |
|---|---|
| Collection Interval | How often the integration polls CloudWatch (one GetMetricData cycle). Shorter intervals give fresher data but increase the number of API calls. |
| Period | The CloudWatch aggregation window for each data point. It must match the resolution at which the AWS service publishes the metric, otherwise you may see gaps or repeated values. |
Guidance:
- Set Period to the metric's native publishing resolution — typically 5 minutes for services on 5-minute resolution (for example, EC2 basic monitoring) and 1 minute for services that publish at 1-minute resolution (for example, RDS and Application ELB).
- In most cases, set Collection Interval equal to Period. Polling more frequently than the period just re-reads the same data point; polling less frequently can miss points.
- The defaults below are pre-tuned per service, so you typically don't need to change them.
| Service | Collection Interval | Period |
|---|---|---|
| AWS EC2 | 5m | 5m |
| AWS Lambda | 1m | 1m |
| AWS RDS | 1m | 1m |
| AWS SQS | 1m | 1m |
| AWS Application ELB | 1m | 1m |
| AWS ECS | 1m | 1m |
The integration supports the following ways to authenticate to AWS:
- Access keys: Provide an access key ID and secret access key.
- Temporary credentials: Provide an access key ID, secret access key, and session token.
- IAM role assumption: Provide a Role ARN (and optionally an External ID) under the advanced settings to assume a role.
Use credentials scoped to read-only CloudWatch access wherever possible.
For the complete list of metrics available in each namespace, see the Amazon CloudWatch metrics and dimensions reference.
- Confirm the AWS Region matches where your resources are running.
- Verify the credentials are valid and not expired (temporary credentials require a session token).
- Ensure the credentials have
cloudwatch:ListMetricsandcloudwatch:GetMetricDatapermissions. - Allow time for the first collection cycle to complete, and remember that CloudWatch publishes metrics with a short delay.
- Double-check the access key ID and secret access key.
- If using temporary credentials, make sure the session token is set and current.
- If assuming a role, verify the Role ARN and, if required, the External ID.
- Amazon CloudWatch documentation
- AWS CloudWatch receiver documentation
- OpenTelemetry Collector documentation
Changelog
| Version | Details | Minimum Kibana version |
|---|---|---|
| 0.6.0 | Enhancement (View pull request) Publish Agentless to Elastic Managed integrations name change. |
9.5.0 |
| 0.5.0 | Enhancement (View pull request) Add policy templates for Classic Load Balancer, Network Load Balancer and Gateway Load Balancer. The existing aws.elb template now covers Application Load Balancers only. |
9.5.0 |
| 0.4.0 | Enhancement (View pull request) Add recently_active option to restrict metric discovery to metrics active in the last three hours. |
9.5.0 |
| 0.3.2 | Enhancement (View pull request) Update the integration documentation. |
9.5.0 |
| 0.3.1 | Enhancement (View pull request) Update default collection period and stats. |
9.5.0 |
| 0.3.0 | Enhancement (View pull request) Add support for region specific to a service. Enhancement (View pull request) Authenticate via the awscredentialsprovider extension (bundled in EDOT through elastic-agent#14933). |
9.5.0 |
| 0.2.2 | Enhancement (View pull request) Move configs to per service Enhancement (View pull request) Allow selecting multiple CloudWatch statistics per service (Aggregation Statistics is now a multi-select rendered as the receiver's stats list). |
9.5.0 |
| 0.2.1 | Enhancement (View pull request) Add a per-service delay variable on each policy template (aws_ec2, lambda, rds, sqs, elb, ecs), with a default reflecting the typical CloudWatch publish latency for that AWS service. The receiver uses this value as metrics.delay. |
9.5.0 |
| 0.2.0 | Enhancement (View pull request) Make agentless the default deployment mode ( is_default: true) while keeping the standard agent mode enabled. Add release: beta to the agentless block. |
9.5.0 |
| 0.1.1 | Enhancement (View pull request) Rename aws_ec2 policy template to aws.ec2 so it matches the bare-service-name convention used by the other templates (lambda, rds, sqs, elb, fargate). Update titles from "AWS X Metrics (OpenTelemetry)" to "AWS X OpenTelemetry Metrics". |
9.5.0 |
| 0.1.0 | Enhancement (View pull request) Initial release of AWS CloudWatch OpenTelemetry input package. |
9.5.0 |