otelcol.receiver.awscloudwatch
EXPERIMENTAL: This is an experimental component. Experimental components are subject to frequent breaking changes, and may be removed with no equivalent replacement. To enable and use an experimental component, you must set the
stability.levelflag toexperimental.
otelcol.receiver.awscloudwatch receives logs from Amazon CloudWatch and forwards them to other otelcol.* components.
Note
otelcol.receiver.awscloudwatchis a wrapper over the upstream OpenTelemetry Collectorawscloudwatchreceiver. Bug reports or feature requests will be redirected to the upstream repository, if necessary.
You can specify multiple otelcol.receiver.awscloudwatch components by giving them different labels.
Usage
otelcol.receiver.awscloudwatch "<LABEL>" {
region = "us-west-2"
output {
logs = [...]
}
}Arguments
You can use the following arguments with otelcol.receiver.awscloudwatch:
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
region | string | AWS region to collect logs from. | yes | |
imds_endpoint | string | Custom EC2 IMDS endpoint to use. | no | |
profile | string | AWS credentials profile to use. | no | |
storage | capsule(otelcol.Handler) | Handler from an otelcol.storage component to use for persisting state. | no |
If imds_endpoint isn’t specified, and the environment variable AWS_EC2_METADATA_SERVICE_ENDPOINT has a value, it will be used as the IMDS endpoint.
Blocks
You can use the following blocks with otelcol.receiver.awscloudwatch:
| Block | Description | Required |
|---|---|---|
output | Configures where to send received telemetry data. | yes |
debug_metrics | Configures the metrics that this component generates to monitor its state. | no |
logs | Configures the log collection settings. | no |
output
RequiredThe output block configures a set of components to forward resulting telemetry data to.
The following arguments are supported:
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
logs | list(otelcol.Consumer) | List of consumers to send logs to. | [] | no |
metrics | list(otelcol.Consumer) | List of consumers to send metrics to. | [] | no |
traces | list(otelcol.Consumer) | List of consumers to send traces to. | [] | no |
You must specify the output block, but all its arguments are optional.
By default, telemetry data is dropped.
Configure the metrics, logs, and traces arguments accordingly to send telemetry data to other components.
debug_metrics
The debug_metrics block configures the metrics that this component generates to monitor its state.
The following arguments are supported:
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
disable_high_cardinality_metrics | boolean | Whether to disable certain high cardinality metrics. | true | no |
disable_high_cardinality_metrics is the Alloy equivalent to the telemetry.disableHighCardinalityMetrics feature gate in the OpenTelemetry Collector.
It removes attributes that could cause high cardinality metrics.
For example, attributes with IP addresses and port numbers in metrics about HTTP and gRPC connections are removed.
Note
If configured,
disable_high_cardinality_metricsonly applies tootelcol.exporter.*andotelcol.receiver.*components.
logs
The logs block configures how logs are collected from CloudWatch.
The following arguments are supported:
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
max_events_per_request | int | Maximum number of events to process per request to CloudWatch. | 1000 | no |
poll_interval | duration | How frequently to poll for new log entries. | "1m" | no |
start_from | string | Timestamp in RFC3339 format where to start reading logs. | "" | no |
The logs block supports the following blocks:
| Block | Description | Required |
|---|---|---|
| groups | Configures which log groups to collect from. | no |
logs > groups
The groups block supports the following blocks:
| Block | Description | Required |
|---|---|---|
| autodiscover | Configures automatic discovery of log groups. | no |
| named | Configures specific log groups to collect from. | no |
The blocks autodiscover or named are mutually exclusive.
logs > groups > autodiscover
The autodiscover block configures automatic discovery of log groups.
The following arguments are supported:
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
limit | int | Maximum number of log groups to discover. | 50 | no |
prefix | string | Prefix to filter log groups by. | no |
The autodiscover block supports the following blocks:
| Block | Description | Required |
|---|---|---|
| streams | Configures log streams filtering. | no |
logs > groups > autodiscover > streams
The streams block configures filtering of log streams for the autodiscovered log groups.
The following arguments are supported:
| Name | Type | Description | Default | Required |
|---|---|---|---|---|
names | []string | List of exact stream names to collect. | no | |
prefixes | []string | List of prefixes to filter streams by. | no |
logs > groups > named
The named block explicitly configures specific log groups to collect from. Multiple named blocks can be specified.
The following arguments are supported:
| Name | Type | Description | Required |
|---|---|---|---|
group_name | string | Name of the CloudWatch log group. | yes |
names | []string | List of exact stream names to collect. | no |
prefixes | []string | List of prefixes to filter streams by. | no |
Exported fields
otelcol.receiver.awscloudwatch doesn’t export any fields.
Component health
otelcol.receiver.awscloudwatch is only reported as unhealthy if given an invalid configuration.
Debug information
otelcol.receiver.awscloudwatch doesn’t expose any component-specific debug information.
Example
The following example collects logs from specific EKS cluster log groups and forwards them through a batch processor:
otelcol.receiver.awscloudwatch "default" {
region = "us-west-2"
logs {
poll_interval = "3m"
max_events_per_request = 5000
groups {
named {
group_name = "/aws/eks/dev-cluster/cluster"
names = ["api-gateway"]
}
named {
group_name = "/aws/eks/prod-cluster/cluster"
prefixes = ["app-", "service-"]
}
}
}
output {
logs = [otelcol.processor.batch.default.input]
}
}
otelcol.processor.batch "default" {
output {
logs = [otelcol.exporter.otlp.default.input]
}
}
otelcol.exporter.otlp "default" {
client {
endpoint = env("<OTLP_ENDPOINT>")
}
}Compatible components
otelcol.receiver.awscloudwatch can accept arguments from the following components:
- Components that export OpenTelemetry
otelcol.Consumer
Note
Connecting some components may not be sensible or components may require further configuration to make the connection work correctly. Refer to the linked documentation for more details.



