---
title: "otelcol.receiver.awscloudwatch | Grafana Alloy documentation"
description: "Learn about otelcol.receiver.awscloudwatch"
---

# `otelcol.receiver.awscloudwatch`

> **EXPERIMENTAL**: This is an [experimental](/docs/release-life-cycle/) 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.level` [flag](/docs/alloy/latest/reference/cli/run/) to `experimental`.

`otelcol.receiver.awscloudwatch` receives logs from Amazon CloudWatch and forwards them to other `otelcol.*` components.

> Note
> 
> `otelcol.receiver.awscloudwatch` is a wrapper over the upstream OpenTelemetry Collector [`awscloudwatch`](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.147.0/receiver/awscloudwatchreceiver) receiver. 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

Alloy ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```alloy
otelcol.receiver.awscloudwatch "<LABEL>" {
  region = "us-west-2"

  output {
    logs = [...]
  }
}
```

## Arguments

You can use the following arguments with `otelcol.receiver.awscloudwatch`:

Expand table

| 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`:

No valid configuration blocks found.

### `output`

Required

The `output` block configures a set of components to forward resulting telemetry data to.

The following arguments are supported:

Expand table

| 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:

Expand table

| 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_metrics` only applies to `otelcol.exporter.*` and `otelcol.receiver.*` components.

### `logs`

The `logs` block configures how logs are collected from CloudWatch.

The following arguments are supported:

Expand table

| 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:

Expand table

| Block                   | Description                                  | Required |
|-------------------------|----------------------------------------------|----------|
| [groups](#logs--groups) | Configures which log groups to collect from. | no       |

#### `logs` &gt; `groups`

The `groups` block supports the following blocks:

Expand table

| Block                                       | Description                                     | Required |
|---------------------------------------------|-------------------------------------------------|----------|
| [autodiscover](#logs--groups--autodiscover) | Configures automatic discovery of log groups.   | no       |
| [named](#logs--groups--named)               | Configures specific log groups to collect from. | no       |

The blocks `autodiscover` or `named` are mutually exclusive.

#### `logs` &gt; `groups` &gt; `autodiscover`

The `autodiscover` block configures automatic discovery of log groups.

The following arguments are supported:

Expand table

| 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:

Expand table

| Block                                           | Description                       | Required |
|-------------------------------------------------|-----------------------------------|----------|
| [streams](#logs--groups--autodiscover--streams) | Configures log streams filtering. | no       |

#### `logs` &gt; `groups` &gt; `autodiscover` &gt; `streams`

The `streams` block configures filtering of log streams for the autodiscovered log groups.

The following arguments are supported:

Expand table

| 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` &gt; `groups` &gt; `named`

The `named` block explicitly configures specific log groups to collect from. Multiple `named` blocks can be specified.

The following arguments are supported:

Expand table

| 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:

Alloy ![Copy code to clipboard](/media/images/icons/icon-copy-small-2.svg) Copy

```alloy
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.otlphttp.default.input]
  }
}

otelcol.exporter.otlphttp "default" {
  client {
    endpoint = env("<OTLP_ENDPOINT>")
  }
}
```

## Compatible components

`otelcol.receiver.awscloudwatch` can accept arguments from the following components:

- Components that export [OpenTelemetry `otelcol.Consumer`](../../../compatibility/#opentelemetry-otelcolconsumer-exporters)

> 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.
