Status: Stable, Unless otherwise specified. General naming considerations This section applies to attribute names (also known as the “attribute keys”), as well as Metric and Event names. For brevity within this section when we use the term “name” without an adjective it is implied to mean all of these. Every name MUST be a valid Unicode sequence. Note: we merely require that the names are represented as Unicode sequences. This specification does not define how exactly the Unicode sequ...| OpenTelemetry
Status: Stable This section applies to Log, Metric, Resource, and Span, and describes requirement levels for attributes defined in semantic conventions. Attribute requirement levels apply to the instrumentation library. The following attribute requirement levels are specified: Required Conditionally Required Recommended Opt-In The requirement level for an attribute is specified by semantic conventions depending on attribute availability across instrumented entities, performance, security, and...| OpenTelemetry
Status: Stable All OpenTelemetry concepts and data recorded using OpenTelemetry API can be directly and precisely represented using corresponding messages and fields of OTLP format. However, for other formats this is not always the case. Sometimes a format will not have a native way to represent a particular OpenTelemetry concept or a field of a concept. This document defines the transformation between OpenTelemetry and formats other than OTLP, for OpenTelemetry fields and concepts that have ...| OpenTelemetry
Status: Stable A logical unit of software with which the emitted telemetry can be associated. It is typically the developer’s choice to decide what denotes a reasonable instrumentation scope. The most common approach is to use the name and version of the instrumentation library, with any additional identifying information as part of the scope’s attributes. Other software components can be used too to get name, version and additional attributes, e.g. a module, a package, a class or a plugin.| OpenTelemetry
Status: Development This document defines how to map (convert) arbitrary data (e.g. in-memory objects) to OTLP’s AnyValue. The mapping is needed when OpenTelemetry needs to convert a value produced outside OpenTelemetry into a value that can be exported using an OTLP exporter, or otherwise be converted to be used inside OpenTelemetry boundaries. Example use cases are the following: In the Logging SDKs, to convert values received from logging libraries into OpenTelemetry representation. In t...| OpenTelemetry
Status: Mixed This document defines standard attributes for resources. These attributes are typically used in the Resource and are also recommended to be used anywhere else where there is a need to describe a resource in a consistent manner. The majority of these attributes are inherited from OpenCensus Resource standard. TODOs Add more compute units: AppEngine unit, etc. Add Web Browser. Decide if lower case strings only. Consider to add optional/required for each attribute and combination o...| OpenTelemetry
Status: Alpha Overview Environment variables provide a mechanism to propagate context and baggage information across process boundaries when network protocols are not applicable. This specification extends the API Propagators to define how the TextMapPropagator can be used with environment variables. Common systems where context propagation via environment variables is useful include: Batch processing systems CI/CD environments Command-line tools Propagator Mechanisms Propagating context via ...| OpenTelemetry
Status: Stable Overview Cross-cutting concerns send their state to the next process using Propagators, which are defined as objects used to read and write context data to and from messages exchanged by the applications. Each concern creates a set of Propagators for every supported Propagator type. Propagators leverage the Context to inject and extract data for each cross-cutting concern, such as traces and Baggage. Propagation is usually implemented via a cooperation of library-specific reque...| OpenTelemetry
Status: Stable. Overview A Context is a propagation mechanism which carries execution-scoped values across API boundaries and between logically associated execution units. Cross-cutting concerns access their data in-process using the same shared Context object. A Context MUST be immutable, and its write operations MUST result in the creation of a new Context containing the original values and the specified values updated. Languages are expected to use the single, widely used Context implement...| OpenTelemetry
Status: Stable Overview Baggage is a set of application-defined properties contextually associated with a distributed request or workflow execution (see also the W3C Baggage Specification). Baggage can be used, among other things, to annotate telemetry, adding contextual information to metrics, traces, and logs. In OpenTelemetry Baggage is represented as a set of name/value pairs describing user-defined properties. Each name in Baggage MUST be associated with exactly one value. This is more r...| OpenTelemetry
Status: Development A Schema File is a YAML file that describes the schema of a particular version. It defines the transformations that can be used to convert the telemetry data represented in any other older compatible version of the same schema family to this schema version. File Structure Here is the structure of the Schema File: # Defines the file format. MUST be set to 1.1.0. file_format: 1.1.0 # The Schema URL that this file is published at. The version number in the URL # MUST match th...| OpenTelemetry
Status: Development A Schema File is a YAML file that describes the schema of a particular version. It defines the transformations that can be used to convert the telemetry data represented in any other older compatible version of the same schema family to this schema version. File Structure Here is the structure of the Schema File: # Defines the file format. MUST be set to 1.0.0. file_format: 1.0.0 # The Schema URL that this file is published at. The version number in the URL # MUST match th...| OpenTelemetry
Status: Stable, except where otherwise specified Tracer Provider Tracer Creation It SHOULD only be possible to create Tracer instances through a TracerProvider (see API). The TracerProvider MUST implement the Get a Tracer API. The input provided by the user MUST be used to create an InstrumentationScope instance which is stored on the created Tracer. Status: Development - The TracerProvider MUST compute the relevant TracerConfig using the configured TracerConfigurator, and create a Tracer who...| OpenTelemetry
Status: Stable This document defines the stability guarantees offered by the OpenTelemetry clients, along with the rules and procedures for meeting those guarantees. In this document, the terms “OpenTelemetry” and “language implementations” both specifically refer to the OpenTelemetry clients. These terms do not refer to the specification or the Collector in this document. Each language implementation MUST take these versioning and stability requirements, and produce a language-specif...| OpenTelemetry
Status: Stable Motivation Telemetry sources such as instrumented applications and consumers of telemetry such as observability backends sometimes make implicit assumptions about the emitted telemetry. They assume that the telemetry will contain certain attributes or otherwise have a certain shape and composition of data (this is referred to as “telemetry schema” throughout this document). This makes it difficult or impossible to change the composition of the emitted telemetry data without...| OpenTelemetry
Status: Stable, except where otherwise specified Overview The Metrics API consists of these main components: MeterProvider is the entry point of the API. It provides access to Meters. Meter is responsible for creating Instruments. Instrument is responsible for reporting Measurements. Here is an example of the object hierarchy inside a process instrumented with the metrics API: +-- MeterProvider(default) | +-- Meter(name='io.opentelemetry.runtime', version='1.0.0') | | | +-- Instrument(name='c...| OpenTelemetry
Status: Stable except where otherwise specified A Resource is an immutable representation of the entity producing telemetry as Attributes. For example, a process producing telemetry that is running in a container on Kubernetes has a Pod name, it is in a namespace and possibly is part of a Deployment which also has a name. All three of these attributes can be included in the Resource. Note that there are certain “standard attributes” that have prescribed meanings.| OpenTelemetry
Status: Mixed Users of OpenTelemetry need a way for instrumentation interactions with the OpenTelemetry API to actually produce telemetry. The OpenTelemetry SDK (henceforth referred to as the SDK) is an implementation of the OpenTelemetry API that provides users with this functionally. All language implementations of OpenTelemetry MUST provide an SDK. MeterProvider Status: Stable A MeterProvider MUST provide a way to allow a Resource to be specified. If a Resource is specified, it SHOULD be a...| OpenTelemetry
Status: Stable Attribute An Attribute is a key-value pair, which MUST have the following properties: The attribute key MUST be a non-null and non-empty string. Case sensitivity of keys is preserved. Keys that differ in casing are treated as distinct keys. The attribute value is either: A primitive type: string, boolean, double precision floating point (IEEE 754-1985) or signed 64 bit integer. An array of primitive type values. The array MUST be homogeneous, i.e., it MUST NOT contain values of...| OpenTelemetry
Status: Stable, except where otherwise specified This is a data model and semantic conventions that allow to represent logs from various sources: application log files, machine generated events, system logs, etc. Existing log formats can be unambiguously mapped to this data model. Reverse mapping from this data model is also possible to the extent that the target log format has equivalent capabilities. The purpose of the data model is to have a common understanding of what a log record is, wh...| OpenTelemetry