---
title: "otelcol.processor.resourcedetection | Grafana Alloy documentation"
description: "Learn about otelcol.processor.resourcedetection"
---

# `otelcol.processor.resourcedetection`

`otelcol.processor.resourcedetection` detects resource information from the host in a format that conforms to the [OpenTelemetry resource semantic conventions](https://github.com/open-telemetry/opentelemetry-specification/tree/main/specification/resource/semantic_conventions/), and appends or overrides the resource values in the telemetry data with this information.

> Note
> 
> `otelcol.processor.resourcedetection` is a wrapper over the upstream OpenTelemetry Collector Contrib [`resourcedetection`](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/v0.147.0/processor/resourcedetectionprocessor) processor. If necessary, bug reports or feature requests are redirected to the upstream repository.

You can specify multiple `otelcol.processor.resourcedetection` components by giving them different labels.

## Usage

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

```alloy
otelcol.processor.resourcedetection "<LABEL>" {
  output {
    logs    = [...]
    metrics = [...]
    traces  = [...]
  }
}
```

## Arguments

You can use the following arguments with `otelcol.processor.resourcedetection`:

Expand table

| Name        | Type           | Description                                                                        | Default   | Required |
|-------------|----------------|------------------------------------------------------------------------------------|-----------|----------|
| `detectors` | `list(string)` | An ordered list of named detectors used to detect resource information.            | `["env"]` | no       |
| `override`  | `bool`         | Configures whether existing resource attributes should be overridden or preserved. | `true`    | no       |
| `timeout`   | `duration`     | Timeout by which all specified detectors must complete.                            | `"5s"`    | no       |

`detectors` could contain the following values:

- `akamai`
- `alibaba_ecs`
- `aks`
- `azure`
- `consul`
- `digitalocean`
- `docker`
- `dynatrace`
- `ec2`
- `ecs`
- `eks`
- `elasticbeanstalk`
- `env`
- `gcp`
- `heroku`
- `hetzner`
- `kubeadm`
- `kubernetes_node`
- `lambda`
- `openshift`
- `nova`
- `oraclecloud`
- `scaleway`
- `tencent_cvm`
- `upcloud`
- `vultr`
- `system`

You can customize most detectors with the relevant block. For example, you can customize the `ec2` detector with the \[ec2]\[] block. If you omit the \[ec2]\[] block, the defaults specified in the \[ec2]\[] block documentation are used.

If multiple detectors are inserting the same attribute name, the first detector to insert wins. For example, if you had `detectors = ["eks", "ec2"]` then `cloud.platform` will be `aws_eks` instead of `ec2`.

The following order is recommended for AWS:

1. \[`lambda`]\[lambda]
2. \[`elasticbeanstalk`]\[elasticbeanstalk]
3. \[`eks`]\[eks]
4. \[`ecs`]\[ecs]
5. \[`ec2`]\[ec2]

There are several delectors which are not configured through blocks:

### `env` detector

The `env` detector reads resource information from the `OTEL_RESOURCE_ATTRIBUTES` environment variable. This variable must be in the format `<key1>=<value1>,<key2>=<value2>,...`, the details of which are currently pending confirmation in the OpenTelemetry specification.

### `dynatrace` detector

The `dynatrace` block loads resource information from the `dt_host_metadata.properties` file which is located in the `/var/lib/dynatrace/enrichment` (on Unix systems) or `%ProgramData%\dynatrace\enrichment` (on Windows) directories.

The `dynatrace` detector reads the following resource attributes from the metadata file: `host.name`, `dt.entity.host`, and `dt.smartscape.host`. These attributes are not configurable.

## Blocks

You can use the following blocks with `otelcol.processor.resourcedetection`:

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.

### `akamai`

The `akamai` block queries the Akamai connected cloud instance metadata service to retrieve various resource attributes from the Akamai cloud environment.

The `akamai` block supports the following blocks:

Expand table

| Block                                                 | Description                                  | Required |
|-------------------------------------------------------|----------------------------------------------|----------|
| [`resource_attributes`](#akamai--resource_attributes) | Configures which resource attributes to add. | no       |

#### `akamai` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                              | Description                                                                           | Required |
|------------------------------------|---------------------------------------------------------------------------------------|----------|
| \[`cloud.provider`]\[res-attr-cfg] | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`cloud.region`]\[res-attr-cfg]   | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default.   | no       |
| \[`host.id`]\[res-attr-cfg]        | Toggles the `host.id` resource attribute. Sets `enabled` to `true` by default.        | no       |
| \[`host.name`]\[res-attr-cfg]      | Toggles the `host.name` resource attribute. Sets `enabled` to `true` by default.      | no       |

Example values:

- `cloud.provider`: `"akamai"`

### `aks`

The `aks` block adds resource attributes related to Azure AKS.

The `aks` block supports the following blocks:

Expand table

| Block                                              | Description                                  | Required |
|----------------------------------------------------|----------------------------------------------|----------|
| [`resource_attributes`](#aks--resource_attributes) | Configures which resource attributes to add. | no       |

#### `aks` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                | Description                                                                              | Required |
|--------------------------------------|------------------------------------------------------------------------------------------|----------|
| \[`cloud.platform`]\[res-attr-cfg]   | Toggles the `cloud.platform` resource attribute. Sets `enabled` to `true` by default.    | no       |
| \[`cloud.provider`]\[res-attr-cfg]   | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default.    | no       |
| \[`k8s.cluster.name`]\[res-attr-cfg] | Toggles the `k8s.cluster.name` resource attribute. Sets `enabled` to `false` by default. | no       |

Example values:

- `cloud.platform`: `"azure_vm"`
- `cloud.provider`: `"azure"`

Azure AKS cluster name is derived from the Azure Instance Metadata Service’s (IMDS) infrastructure resource group field. This field contains the resource group and name of the cluster, separated by underscores. For example: `MC_<resource group>_<cluster name>_<location>`.

Example:

- Resource group: `my-resource-group`
- Cluster name: `my-cluster`
- Location: `eastus`
- Generated name: `MC_my-resource-group_my-cluster_eastus`

The cluster name is detected if it doesn’t contain underscores and if a custom infrastructure resource group name wasn’t used.

If accurate parsing can’t be performed, the infrastructure resource group value is returned. This value can be used to uniquely identify the cluster, because Azure won’t allow users to create multiple clusters with the same infrastructure resource group name.

### `azure`

The `azure` block queries the [Azure Instance Metadata Service](https://aka.ms/azureimds) to retrieve various resource attributes.

The `azure` block supports the following blocks:

Expand table

| Block                                                | Description                                  | Required |
|------------------------------------------------------|----------------------------------------------|----------|
| [`resource_attributes`](#azure--resource_attributes) | Configures which resource attributes to add. | no       |

The `azure` block supports the following attributes:

Expand table

| Attribute | Type           | Description                                                                                     | Default | Required |
|-----------|----------------|-------------------------------------------------------------------------------------------------|---------|----------|
| `tags`    | `list(string)` | A list of regular expressions to match tag keys to add as resource attributes can be specified. | `[]`    | no       |

#### `azure` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                        | Description                                                                                     | Required |
|----------------------------------------------|-------------------------------------------------------------------------------------------------|----------|
| \[`azure.resourcegroup.name`]\[res-attr-cfg] | Toggles the `azure.resourcegroup.name` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`azure.vm.name`]\[res-attr-cfg]            | Toggles the `azure.vm.name` resource attribute. Sets `enabled` to `true` by default.            | no       |
| \[`azure.vm.scaleset.name`]\[res-attr-cfg]   | Toggles the `azure.vm.scaleset.name` resource attribute. Sets `enabled` to `true` by default.   | no       |
| \[`azure.vm.size`]\[res-attr-cfg]            | Toggles the `azure.vm.size` resource attribute. Sets `enabled` to `true` by default.            | no       |
| \[`cloud.account.id`]\[res-attr-cfg]         | Toggles the `cloud.account.id` resource attribute. Sets `enabled` to `true` by default.         | no       |
| \[`cloud.availability_zone`]\[res-attr-cfg]  | Toggles the `cloud.availability_zone` resource attribute. Sets `enabled` to `false` by default. | no       |
| \[`cloud.platform`]\[res-attr-cfg]           | Toggles the `cloud.platform` resource attribute. Sets `enabled` to `true` by default.           | no       |
| \[`cloud.provider`]\[res-attr-cfg]           | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default.           | no       |
| \[`cloud.region`]\[res-attr-cfg]             | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default.             | no       |
| \[`host.id`]\[res-attr-cfg]                  | Toggles the `host.id` resource attribute. Sets `enabled` to `true` by default.                  | no       |
| \[`host.name`]\[res-attr-cfg]                | Toggles the `host.name` resource attribute. Sets `enabled` to `true` by default.                | no       |

Example values:

- `cloud.platform`: `"azure_vm"`
- `cloud.provider`: `"azure"`

### `consul`

The `consul` block queries a Consul agent and reads its configuration endpoint to retrieve values for resource attributes.

The `consul` block supports the following attributes:

Expand table

| Attribute    | Type           | Description                                                                                                            | Default | Required |
|--------------|----------------|------------------------------------------------------------------------------------------------------------------------|---------|----------|
| `address`    | `string`       | The address of the Consul server                                                                                       | `""`    | no       |
| `datacenter` | `string`       | Data center to use. If not provided, the default agent data center is used.                                            | `""`    | no       |
| `meta`       | `list(string)` | Allowlist of [Consul Metadata](https://www.consul.io/docs/agent/options#node_meta) keys to use as resource attributes. | `[]`    | no       |
| `namespace`  | `string`       | The name of the namespace to send along for the request.                                                               | `""`    | no       |
| `token`      | `secret`       | A per-request ACL token which overrides the Consul agent’s default (empty) token.                                      | `""`    | no       |

`token` is only required if the [Consul ACL System](https://www.consul.io/docs/security/acl/acl-system) is enabled.

The `consul` block supports the following blocks:

Expand table

| Block                                                 | Description                                  | Required |
|-------------------------------------------------------|----------------------------------------------|----------|
| [`resource_attributes`](#consul--resource_attributes) | Configures which resource attributes to add. | no       |

#### `consul` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                            | Description                                                                         | Required |
|----------------------------------|-------------------------------------------------------------------------------------|----------|
| \[`cloud.region`]\[res-attr-cfg] | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`host.id`]\[res-attr-cfg]      | Toggles the `host.id` resource attribute. Sets `enabled` to `true` by default.      | no       |
| \[`host.name`]\[res-attr-cfg]    | Toggles the `host.name` resource attribute. Sets `enabled` to `true` by default.    | no       |

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

### `digitalocean`

The `digitalocean` block queries the DigitalOcean instance metadata API to retrieve various resource attributes from the DigitalOcean cloud environment.

The `digitalocean` block supports the following attributes:

Expand table

| Attribute             | Type                                    | Description                                  | Default | Required |
|-----------------------|-----------------------------------------|----------------------------------------------|---------|----------|
| `resource_attributes` | \[`resource_attributes`]\[res-attr-cfg] | Configures which resource attributes to add. |         | no       |

#### `digitalocean` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                              | Description                                                                           | Required |
|------------------------------------|---------------------------------------------------------------------------------------|----------|
| \[`cloud.provider`]\[res-attr-cfg] | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`cloud.region`]\[res-attr-cfg]   | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default.   | no       |
| \[`host.id`]\[res-attr-cfg]        | Toggles the `host.id` resource attribute. Sets `enabled` to `true` by default.        | no       |
| \[`host.name`]\[res-attr-cfg]      | Toggles the `host.name` resource attribute. Sets `enabled` to `true` by default.      | no       |

Example values:

- `cloud.provider`: `"digitalocean"`

### `docker`

The `docker` block queries the Docker daemon to retrieve various resource attributes from the host machine.

You need to mount the Docker socket (`/var/run/docker.sock` on Linux) to contact the Docker daemon. Docker detection doesn’t work on MacOS.

The `docker` block supports the following blocks:

Expand table

| Block                                                 | Description                                  | Required |
|-------------------------------------------------------|----------------------------------------------|----------|
| [`resource_attributes`](#docker--resource_attributes) | Configures which resource attributes to add. | no       |

#### `docker` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                         | Description                                                                      | Required |
|-------------------------------|----------------------------------------------------------------------------------|----------|
| \[`host.name`]\[res-attr-cfg] | Toggles the `host.name` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`os.type`]\[res-attr-cfg]   | Toggles the `os.type` resource attribute. Sets `enabled` to `true` by default.   | no       |

### `ec2`

The `ec2` block reads resource information from the [EC2 instance metadata API](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html) using the [AWS SDK for Go](https://docs.aws.amazon.com/sdk-for-go/api/aws/ec2metadata/).

The `ec2` block supports the following attributes:

Expand table

| Attribute        | Type           | Description                                                                 | Default | Required |
|------------------|----------------|-----------------------------------------------------------------------------|---------|----------|
| `max_attempts`   | `int`          | The maximum number of attempts to retrieve metadata.                        | `3`     | no       |
| `max_backoff`    | `duration`     | The maximum backoff time between retries.                                   | `"20s"` | no       |
| `tags_from_imds` | `bool`         | Fetch instance tags through IMDS instead of the EC2 `DescribeTags` API.     | `false` | no       |
| `tags`           | `list(string)` | A list of regular expressions to match against tag keys of an EC2 instance. | `[]`    | no       |

If you are using a proxy server on your EC2 instance, it’s important that you exempt requests for instance metadata as described in the [AWS cli user guide](https://github.com/awsdocs/aws-cli-user-guide/blob/a2393582590b64bd2a1d9978af15b350e1f9eb8e/doc_source/cli-configure-proxy.md#using-a-proxy-on-amazon-ec2-instances). Failing to do so can result in proxied or missing instance data.

If the instance is part of AWS ParallelCluster and the detector is failing to connect to the metadata server, check the iptable and make sure the chain `PARALLELCLUSTER_IMDS` contains a rule that allows the Alloy user to access `169.254.169.254/32`.

`tags` can be used to gather tags for the EC2 instance which Alloy is running on. To fetch EC2 tags, the IAM role assigned to the EC2 instance must have a policy that includes the `ec2:DescribeTags` permission.

The `ec2` block supports the following blocks:

Expand table

| Block                             | Description                                  | Required |
|-----------------------------------|----------------------------------------------|----------|
| [\`\`](#ec2--resource_attributes) | Configures which resource attributes to add. | no       |

#### `ec2` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                       | Description                                                                                    | Required |
|---------------------------------------------|------------------------------------------------------------------------------------------------|----------|
| \[`cloud.account.id`]\[res-attr-cfg]        | Toggles the `cloud.account.id` resource attribute. Sets `enabled` to `true` by default.        | no       |
| \[`cloud.availability_zone`]\[res-attr-cfg] | Toggles the `cloud.availability_zone` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`cloud.platform`]\[res-attr-cfg]          | Toggles the `cloud.platform` resource attribute. Sets `enabled` to `true` by default.          | no       |
| \[`cloud.provider`]\[res-attr-cfg]          | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default.          | no       |
| \[`cloud.region`]\[res-attr-cfg]            | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default.            | no       |
| \[`host.id`]\[res-attr-cfg]                 | Toggles the `host.id` resource attribute. Sets `enabled` to `true` by default.                 | no       |
| \[`host.image.id`]\[res-attr-cfg]           | Toggles the `host.image.id` resource attribute. Sets `enabled` to `true` by default.           | no       |
| \[`host.name`]\[res-attr-cfg]               | Toggles the `host.name` resource attribute. Sets `enabled` to `true` by default.               | no       |
| \[`host.type`]\[res-attr-cfg]               | Toggles the `host.type` resource attribute. Sets `enabled` to `true` by default.               | no       |

### `ecs`

The `ecs` block queries the [Task Metadata Endpoint](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-metadata-endpoint.html) (TMDE) to record information about the current ECS Task. Only TMDE V4 and V3 are supported.

The `ecs` block supports the following blocks:

Expand table

| Block                                               | Description                                  | Required |
|-----------------------------------------------------|----------------------------------------------|----------|
| [resource\_attr\`ibutes](#ecs--resource_attributes) | Configures which resource attributes to add. | no       |

#### `ecs` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                       | Description                                                                                    | Required |
|---------------------------------------------|------------------------------------------------------------------------------------------------|----------|
| \[`aws.ecs.cluster.arn`]\[res-attr-cfg]     | Toggles the `aws.ecs.cluster.arn` resource attribute. Sets `enabled` to `true` by default.     | no       |
| \[`aws.ecs.launchtype`]\[res-attr-cfg]      | Toggles the `aws.ecs.launchtype` resource attribute. Sets `enabled` to `true` by default.      | no       |
| \[`aws.ecs.task.arn`]\[res-attr-cfg]        | Toggles the `aws.ecs.task.arn` resource attribute. Sets `enabled` to `true` by default.        | no       |
| \[`aws.ecs.task.family`]\[res-attr-cfg]     | Toggles the `aws.ecs.task.family` resource attribute. Sets `enabled` to `true` by default.     | no       |
| \[`aws.ecs.task.id`]\[res-attr-cfg]         | Toggles the `aws.ecs.task.id` resource attribute. Sets `enabled` to `true` by default.         | no       |
| \[`aws.ecs.task.revision`]\[res-attr-cfg]   | Toggles the `aws.ecs.task.revision` resource attribute. Sets `enabled` to `true` by default.   | no       |
| \[`aws.log.group.arns`]\[res-attr-cfg]      | Toggles the `aws.log.group.arns` resource attribute. Sets `enabled` to `true` by default.      | no       |
| \[`aws.log.group.names`]\[res-attr-cfg]     | Toggles the `aws.log.group.names` resource attribute. Sets `enabled` to `true` by default.     | no       |
| \[`aws.log.stream.arns`]\[res-attr-cfg]     | Toggles the `aws.log.stream.arns` resource attribute. Sets `enabled` to `true` by default.     | no       |
| \[`aws.log.stream.names`]\[res-attr-cfg]    | Toggles the `aws.log.stream.names` resource attribute. Sets `enabled` to `true` by default.    | no       |
| \[`cloud.account.id`]\[res-attr-cfg]        | Toggles the `cloud.account.id` resource attribute. Sets `enabled` to `true` by default.        | no       |
| \[`cloud.availability_zone`]\[res-attr-cfg] | Toggles the `cloud.availability_zone` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`cloud.platform`]\[res-attr-cfg]          | Toggles the `cloud.platform` resource attribute. Sets `enabled` to `true` by default.          | no       |
| \[`cloud.provider`]\[res-attr-cfg]          | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default.          | no       |
| \[`cloud.region`]\[res-attr-cfg]            | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default.            | no       |

### `eks`

The `eks` block adds resource attributes for Amazon EKS.

The `eks` block supports the following attributes:

Expand table

| Attribute           | Type     | Description                                           | Default           | Required |
|---------------------|----------|-------------------------------------------------------|-------------------|----------|
| `node_from_env_var` | `string` | The environment variable that contains the node name. | `"K8S_NODE_NAME"` | no       |

The `eks` block supports the following blocks:

Expand table

| Block                                              | Description                                  | Required |
|----------------------------------------------------|----------------------------------------------|----------|
| [`resource_attributes`](#eks--resource_attributes) | Configures which resource attributes to add. | no       |

#### `eks` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                | Description                                                                              | Required |
|--------------------------------------|------------------------------------------------------------------------------------------|----------|
| \[`cloud.account.id`]\[res-attr-cfg] | Toggles the `cloud.account.id` resource attribute. Sets `enabled` to `false` by default. | no       |
| \[`cloud.platform`]\[res-attr-cfg]   | Toggles the `cloud.platform` resource attribute. Sets `enabled` to `true` by default.    | no       |
| \[`cloud.provider`]\[res-attr-cfg]   | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default.    | no       |
| \[`k8s.cluster.name`]\[res-attr-cfg] | Toggles the `k8s.cluster.name` resource attribute. Sets `enabled` to `false` by default. | no       |

Example values:

- `cloud.provider`: `"aws"`
- `cloud.platform`: `"aws_eks"`

### `elasticbeanstalk`

The `elasticbeanstalk` block reads the AWS X-Ray configuration file available on all Beanstalk instances with [X-Ray Enabled](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/environment-configuration-debugging.html).

The `elasticbeanstalk` block supports the following blocks:

Expand table

| Block                                                           | Description                                  | Required |
|-----------------------------------------------------------------|----------------------------------------------|----------|
| [`resource_attributes`](#elasticbeanstalk--resource_attributes) | Configures which resource attributes to add. | no       |

#### `elasticbeanstalk` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                | Description                                                                             | Required |
|--------------------------------------|-----------------------------------------------------------------------------------------|----------|
| \[`cloud.platform`]\[res-attr-cfg]   | Toggles the `cloud.platform` resource attribute. Sets `enabled` to `true` by default.   | no       |
| \[`cloud.provider`]\[res-attr-cfg]   | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default.   | no       |
| \[`deployment.envir`]\[res-attr-cfg] | Toggles the `deployment.envir` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`service.instance`]\[res-attr-cfg] | Toggles the `service.instance` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`service.version`]\[res-attr-cfg]  | Toggles the `service.version` resource attribute. Sets `enabled` to `true` by default.  | no       |

Example values:

- `cloud.provider`: `"aws"`
- `cloud.platform`: `"aws_elastic_beanstalk"`

### `gcp`

The `gcp` block detects resource attributes using the [Google Cloud Client Libraries for Go](https://github.com/googleapis/google-cloud-go), which reads resource information from the [GCP metadata server](https://cloud.google.com/compute/docs/storing-retrieving-metadata). The detector also uses environment variables to identify which GCP platform the application is running on, and assigns appropriate resource attributes for that platform.

Use the `gcp` detector regardless of the GCP platform Alloy is running on.

The `gcp` block supports the following blocks:

Expand table

| Block                                              | Description                                  | Required |
|----------------------------------------------------|----------------------------------------------|----------|
| [`resource_attributes`](#gcp--resource_attributes) | Configures which resource attributes to add. | no       |

#### `gcp` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                                     | Description                                                                                                  | Required |
|-----------------------------------------------------------|--------------------------------------------------------------------------------------------------------------|----------|
| \[`cloud.account.id`]\[res-attr-cfg]                      | Toggles the `cloud.account.id` resource attribute. Sets `enabled` to `true` by default.                      | no       |
| \[`cloud.availability_zone`]\[res-attr-cfg]               | Toggles the `cloud.availability_zone` resource attribute. Sets `enabled` to `true` by default.               | no       |
| \[`cloud.platform`]\[res-attr-cfg]                        | Toggles the `cloud.platform` resource attribute. Sets `enabled` to `true` by default.                        | no       |
| \[`cloud.provider`]\[res-attr-cfg]                        | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default.                        | no       |
| \[`cloud.region`]\[res-attr-cfg]                          | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default.                          | no       |
| \[`faas.instance`]\[res-attr-cfg]                         | Toggles the `faas.instance` resource attribute. Sets `enabled` to `true` by default.                         | no       |
| \[`faas.id`]\[res-attr-cfg]                               | Deprecated. Removed upstream and has no effect.                                                              | no       |
| \[`faas.name`]\[res-attr-cfg]                             | Toggles the `faas.name` resource attribute. Sets `enabled` to `true` by default.                             | no       |
| \[`faas.version`]\[res-attr-cfg]                          | Toggles the `faas.version` resource attribute. Sets `enabled` to `true` by default.                          | no       |
| \[`gcp.cloud_run.job.execution`]\[res-attr-cfg]           | Toggles the `gcp.cloud_run.job.execution` resource attribute. Sets `enabled` to `true` by default.           | no       |
| \[`gcp.cloud_run.job.task_index`]\[res-attr-cfg]          | Toggles the `gcp.cloud_run.job.task_index` resource attribute. Sets `enabled` to `true` by default.          | no       |
| \[`gcp.gce.instance.group_manager.name`]\[res-attr-cfg]   | Toggles the `gcp.gce.instance.group_manager.name` resource attribute. Sets `enabled` to `true` by default.   | no       |
| \[`gcp.gce.instance.group_manager.region`]\[res-attr-cfg] | Toggles the `gcp.gce.instance.group_manager.region` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`gcp.gce.instance.group_manager.zone`]\[res-attr-cfg]   | Toggles the `gcp.gce.instance.group_manager.zone` resource attribute. Sets `enabled` to `true` by default.   | no       |
| \[`gcp.gce.instance.hostname`]\[res-attr-cfg]             | Toggles the `gcp.gce.instance.hostname` resource attribute. Sets `enabled` to `false` by default.            | no       |
| \[`gcp.gce.instance.name`]\[res-attr-cfg]                 | Toggles the `gcp.gce.instance.name` resource attribute. Sets `enabled` to `false` by default.                | no       |
| \[`host.id`]\[res-attr-cfg]                               | Toggles the `host.id` resource attribute. Sets `enabled` to `true` by default.                               | no       |
| \[`host.name`]\[res-attr-cfg]                             | Toggles the `host.name` resource attribute. Sets `enabled` to `true` by default.                             | no       |
| \[`host.type`]\[res-attr-cfg]                             | Toggles the `host.type` resource attribute. Sets `enabled` to `true` by default.                             | no       |
| \[`k8s.cluster.name`]\[res-attr-cfg]                      | Toggles the `k8s.cluster.name` resource attribute. Sets `enabled` to `true` by default.                      | no       |

#### Google Compute Engine (GCE) metadata

- `cloud.provider`: `"gcp"`
- `cloud.platform`: `"gcp_compute_engine"`
- `cloud.account.id`: Project ID
- `cloud.region`: For example, `"us-central1"`
- `cloud.availability_zone`: For example, `"us-central1-c"`
- `host.id`: Instance ID
- `host.name`: Instance name
- `host.type`: Machine type
- (optional) `gcp.gce.instance.hostname`
- (optional) `gcp.gce.instance.name`
- `gcp.gce.instance.group_manager.name`: Managed instance group name
- `gcp.gce.instance.group_manager.region`: Managed instance group region
- `gcp.gce.instance.group_manager.zone`: Managed instance group zone

#### Google Kubernetes Engine (GKE) metadata

- `cloud.provider`: `"gcp"`
- `cloud.platform`: `"gcp_kubernetes_engine"`
- `cloud.account.id`: Project ID
- `cloud.region`: Only for regional GKE clusters, for example `"us-central1"`
- `cloud.availability_zone`: only for zonal GKE clusters, for example, `"us-central1-c"`
- `k8s.cluster.name`
- `host.id`: Instance ID
- `host.name`: Instance name, only when workload identity is disabled

One known issue happens when GKE workload identity is enabled. The GCE metadata endpoints won’t be available, and the GKE resource detector won’t be able to determine `host.name`. If this happens, you can set `host.name` from one of the following resources:

- Get the `node.name` through the [downward API](https://kubernetes.io/docs/concepts/workloads/pods/downward-api/) with the `env` detector.
- Get the Kubernetes node name from the Kubernetes API (with `k8s.io/client-go`).

#### Google Cloud Run Services metadata

- `cloud.provider`: `"gcp"`
- `cloud.platform`: `"gcp_cloud_run"`
- `cloud.account.id`: Project ID
- `cloud.region`: For example, `"us-central1"`
- `faas.name`: Service name
- `faas.version`: Service revision

#### Cloud Run Jobs metadata

- `cloud.provider`: `"gcp"`
- `cloud.platform`: `"gcp_cloud_run"`
- `cloud.account.id`: Project ID
- `cloud.region`: For example, `"us-central1"`
- `faas.name`: Service name
- `gcp.cloud_run.job.execution`: For example, `"my-service-ajg89"`
- `gcp.cloud_run.job.task_index`: For example, `"0"`

#### Google Cloud Functions metadata

- `cloud.provider`: `"gcp"`
- `cloud.platform`: `"gcp_cloud_functions"`
- `cloud.account.id`: Project ID
- `cloud.region`: For example, `"us-central1"`
- `faas.name`: Function name
- `faas.version`: Function version

#### Google App Engine metadata

- `cloud.provider`: `"gcp"`
- `cloud.platform`: `"gcp_app_engine"`
- `cloud.account.id`: Project ID
- `cloud.region`: For example, `"us-central1"`
- `cloud.availability_zone`: For example, `"us-central1-c"`
- `faas.name`: Service name
- `faas.version`: Service version

### `heroku`

The `heroku` block adds resource attributes derived from [Heroku dyno metadata](https://devcenter.heroku.com/articles/dyno-metadata).

The `heroku` block supports the following blocks:

Expand table

| Block                                                 | Description                                  | Required |
|-------------------------------------------------------|----------------------------------------------|----------|
| [`resource_attributes`](#heroku--resource_attributes) | Configures which resource attributes to add. | no       |

#### `heroku` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                                 | Description                                                                                              | Required |
|-------------------------------------------------------|----------------------------------------------------------------------------------------------------------|----------|
| \[`cloud.provider`]\[res-attr-cfg]                    | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default.                    | no       |
| \[`heroku.app.id`]\[res-attr-cfg]                     | Toggles the `heroku.app.id` resource attribute. Sets `enabled` to `true` by default.                     | no       |
| \[`heroku.dyno.id`]\[res-attr-cfg]                    | Toggles the `heroku.dyno.id` resource attribute. Sets `enabled` to `true` by default.                    | no       |
| \[`heroku.release.commit`]\[res-attr-cfg]             | Toggles the `heroku.release.commit` resource attribute. Sets `enabled` to `true` by default.             | no       |
| \[`heroku.release.creation_timestamp`]\[res-attr-cfg] | Toggles the `heroku.release.creation_timestamp` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`service.instance.id`]\[res-attr-cfg]               | Toggles the `service.instance.id` resource attribute. Sets `enabled` to `true` by default.               | no       |
| \[`service.name`]\[res-attr-cfg]                      | Toggles the `service.name` resource attribute. Sets `enabled` to `true` by default.                      | no       |
| \[`service.version`]\[res-attr-cfg]                   | Toggles the `service.version` resource attribute. Sets `enabled` to `true` by default.                   | no       |

When [Heroku dyno metadata](https://devcenter.heroku.com/articles/dyno-metadata) is active, Heroku applications publish information through environment variables. These environment variables map to resource attributes as follows:

Expand table

| Dyno metadata environment variable | Resource attribute                  |
|------------------------------------|-------------------------------------|
| `HEROKU_APP_ID`                    | `heroku.app.id`                     |
| `HEROKU_APP_NAME`                  | `service.name`                      |
| `HEROKU_DYNO_ID`                   | `service.instance.id`               |
| `HEROKU_RELEASE_CREATED_AT`        | `heroku.release.creation_timestamp` |
| `HEROKU_RELEASE_VERSION`           | `service.version`                   |
| `HEROKU_SLUG_COMMIT`               | `heroku.release.commit`             |

For more information, refer to the [Heroku cloud provider documentation](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/cloud_provider/heroku.md) under the [OpenTelemetry specification semantic conventions](https://github.com/open-telemetry/opentelemetry-specification).

### `hetzner`

The `hetzner` block queries the Hetzner cloud instance metadata API to retrieve various resource attributes from the Hetzner cloud environment.

The `hetzner` block supports the following attributes:

Expand table

| Attribute             | Type                                    | Description                                  | Default | Required |
|-----------------------|-----------------------------------------|----------------------------------------------|---------|----------|
| `resource_attributes` | \[`resource_attributes`]\[res-attr-cfg] | Configures which resource attributes to add. |         | no       |

#### `hetzner` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                       | Description                                                                                    | Required |
|---------------------------------------------|------------------------------------------------------------------------------------------------|----------|
| \[`cloud.availability_zone`]\[res-attr-cfg] | Toggles the `cloud.availability_zone` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`cloud.provider`]\[res-attr-cfg]          | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default.          | no       |
| \[`cloud.region`]\[res-attr-cfg]            | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default.            | no       |
| \[`host.id`]\[res-attr-cfg]                 | Toggles the `host.id` resource attribute. Sets `enabled` to `true` by default.                 | no       |
| \[`host.name`]\[res-attr-cfg]               | Toggles the `host.name` resource attribute. Sets `enabled` to `true` by default.               | no       |

Example values:

- `cloud.provider`: `"hetzner"`

### `kubeadm`

The `kubeadm` block queries the Kubernetes API server to retrieve kubeadm resource attributes.

The `kubeadm` block supports the following attributes:

Expand table

| Attribute   | Type     | Description                                                             | Default  | Required |
|-------------|----------|-------------------------------------------------------------------------|----------|----------|
| `auth_type` | `string` | Configures how to authenticate to the Kubernetes API server.            | `"none"` | no       |
| `context`   | `string` | Override the current context when `auth_type` is set to `"kubeConfig"`. | `""`     | no       |

The following permissions are required:

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

```yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: otel-collector
  namespace: kube-system
rules:
  - apiGroups: [""]
    resources: ["configmaps"]
    resourceNames: ["kubeadm-config"]
    verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: otel-collector-rolebinding
  namespace: kube-system
subjects:
  - kind: ServiceAccount
    name: default
    namespace: default
roleRef:
  kind: Role
  name: otel-collector
  apiGroup: rbac.authorization.k8s.io
```

You can set `auth_type` to one of the following:

- `none`: No authentication.
- `serviceAccount`: Use the standard service account token provided to the Alloy Pod.
- `kubeConfig`: Use credentials from `~/.kube/config`.

The `kubeadm` block supports the following blocks:

Expand table

| Block                                                  | Description                                  | Required |
|--------------------------------------------------------|----------------------------------------------|----------|
| [`resource_attributes`](#kubeadm--resource_attributes) | Configures which resource attributes to add. | no       |

#### `kubeadm` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                | Description                                                                             | Required |
|--------------------------------------|-----------------------------------------------------------------------------------------|----------|
| \[`k8s.cluster.name`]\[res-attr-cfg] | Toggles the `k8s.cluster.name` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`k8s.cluster.uid`]\[res-attr-cfg]  | Toggles the `k8s.cluster.uid` resource attribute. Sets `enabled` to `true` by default.  | no       |

### `kubernetes_node`

The `kubernetes_node` block queries the Kubernetes API server to retrieve various node resource attributes.

The `kubernetes_node` block supports the following attributes:

Expand table

| Attribute           | Type     | Description                                                             | Default           | Required |
|---------------------|----------|-------------------------------------------------------------------------|-------------------|----------|
| `auth_type`         | `string` | Configures how to authenticate to the K8s API server.                   | `"none"`          | no       |
| `context`           | `string` | Override the current context when `auth_type` is set to `"kubeConfig"`. | `""`              | no       |
| `node_from_env_var` | `string` | The environment variable that contains the node name.                   | `"K8S_NODE_NAME"` | no       |

The “get” and “list” permissions are required:

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

```yaml
kind: ClusterRole
metadata:
  name: alloy
rules:
  - apiGroups: [""]
    resources: ["nodes"]
    verbs: ["get", "list"]
```

`auth_type` can be set to one of the following:

- `none`: No authentication.
- `serviceAccount`: Use the standard service account token provided to the Alloy Pod.
- `kubeConfig`: Use credentials from `~/.kube/config`.

The `kubernetes_node` block supports the following blocks:

Expand table

| Block                                                          | Description                                  | Required |
|----------------------------------------------------------------|----------------------------------------------|----------|
| [`resource_attributes`](#kubernetes_node--resource_attributes) | Configures which resource attributes to add. | no       |

#### `kubernetes_node` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                             | Description                                                                          | Required |
|-----------------------------------|--------------------------------------------------------------------------------------|----------|
| \[`k8s.node.name`]\[res-attr-cfg] | Toggles the `k8s.node.name` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`k8s.node.uid`]\[res-attr-cfg]  | Toggles the `k8s.node.uid` resource attribute. Sets `enabled` to `true` by default.  | no       |

### `lambda`

The `lambda` block uses the AWS Lambda [runtime environment variables](https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-runtime) to retrieve various resource attributes.

The `lambda` block supports the following blocks:

Expand table

| Block                                                  | Description                                  | Required |
|--------------------------------------------------------|----------------------------------------------|----------|
| [resource\_attri\`butes](#lambda--resource_attributes) | Configures which resource attributes to add. | no       |

#### `lambda` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                    | Description                                                                                 | Required |
|------------------------------------------|---------------------------------------------------------------------------------------------|----------|
| \[`aws.log.group.names`]\[res-attr-cfg]  | Toggles the `aws.log.group.names` resource attribute. Sets `enabled` to `true` by default.  | no       |
| \[`aws.log.stream.names`]\[res-attr-cfg] | Toggles the `aws.log.stream.names` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`cloud.platform`]\[res-attr-cfg]       | Toggles the `cloud.platform` resource attribute. Sets `enabled` to `true` by default.       | no       |
| \[`cloud.provider`]\[res-attr-cfg]       | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default.       | no       |
| \[`cloud.region`]\[res-attr-cfg]         | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default.         | no       |
| \[`faas.instance`]\[res-attr-cfg]        | Toggles the `faas.instance` resource attribute. Sets `enabled` to `true` by default.        | no       |
| \[`faas.max_memory`]\[res-attr-cfg]      | Toggles the `faas.max_memory` resource attribute. Sets `enabled` to `true` by default.      | no       |
| \[`faas.name`]\[res-attr-cfg]            | Toggles the `faas.name` resource attribute. Sets `enabled` to `true` by default.            | no       |
| \[`faas.version`]\[res-attr-cfg]         | Toggles the `faas.version` resource attribute. Sets `enabled` to `true` by default.         | no       |

[Cloud semantic conventions](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/cloud.md):

- `cloud.provider`: `"aws"`
- `cloud.platform`: `"aws_lambda"`
- `cloud.region`: `$AWS_REGION`

[Function as a Service semantic conventions](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/faas.md) and [AWS Lambda semantic conventions](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/instrumentation/aws-lambda.md#resource-detector):

- `faas.name`: `$AWS_LAMBDA_FUNCTION_NAME`
- `faas.version`: `$AWS_LAMBDA_FUNCTION_VERSION`
- `faas.instance`: `$AWS_LAMBDA_LOG_STREAM_NAME`
- `faas.max_memory`: `$AWS_LAMBDA_FUNCTION_MEMORY_SIZE`

[AWS Logs semantic conventions](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/cloud_provider/aws/logs.md):

- `aws.log.group.names`: `$AWS_LAMBDA_LOG_GROUP_NAME`
- `aws.log.stream.names`: `$AWS_LAMBDA_LOG_STREAM_NAME`

### `nova`

The `nova` block queries the OpenStack Nova instance metadata API to retrieve various resource attributes from the OpenStack environment.

The `nova` block supports the following attributes:

Expand table

| Attribute                  | Type           | Description                                                                                                                               | Default | Required |
|----------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------------------|---------|----------|
| `fail_on_missing_metadata` | `bool`         | Whether to fail if metadata is missing.                                                                                                   | `false` | no       |
| `labels`                   | `list(string)` | A list of regular expressions to match against OpenStack Nova instance metadata keys (from the “meta” map) to add as resource attributes. | `[]`    | no       |

The `nova` block supports the following blocks:

Expand table

| Block                                               | Description                                  | Required |
|-----------------------------------------------------|----------------------------------------------|----------|
| [`resource_attributes`](#nova--resource_attributes) | Configures which resource attributes to add. | no       |

#### `nova` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                       | Description                                                                                    | Required |
|---------------------------------------------|------------------------------------------------------------------------------------------------|----------|
| \[`cloud.availability_zone`]\[res-attr-cfg] | Toggles the `cloud.availability_zone` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`cloud.platform`]\[res-attr-cfg]          | Toggles the `cloud.platform` resource attribute. Sets `enabled` to `true` by default.          | no       |
| \[`cloud.provider`]\[res-attr-cfg]          | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default.          | no       |
| \[`cloud.region`]\[res-attr-cfg]            | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default.            | no       |
| \[`host.id`]\[res-attr-cfg]                 | Toggles the `host.id` resource attribute. Sets `enabled` to `true` by default.                 | no       |
| \[`host.name`]\[res-attr-cfg]               | Toggles the `host.name` resource attribute. Sets `enabled` to `true` by default.               | no       |
| \[`host.type`]\[res-attr-cfg]               | Toggles the `host.type` resource attribute. Sets `enabled` to `true` by default.               | no       |

Example values:

- `cloud.platform`: `"openstack"`
- `cloud.provider`: `"openstack_nova"`

### `oraclecloud`

The `oraclecloud` block queries the Oracle Cloud Infrastructure (OCI) instance metadata service to retrieve various resource attributes from the Oracle Cloud environment.

The `oraclecloud` block supports the following blocks:

Expand table

| Block                                                      | Description                                  | Required |
|------------------------------------------------------------|----------------------------------------------|----------|
| [`resource_attributes`](#oraclecloud--resource_attributes) | Configures which resource attributes to add. | no       |

#### `oraclecloud` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                       | Description                                                                                    | Required |
|---------------------------------------------|------------------------------------------------------------------------------------------------|----------|
| \[`cloud.platform`]\[res-attr-cfg]          | Toggles the `cloud.platform` resource attribute. Sets `enabled` to `true` by default.          | no       |
| \[`cloud.provider`]\[res-attr-cfg]          | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default.          | no       |
| \[`cloud.region`]\[res-attr-cfg]            | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default.            | no       |
| \[`cloud.availability_zone`]\[res-attr-cfg] | Toggles the `cloud.availability_zone` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`host.id`]\[res-attr-cfg]                 | Toggles the `host.id` resource attribute. Sets `enabled` to `true` by default.                 | no       |
| \[`host.name`]\[res-attr-cfg]               | Toggles the `host.name` resource attribute. Sets `enabled` to `true` by default.               | no       |
| \[`host.type`]\[res-attr-cfg]               | Toggles the `host.type` resource attribute. Sets `enabled` to `true` by default.               | no       |
| \[`k8s.cluster.name`]\[res-attr-cfg]        | Toggles the `k8s.cluster.name` resource attribute. Sets `enabled` to `true` by default.        | no       |
| \[`oracle_cloud.realm`]\[res-attr-cfg]      | Toggles the `oracle_cloud.realm` resource attribute. Sets `enabled` to `true` by default.      | no       |

Example values:

- `cloud.platform`: `"oracle_cloud_infrastructure"`
- `cloud.provider`: `"oraclecloud"`
- `oracle_cloud.realm`: For example, `"oc1"`

### `tencent_cvm`

The `tencent_cvm` block queries the Tencent Cloud CVM metadata service to retrieve resource attributes.

The `tencent_cvm` block supports the following attributes:

Expand table

| Attribute                  | Type   | Description                                                                             | Default | Required |
|----------------------------|--------|-----------------------------------------------------------------------------------------|---------|----------|
| `fail_on_missing_metadata` | `bool` | Whether to fail if the metadata endpoint is unavailable or required fields are missing. | `false` | no       |

The `tencent_cvm` block supports the following blocks:

Expand table

| Block                                                      | Description                                  | Required |
|------------------------------------------------------------|----------------------------------------------|----------|
| [`resource_attributes`](#tencent_cvm--resource_attributes) | Configures which resource attributes to add. | no       |

#### `tencent_cvm` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                       | Description                                                                                    | Required |
|---------------------------------------------|------------------------------------------------------------------------------------------------|----------|
| \[`cloud.account.id`]\[res-attr-cfg]        | Toggles the `cloud.account.id` resource attribute. Sets `enabled` to `true` by default.        | no       |
| \[`cloud.availability_zone`]\[res-attr-cfg] | Toggles the `cloud.availability_zone` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`cloud.platform`]\[res-attr-cfg]          | Toggles the `cloud.platform` resource attribute. Sets `enabled` to `true` by default.          | no       |
| \[`cloud.provider`]\[res-attr-cfg]          | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default.          | no       |
| \[`cloud.region`]\[res-attr-cfg]            | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default.            | no       |
| \[`host.id`]\[res-attr-cfg]                 | Toggles the `host.id` resource attribute. Sets `enabled` to `true` by default.                 | no       |
| \[`host.image.id`]\[res-attr-cfg]           | Toggles the `host.image.id` resource attribute. Sets `enabled` to `true` by default.           | no       |
| \[`host.name`]\[res-attr-cfg]               | Toggles the `host.name` resource attribute. Sets `enabled` to `true` by default.               | no       |
| \[`host.type`]\[res-attr-cfg]               | Toggles the `host.type` resource attribute. Sets `enabled` to `true` by default.               | no       |

### `alibaba_ecs`

The `alibaba_ecs` block queries the Alibaba Cloud ECS metadata service to retrieve resource attributes.

The `alibaba_ecs` block supports the following attributes:

Expand table

| Attribute                  | Type   | Description                                                                             | Default | Required |
|----------------------------|--------|-----------------------------------------------------------------------------------------|---------|----------|
| `fail_on_missing_metadata` | `bool` | Whether to fail if the metadata endpoint is unavailable or required fields are missing. | `false` | no       |

The `alibaba_ecs` block supports the following blocks:

Expand table

| Block                                                      | Description                                  | Required |
|------------------------------------------------------------|----------------------------------------------|----------|
| [`resource_attributes`](#alibaba_ecs--resource_attributes) | Configures which resource attributes to add. | no       |

#### `alibaba_ecs` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                       | Description                                                                                    | Required |
|---------------------------------------------|------------------------------------------------------------------------------------------------|----------|
| \[`cloud.account.id`]\[res-attr-cfg]        | Toggles the `cloud.account.id` resource attribute. Sets `enabled` to `true` by default.        | no       |
| \[`cloud.availability_zone`]\[res-attr-cfg] | Toggles the `cloud.availability_zone` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`cloud.platform`]\[res-attr-cfg]          | Toggles the `cloud.platform` resource attribute. Sets `enabled` to `true` by default.          | no       |
| \[`cloud.provider`]\[res-attr-cfg]          | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default.          | no       |
| \[`cloud.region`]\[res-attr-cfg]            | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default.            | no       |
| \[`host.id`]\[res-attr-cfg]                 | Toggles the `host.id` resource attribute. Sets `enabled` to `true` by default.                 | no       |
| \[`host.image.id`]\[res-attr-cfg]           | Toggles the `host.image.id` resource attribute. Sets `enabled` to `true` by default.           | no       |
| \[`host.name`]\[res-attr-cfg]               | Toggles the `host.name` resource attribute. Sets `enabled` to `true` by default.               | no       |
| \[`host.type`]\[res-attr-cfg]               | Toggles the `host.type` resource attribute. Sets `enabled` to `true` by default.               | no       |

### `openshift`

The `openshift` block queries the OpenShift and Kubernetes APIs to retrieve various resource attributes.

The `openshift` block supports the following attributes:

Expand table

| Attribute | Type     | Description                                              | Default     | Required |
|-----------|----------|----------------------------------------------------------|-------------|----------|
| `address` | `string` | Address of the OpenShift API server.                     | *See below* | no       |
| `token`   | `string` | Token used to identify against the OpenShift API server. | ""          | no       |

The “get”, “watch”, and “list” permissions are required:

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

```yaml
kind: ClusterRole
metadata:
  name: alloy
rules:
  - apiGroups: ["config.openshift.io"]
    resources: ["infrastructures", "infrastructures/status"]
    verbs: ["get", "watch", "list"]
```

By default, the API address is determined from the environment variables `KUBERNETES_SERVICE_HOST`, `KUBERNETES_SERVICE_PORT` and the service token is read from `/var/run/secrets/kubernetes.io/serviceaccount/token`. If TLS isn’t explicitly disabled and no `ca_file` is configured, `/var/run/secrets/kubernetes.io/serviceaccount/ca.crt` is used. The determination of the API address, `ca_file`, and the service token is skipped if they are set in the configuration.

The `openshift` block supports the following blocks:

Expand table

| Block                                                    | Description                                             | Required |
|----------------------------------------------------------|---------------------------------------------------------|----------|
| [`tls`](#openshift--tls)                                 | TLS settings for the connection with the OpenShift API. | yes      |
| [`resource_attributes`](#openshift--resource_attributes) | Configures which resource attributes to add.            | no       |

#### `openshift` &gt; `tls`

The `tls` block configures TLS settings used for the connection to the gRPC server.

The following arguments are supported:

Expand table

| Name                           | Type           | Description                                                                                  | Default     | Required |
|--------------------------------|----------------|----------------------------------------------------------------------------------------------|-------------|----------|
| `ca_file`                      | `string`       | Path to the CA file.                                                                         |             | no       |
| `ca_pem`                       | `string`       | CA PEM-encoded text to validate the server with.                                             |             | no       |
| `cert_file`                    | `string`       | Path to the TLS certificate.                                                                 |             | no       |
| `cert_pem`                     | `string`       | Certificate PEM-encoded text for client authentication.                                      |             | no       |
| `cipher_suites`                | `list(string)` | A list of TLS cipher suites that the TLS transport can use.                                  | `[]`        | no       |
| `curve_preferences`            | `list(string)` | Set of elliptic curves to use in a handshake.                                                | `[]`        | no       |
| `include_system_ca_certs_pool` | `boolean`      | Whether to load the system certificate authorities pool alongside the certificate authority. | `false`     | no       |
| `insecure_skip_verify`         | `boolean`      | Ignores insecure server TLS certificates.                                                    |             | no       |
| `insecure`                     | `boolean`      | Disables TLS when connecting to the configured server.                                       |             | no       |
| `key_file`                     | `string`       | Path to the TLS certificate key.                                                             |             | no       |
| `key_pem`                      | `secret`       | Key PEM-encoded text for client authentication.                                              |             | no       |
| `max_version`                  | `string`       | Maximum acceptable TLS version for connections.                                              | `"TLS 1.3"` | no       |
| `min_version`                  | `string`       | Minimum acceptable TLS version for connections.                                              | `"TLS 1.2"` | no       |
| `reload_interval`              | `duration`     | The duration after which the certificate is reloaded.                                        | `"0s"`      | no       |
| `server_name`                  | `string`       | Verifies the hostname of server certificates when set.                                       |             | no       |

If the server doesn’t support TLS, you must set the `insecure` argument to `true`.

To disable `tls` for connections to the server, set the `insecure` argument to `true`.

If you set `reload_interval` to `"0s"`, the certificate never reloaded.

The following pairs of arguments are mutually exclusive and can’t both be set simultaneously:

- `ca_pem` and `ca_file`
- `cert_pem` and `cert_file`
- `key_pem` and `key_file`

If `cipher_suites` is left blank, a safe default list is used. Refer to the [Go TLS documentation](https://go.dev/src/crypto/tls/cipher_suites.go) for a list of supported cipher suites.

The `curve_preferences` argument determines the set of [elliptic curves](https://go.dev/src/crypto/tls/common.go#L138) to prefer during a handshake in preference order. If not provided, a default list is used. The set of elliptic curves available are `X25519`, `P521`, `P256`, and `P384`.

### `tpm`

The `tpm` block configures retrieving the TLS `key_file` from a trusted device.

The following arguments are supported:

Expand table

| Name         | Type     | Description                                                        | Default | Required |
|--------------|----------|--------------------------------------------------------------------|---------|----------|
| `auth`       | `string` | The authorization value used to authenticate the TPM device.       | `""`    | no       |
| `enabled`    | `bool`   | Load the `tls.key_file` from TPM.                                  | `false` | no       |
| `owner_auth` | `string` | The owner authorization value used to authenticate the TPM device. | `""`    | no       |
| `path`       | `string` | Path to the TPM device or Unix domain socket.                      | `""`    | no       |

The [trusted platform module](https://trustedcomputinggroup.org/resource/trusted-platform-module-tpm-summary/) (TPM) configuration can be used for loading TLS key from TPM. Currently only TSS2 format is supported.

The `path` attribute is not supported on Windows.

In the following example, the private key `my-tss2-key.key` in TSS2 format is loaded from the TPM device `/dev/tmprm0`:

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

```alloy
otelcol.example.component "<LABEL>" {
    ...
    tls {
        ...
        key_file = "my-tss2-key.key"
        tpm {
            enabled = true
            path = "/dev/tpmrm0"
        }
    }
}
```

#### `openshift` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                | Description                                                                             | Required |
|--------------------------------------|-----------------------------------------------------------------------------------------|----------|
| \[`cloud.platform`]\[res-attr-cfg]   | Toggles the `cloud.platform` resource attribute. Sets `enabled` to `true` by default.   | no       |
| \[`cloud.provider`]\[res-attr-cfg]   | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default.   | no       |
| \[`cloud.region`]\[res-attr-cfg]     | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default.     | no       |
| \[`k8s.cluster.name`]\[res-attr-cfg] | Toggles the `k8s.cluster.name` resource attribute. Sets `enabled` to `true` by default. | no       |

### `scaleway`

The `scaleway` block queries the Scaleway instance metadata API to retrieve various resource attributes from the Scaleway cloud environment.

The `scaleway` block supports the following attributes:

Expand table

| Attribute             | Type                                    | Description                                  | Default | Required |
|-----------------------|-----------------------------------------|----------------------------------------------|---------|----------|
| `resource_attributes` | \[`resource_attributes`]\[res-attr-cfg] | Configures which resource attributes to add. |         | no       |

#### `scaleway` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                       | Description                                                                                    | Required |
|---------------------------------------------|------------------------------------------------------------------------------------------------|----------|
| \[`cloud.account.id`]\[res-attr-cfg]        | Toggles the `cloud.account.id` resource attribute. Sets `enabled` to `true` by default.        | no       |
| \[`cloud.availability_zone`]\[res-attr-cfg] | Toggles the `cloud.availability_zone` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`cloud.platform`]\[res-attr-cfg]          | Toggles the `cloud.platform` resource attribute. Sets `enabled` to `true` by default.          | no       |
| \[`cloud.provider`]\[res-attr-cfg]          | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default.          | no       |
| \[`cloud.region`]\[res-attr-cfg]            | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default.            | no       |
| \[`host.id`]\[res-attr-cfg]                 | Toggles the `host.id` resource attribute. Sets `enabled` to `true` by default.                 | no       |
| \[`host.image.id`]\[res-attr-cfg]           | Toggles the `host.image.id` resource attribute. Sets `enabled` to `true` by default.           | no       |
| \[`host.image.name`]\[res-attr-cfg]         | Toggles the `host.image.name` resource attribute. Sets `enabled` to `true` by default.         | no       |
| \[`host.name`]\[res-attr-cfg]               | Toggles the `host.name` resource attribute. Sets `enabled` to `true` by default.               | no       |
| \[`host.type`]\[res-attr-cfg]               | Toggles the `host.type` resource attribute. Sets `enabled` to `true` by default.               | no       |

Example values:

- `cloud.platform`: `"scaleway_cloud_compute"`
- `cloud.provider`: `"scaleway_cloud"`

### `system`

The `system` block queries the host machine to retrieve various resource attributes.

> Note
> 
> Use the [Docker](#docker) detector if running Alloy as a Docker container.

The `system` block supports the following attributes:

Expand table

| Attribute          | Type           | Description                                                         | Default         | Required |
|--------------------|----------------|---------------------------------------------------------------------|-----------------|----------|
| `hostname_sources` | `list(string)` | A priority list of sources from which the hostname will be fetched. | `["dns", "os"]` | no       |

The valid options for `hostname_sources` are:

- `"dns"`: Uses multiple sources to get the fully qualified domain name. First, it looks up the host name in the local machine’s `hosts` file. If that fails, it looks up the CNAME. If the CNAME lookup fails, it does a reverse DNS query. This hostname source may produce unreliable results on Windows. To produce a FQDN, Windows hosts might have better results using the “lookup” hostname source.
- `"os"`: Provides the hostname provided by the local machine’s kernel.
- `"cname"`: Provides the canonical name, as provided by `net.LookupCNAME` in the Go standard library. This hostname source may produce unreliable results on Windows.
- `"lookup"`: Does a reverse DNS lookup of the current host’s IP address.

If there is an error fetching a hostname from a source, the next source from the list of `hostname_sources` will be considered.

The `system` block supports the following blocks:

Expand table

| Block                                                 | Description                                  | Required |
|-------------------------------------------------------|----------------------------------------------|----------|
| [`resource_attributes`](#system--resource_attributes) | Configures which resource attributes to add. | no       |

#### `system` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                                      | Description                                                                                    | Required |
|--------------------------------------------|------------------------------------------------------------------------------------------------|----------|
| \[`host.arch`]\[res-attr-cfg]              | Toggles the `host.arch` resource attribute. Sets `enabled` to `false` by default.              | no       |
| \[`host.cpu.cache.l2.size`]\[res-attr-cfg] | Toggles the `host.cpu.cache.l2.size` resource attribute. Sets `enabled` to `false` by default. | no       |
| \[`host.cpu.family`]\[res-attr-cfg]        | Toggles the `host.cpu.family` resource attribute. Sets `enabled` to `false` by default.        | no       |
| \[`host.cpu.model.id`]\[res-attr-cfg]      | Toggles the `host.cpu.model.id` resource attribute. Sets `enabled` to `false` by default.      | no       |
| \[`host.cpu.model.name`]\[res-attr-cfg]    | Toggles the `host.cpu.model.name` resource attribute. Sets `enabled` to `false` by default.    | no       |
| \[`host.cpu.stepping`]\[res-attr-cfg]      | Toggles the `host.cpu.stepping` resource attribute. Sets `enabled` to `false` by default.      | no       |
| \[`host.cpu.vendor.id`]\[res-attr-cfg]     | Toggles the `host.cpu.vendor.id` resource attribute. Sets `enabled` to `false` by default.     | no       |
| \[`host.id`]\[res-attr-cfg]                | Toggles the `host.id` resource attribute. Sets `enabled` to `false` by default.                | no       |
| \[`host.interface`]\[res-attr-cfg]         | Toggles the `host.interface` resource attribute. Sets `enabled` to `false` by default.         | no       |
| \[`host.ip`]\[res-attr-cfg]                | Toggles the `host.ip` resource attribute. Sets `enabled` to `false` by default.                | no       |
| \[`host.mac`]\[res-attr-cfg]               | Toggles the `host.mac` resource attribute. Sets `enabled` to `false` by default.               | no       |
| \[`host.name`]\[res-attr-cfg]              | Toggles the `host.name` resource attribute. Sets `enabled` to `true` by default.               | no       |
| \[`os.build.id`]\[res-attr-cfg]            | Toggles the `os.build.id` resource attribute. Sets `enabled` to `false` by default.            | no       |
| \[`os.description`]\[res-attr-cfg]         | Toggles the `os.description` resource attribute. Sets `enabled` to `false` by default.         | no       |
| \[`os.name`]\[res-attr-cfg]                | Toggles the `os.name` resource attribute. Sets `enabled` to `false` by default.                | no       |
| \[`os.type`]\[res-attr-cfg]                | Toggles the `os.type` resource attribute. Sets `enabled` to `true` by default.                 | no       |
| \[`os.version`]\[res-attr-cfg]             | Toggles the `os.version` resource attribute. Sets `enabled` to `false` by default.             | no       |

### `upcloud`

The `upcloud` block queries the UpCloud instance metadata API to retrieve various resource attributes from the UpCloud environment.

The `upcloud` block supports the following attributes:

Expand table

| Attribute                  | Type                                    | Description                                                                    | Default | Required |
|----------------------------|-----------------------------------------|--------------------------------------------------------------------------------|---------|----------|
| `fail_on_missing_metadata` | `bool`                                  | Whether to fail if metadata cannot be retrieved from the UpCloud metadata API. | `false` | no       |
| `resource_attributes`      | \[`resource_attributes`]\[res-attr-cfg] | Configures which resource attributes to add.                                   |         | no       |

#### `upcloud` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                              | Description                                                                           | Required |
|------------------------------------|---------------------------------------------------------------------------------------|----------|
| \[`cloud.provider`]\[res-attr-cfg] | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`cloud.region`]\[res-attr-cfg]   | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default.   | no       |
| \[`host.id`]\[res-attr-cfg]        | Toggles the `host.id` resource attribute. Sets `enabled` to `true` by default.        | no       |
| \[`host.name`]\[res-attr-cfg]      | Toggles the `host.name` resource attribute. Sets `enabled` to `true` by default.      | no       |

Example values:

- `cloud.provider`: `"upcloud"`

### `vultr`

The `vultr` block queries the Vultr instance metadata API to retrieve various resource attributes from the Vultr cloud environment.

The `vultr` block supports the following attributes:

Expand table

| Attribute                  | Type                                    | Description                                                                  | Default | Required |
|----------------------------|-----------------------------------------|------------------------------------------------------------------------------|---------|----------|
| `fail_on_missing_metadata` | `bool`                                  | Whether to fail if metadata cannot be retrieved from the Vultr metadata API. | `false` | no       |
| `resource_attributes`      | \[`resource_attributes`]\[res-attr-cfg] | Configures which resource attributes to add.                                 |         | no       |

#### `vultr` &gt; `resource_attributes`

The `resource_attributes` block supports the following blocks:

Expand table

| Block                              | Description                                                                           | Required |
|------------------------------------|---------------------------------------------------------------------------------------|----------|
| \[`cloud.provider`]\[res-attr-cfg] | Toggles the `cloud.provider` resource attribute. Sets `enabled` to `true` by default. | no       |
| \[`cloud.region`]\[res-attr-cfg]   | Toggles the `cloud.region` resource attribute. Sets `enabled` to `true` by default.   | no       |
| \[`host.id`]\[res-attr-cfg]        | Toggles the `host.id` resource attribute. Sets `enabled` to `true` by default.        | no       |
| \[`host.name`]\[res-attr-cfg]      | Toggles the `host.name` resource attribute. Sets `enabled` to `true` by default.      | no       |

Example values:

- `cloud.provider`: `"vultr"`

## Common configuration

### Resource attribute configuration

This block describes how to configure resource attributes such as `k8s.node.name` and `azure.vm.name`. Every block is configured using the same set of attributes. Only the default values for those attributes might differ across resource attributes. For example, some resource attributes have `enabled` set to `true` by default, whereas others don’t.

The following attributes are supported:

Expand table

| Attribute | Type   | Description                                                                         | Default     | Required |
|-----------|--------|-------------------------------------------------------------------------------------|-------------|----------|
| `enabled` | `bool` | Toggles whether to add the resource attribute to the span, log, or metric resource. | *See below* | no       |

To see the default value for `enabled`, refer to the tables in the sections above which list the resource attributes blocks. The “Description” column will state either:

> Sets `enabled` to `true` by default.

or:

> Sets `enabled` to `false` by default.

## Exported fields

The following fields are exported and can be referenced by other components:

Expand table

| Name    | Type               | Description                                                      |
|---------|--------------------|------------------------------------------------------------------|
| `input` | `otelcol.Consumer` | A value that other components can use to send telemetry data to. |

`input` accepts `otelcol.Consumer` OTLP-formatted data for any telemetry signal of these types:

- logs
- metrics
- traces

## Component health

`otelcol.processor.resourcedetection` is only reported as unhealthy if given an invalid configuration.

## Debug information

`otelcol.processor.resourcedetection` doesn’t expose any component-specific debug information.

## Examples

### `env` detector

If you set up a `OTEL_RESOURCE_ATTRIBUTES` environment variable with value of `TestKey=TestValue`, then all logs, metrics, and traces have a resource attribute with a key `TestKey` and value of `TestValue`.

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

```alloy
otelcol.processor.resourcedetection "default" {
  detectors = ["env"]

  output {
    logs    = [otelcol.exporter.otlphttp.default.input]
    metrics = [otelcol.exporter.otlphttp.default.input]
    traces  = [otelcol.exporter.otlphttp.default.input]
  }
}
```

### `env` and `ec2`

There is no need to put in an `ec2 {}` block. The `ec2` defaults are applied automatically, as specified in \[`ec2`]\[ec2].

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

```alloy
otelcol.processor.resourcedetection "default" {
  detectors = ["env", "ec2"]

  output {
    logs    = [otelcol.exporter.otlphttp.default.input]
    metrics = [otelcol.exporter.otlphttp.default.input]
    traces  = [otelcol.exporter.otlphttp.default.input]
  }
}
```

### `ec2` with default resource attributes

There is no need to put in a `ec2 {}` block. The `ec2` defaults are applied automatically, as specified in \[`ec2`]\[ec2].

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

```alloy
otelcol.processor.resourcedetection "default" {
  detectors = ["ec2"]

  output {
    logs    = [otelcol.exporter.otlphttp.default.input]
    metrics = [otelcol.exporter.otlphttp.default.input]
    traces  = [otelcol.exporter.otlphttp.default.input]
  }
}
```

### `ec2` with explicit resource attributes

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

```alloy
otelcol.processor.resourcedetection "default" {
  detectors = ["ec2"]
  ec2 {
    tags = ["^tag1$", "^tag2$", "^label.*$"]
    resource_attributes {
      cloud.account.id  { enabled = true }
      cloud.availability_zone  { enabled = true }
      cloud.platform  { enabled = true }
      cloud.provider  { enabled = true }
      cloud.region  { enabled = true }
      host.id  { enabled = true }
      host.image.id  { enabled = false }
      host.name  { enabled = false }
      host.type  { enabled = false }
    }
  }

  output {
    logs    = [otelcol.exporter.otlphttp.default.input]
    metrics = [otelcol.exporter.otlphttp.default.input]
    traces  = [otelcol.exporter.otlphttp.default.input]
  }
}
```

### `kubernetes_node` with a default node

This example uses the default `node_from_env_var` option of `K8S_NODE_NAME`.

There is no need to put in a `kubernetes_node {}` block. The `kubernetes_node` defaults are applied automatically, as specified in \[`kubernetes_node`]\[kubernetes\_node].

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

```alloy
otelcol.processor.resourcedetection "default" {
  detectors = ["kubernetes_node"]

  output {
    logs    = [otelcol.exporter.otlphttp.default.input]
    metrics = [otelcol.exporter.otlphttp.default.input]
    traces  = [otelcol.exporter.otlphttp.default.input]
  }
}
```

You need to add this to your workload:

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

```yaml
env:
  - name: K8S_NODE_NAME
    valueFrom:
      fieldRef:
        fieldPath: spec.nodeName
```

### `kubernetes_node` with a custom environment variable

This example uses a custom `node_from_env_var` set to `my_custom_var`.

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

```alloy
otelcol.processor.resourcedetection "default" {
  detectors = ["kubernetes_node"]
  kubernetes_node {
    node_from_env_var = "my_custom_var"
  }

  output {
    logs    = [otelcol.exporter.otlphttp.default.input]
    metrics = [otelcol.exporter.otlphttp.default.input]
    traces  = [otelcol.exporter.otlphttp.default.input]
  }
}
```

You need to add this to your workload:

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

```yaml
env:
  - name: my_custom_var
    valueFrom:
      fieldRef:
        fieldPath: spec.nodeName
```

## Compatible components

`otelcol.processor.resourcedetection` can accept arguments from the following components:

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

`otelcol.processor.resourcedetection` has exports that can be consumed by the following components:

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

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