---
description: Configuration loads defaults, then YAML, then CF2OTEL environment overrides.
  Two underscores cross a YAML nesting boundary.
---

<!-- Generated by go run ./internal/configdoc; do not edit by hand. -->
# Environment variables

Configuration loads defaults, then YAML, then `CF2OTEL_` environment overrides. Two underscores cross a YAML nesting boundary. Secrets must be supplied only through environment variables.

| YAML key | Environment variable |
| --- | --- |
| `cloudflare.api_token` | `CF2OTEL_CLOUDFLARE__API_TOKEN` |
| `cloudflare.account_id` | `CF2OTEL_CLOUDFLARE__ACCOUNT_ID` |
| `cloudflare.zones` | `CF2OTEL_CLOUDFLARE__ZONES` |
| `cloudflare.api_base` | `CF2OTEL_CLOUDFLARE__API_BASE` |
| `cloudflare.timeout` | `CF2OTEL_CLOUDFLARE__TIMEOUT` |
| `cloudflare.max_response_bytes` | `CF2OTEL_CLOUDFLARE__MAX_RESPONSE_BYTES` |
| `access.include_service_tokens` | `CF2OTEL_ACCESS__INCLUDE_SERVICE_TOKENS` |
| `http.scope` | `CF2OTEL_HTTP__SCOPE` |
| `http.hosts` | `CF2OTEL_HTTP__HOSTS` |
| `http.zones` | `CF2OTEL_HTTP__ZONES` |
| `identity.enabled` | `CF2OTEL_IDENTITY__ENABLED` |
| `identity.match_window` | `CF2OTEL_IDENTITY__MATCH_WINDOW` |
| `identity.max_candidates` | `CF2OTEL_IDENTITY__MAX_CANDIDATES` |
| `ai_gateway.gateways` | `CF2OTEL_AI_GATEWAY__GATEWAYS` |
| `ai_gateway.capture_bodies` | `CF2OTEL_AI_GATEWAY__CAPTURE_BODIES` |
| `ai_gateway.max_body_bytes` | `CF2OTEL_AI_GATEWAY__MAX_BODY_BYTES` |
| `ai_gateway.link_caller_traces` | `CF2OTEL_AI_GATEWAY__LINK_CALLER_TRACES` |
| `otlp.endpoint` | `CF2OTEL_OTLP__ENDPOINT` |
| `otlp.protocol` | `CF2OTEL_OTLP__PROTOCOL` |
| `otlp.grafana_cloud.instance_id` | `CF2OTEL_OTLP__GRAFANA_CLOUD__INSTANCE_ID` |
| `otlp.grafana_cloud.token` | `CF2OTEL_OTLP__GRAFANA_CLOUD__TOKEN` |
| `state.dir` | `CF2OTEL_STATE__DIR` |
| `health.listen` | `CF2OTEL_HEALTH__LISTEN` |
| `log.level` | `CF2OTEL_LOG__LEVEL` |
| `log.format` | `CF2OTEL_LOG__FORMAT` |

The `collectors` map uses collector names such as `access.logins`; set its per-collector settings in YAML. The `otlp.headers` map contains secret values, so set each header through an environment variable, for example `CF2OTEL_OTLP__HEADERS__AUTHORIZATION`.

Required secret variables are `CF2OTEL_CLOUDFLARE__API_TOKEN` and `CF2OTEL_OTLP__GRAFANA_CLOUD__TOKEN`. The Grafana Cloud instance ID is `CF2OTEL_OTLP__GRAFANA_CLOUD__INSTANCE_ID`.
