OpenTelemetry semantic conventions reference
OpenTelemetry semantic conventions define the canonical names and value formats for attributes attached to spans, metrics, and logs. Using them means a query like db.system = postgresql works the same whether the data came from a Java, Go, or Python service. This reference lists common attribute keys, the namespace they belong to, their value type, and stability status.
Filter by key or namespace below to find the right attribute name for your instrumentation.
How it works
Attributes are namespaced dotted keys (http., db., rpc., messaging., network., server.). The OpenTelemetry specification fixes both the name and the expected value — for instance http.request.method must be an uppercase token like GET, and db.system uses a known identifier like postgresql or mysql. Each attribute carries a stability marker: Stable keys are frozen, Experimental keys may still change, and Deprecated keys point to a replacement.
Exceptions are modeled as a span event named exception carrying exception.type, exception.message, and exception.stacktrace. Resource attributes (service.name, service.version, telemetry.sdk.name) describe the producing entity and apply to every signal it emits. Following the conventions is what makes vendor-neutral dashboards and alerting possible.
Tips and examples
A typical HTTP server span carries:
http.request.method = "GET"
url.path = "/api/orders"
http.response.status_code = 200
server.address = "api.example.com"
network.protocol.version = "1.1"
When migrating older code, emit both the deprecated and stable keys for a release so existing dashboards keep working. Prefer the SDK’s helper methods (setAttribute, recordException) over hand-writing keys to avoid typos. Stick to Stable attributes for production alerting; treat Experimental ones as best-effort.