---
title: General SDK Configuration
linkTitle: General
aliases: [general-sdk-configuration]
cSpell:ignore: ottrace
---

{{% alert title="Note" color="info" %}}

Support for environment variables is optional. For detailed information on which
environment variables each language implementation supports, please consult the
[Implementation Compliance Matrix](https://github.com/open-telemetry/opentelemetry-specification/blob/main/spec-compliance-matrix.md#environment-variables).

{{% /alert %}}

## `OTEL_SERVICE_NAME`

Sets the value of the [`service.name`](/docs/specs/semconv/resource/#service)
resource attribute.

**Default value:** `"unknown_service"`

If `service.name` is also provided in `OTEL_RESOURCE_ATTRIBUTES`, then
`OTEL_SERVICE_NAME` takes precedence.

**Example:**

`export OTEL_SERVICE_NAME="your-service-name"`

## `OTEL_RESOURCE_ATTRIBUTES`

Key-value pairs to be used as resource attributes. See
[Resource SDK](/docs/specs/otel/resource/sdk#specifying-resource-information-via-an-environment-variable)
for more details.

**Default value:** Empty.

See
[Resource semantic conventions](/docs/specs/semconv/resource/#semantic-attributes-with-sdk-provided-default-value)
for semantic conventions to follow for common resource types.

**Example:**

`export OTEL_RESOURCE_ATTRIBUTES="key1=value1,key2=value2"`

## `OTEL_TRACES_SAMPLER`

Specifies the Sampler used to sample traces by the SDK.

**Default value:** `"parentbased_always_on"`

**Example:**

`export OTEL_TRACES_SAMPLER="traceidratio"`

Accepted values for `OTEL_TRACES_SAMPLER` are:

- `"always_on"`: `AlwaysOnSampler`
- `"always_off"`: `AlwaysOffSampler`
- `"traceidratio"`: `TraceIdRatioBased`
- `"parentbased_always_on"`: `ParentBased(root=AlwaysOnSampler)`
- `"parentbased_always_off"`: `ParentBased(root=AlwaysOffSampler)`
- `"parentbased_traceidratio"`: `ParentBased(root=TraceIdRatioBased)`
- `"parentbased_jaeger_remote"`: `ParentBased(root=JaegerRemoteSampler)`
- `"jaeger_remote"`: `JaegerRemoteSampler`
- `"xray"`:
  [AWS X-Ray Centralized Sampling](https://docs.aws.amazon.com/xray/latest/devguide/xray-console-sampling.html)
  (_third party_)

## `OTEL_TRACES_SAMPLER_ARG`

Specifies arguments, if applicable, to the sampler defined in by
`OTEL_TRACES_SAMPLER`. The specified value will only be used if
`OTEL_TRACES_SAMPLER` is set. Each Sampler type defines its own expected input,
if any. Invalid or unrecognized input is logged as an error.

**Default value:** Empty.

**Example:**

```shell
export OTEL_TRACES_SAMPLER="traceidratio"
export OTEL_TRACES_SAMPLER_ARG="0.5"
```

Depending on the value of `OTEL_TRACES_SAMPLER`, `OTEL_TRACES_SAMPLER_ARG` may
be set as follows:

- For `traceidratio` and `parentbased_traceidratio` samplers: Sampling
  probability, a number in the [0..1] range, e.g. "0.25". Default is 1.0 if
  unset.
- For `jaeger_remote` and `parentbased_jaeger_remote`: The value is a comma
  separated list:
  - Example:
    `"endpoint=http://localhost:14250,pollingIntervalMs=5000,initialSamplingRate=0.25"`
  - `endpoint`: the endpoint in form of `scheme://host:port` of gRPC server that
    serves the sampling strategy for the service
    ([sampling.proto](https://github.com/jaegertracing/jaeger-idl/blob/main/proto/api_v2/sampling.proto)).
  - `pollingIntervalMs`: in milliseconds indicating how often the sampler will
    poll the backend for updates to sampling strategy.
  - `initialSamplingRate`: in the [0..1] range, which is used as the sampling
    probability when the backend cannot be reached to retrieve a sampling
    strategy. This value stops having an effect once a sampling strategy is
    retrieved successfully, as the remote strategy will be used until a new
    update is retrieved.

## `OTEL_PROPAGATORS`

Specifies Propagators to be used in a comma-separated list.

**Default value:** `"tracecontext,baggage"

**Example:**

`export OTEL_PROPAGATORS="b3"`

Accepted values for `OTEL_PROPAGATORS` are:

- `"tracecontext"`: [W3C Trace Context](https://www.w3.org/TR/trace-context/)
- `"baggage"`: [W3C Baggage](https://www.w3.org/TR/baggage/)
- `"b3"`: [B3 Single](/docs/specs/otel/context/api-propagators#configuration)
- `"b3multi"`:
  [B3 Multi](/docs/specs/otel/context/api-propagators#configuration)
- `"jaeger"`:
  [Jaeger](https://www.jaegertracing.io/docs/1.21/client-libraries/#propagation-format)
- `"xray"`:
  [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-concepts.html#xray-concepts-tracingheader)
  (_third party_)
- `"ottrace"`:
  [OT Trace](https://github.com/opentracing?q=basic&type=&language=) (_third
  party_)
- `"none"`: No automatically configured propagator.

## `OTEL_TRACES_EXPORTER`

Specifies which exporter is used for traces.

**Default value:** `"otlp"`

**Example:**

`export OTEL_TRACES_EXPORTER="jaeger"`

Accepted values for are:

- `"otlp"`: [OTLP][]
- `"jaeger"`: export in Jaeger data model
- `"zipkin"`: [Zipkin](https://zipkin.io/zipkin-api/)
- `"none"`: No automatically configured exporter for traces.

## `OTEL_METRICS_EXPORTER`

Specifies which exporter is used for metrics.

**Default value:** `"otlp"`

**Example:**

`export OTEL_METRICS_EXPORTER="prometheus"`

Accepted values for `OTEL_METRICS_EXPORTER` are:

- `"otlp"`: [OTLP][]
- `"prometheus"`:
  [Prometheus](https://github.com/prometheus/docs/blob/main/content/docs/instrumenting/exposition_formats.md)
- `"none"`: No automatically configured exporter for metrics.

## `OTEL_LOGS_EXPORTER`

Specifies which exporter is used for logs.

**Default value:** `"otlp"`

**Example:**

`export OTEL_LOGS_EXPORTER="otlp"`

Accepted values for `OTEL_LOGS_EXPORTER` are:

- `"otlp"`: [OTLP][]
- `"none"`: No automatically configured exporter for logs.

[otlp]: /docs/specs/otlp/
