# Telemetry
## Telemetry Attributes
This document defines attributes for telemetry SDK.
| Attribute | Type | Description | Examples | Stability |
|---|---|---|---|---|
| `telemetry.distro.name` | string | The name of the auto instrumentation agent or distribution, if used. [1] | `parts-unlimited-java` |  |
| `telemetry.distro.version` | string | The version string of the auto instrumentation agent or distribution, if used. | `1.2.3` |  |
| `telemetry.sdk.language` | string | The language of the telemetry SDK. | `cpp`; `dotnet`; `erlang` |  |
| `telemetry.sdk.name` | string | The name of the telemetry SDK as defined above. [2] | `opentelemetry` |  |
| `telemetry.sdk.version` | string | The version string of the telemetry SDK. | `1.2.3` |  |
**[1] `telemetry.distro.name`:** Official auto instrumentation agents and distributions SHOULD set the `telemetry.distro.name` attribute to
a string starting with `opentelemetry-`, e.g. `opentelemetry-java-instrumentation`.
**[2] `telemetry.sdk.name`:** The OpenTelemetry SDK MUST set the `telemetry.sdk.name` attribute to `opentelemetry`.
If another SDK, like a fork or a vendor-provided implementation, is used, this SDK MUST set the
`telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point
or another suitable identifier depending on the language.
The identifier `opentelemetry` is reserved and MUST NOT be used in this case.
All custom identifiers SHOULD be stable across different versions of an implementation.
---
`telemetry.sdk.language` has the following list of well-known values. If one of them applies, then the respective value MUST be used; otherwise, a custom value MAY be used.
| Value | Description | Stability |
|---|---|---|
| `cpp` | cpp |  |
| `dotnet` | dotnet |  |
| `erlang` | erlang |  |
| `go` | go |  |
| `java` | java |  |
| `nodejs` | nodejs |  |
| `php` | php |  |
| `python` | python |  |
| `ruby` | ruby |  |
| `rust` | rust |  |
| `swift` | swift |  |
| `webjs` | webjs |  |