Get desktop application:
View/edit binary Protocol Buffers messages
Specifies the method of aggregating metric values, either DELTA (change since last report) or CUMULATIVE (total since a fixed start time).
Used in:
UNSPECIFIED is the default AggregationTemporality, it MUST not be used.
* DELTA is an AggregationTemporality for a profiler which reports changes since last report time. Successive metrics contain aggregation of values from continuous and non-overlapping intervals. The values for a DELTA metric are based only on the time interval associated with one measurement cycle. There is no dependency on previous measurements like is the case for CUMULATIVE metrics. For example, consider a system measuring the number of requests that it receives and reports the sum of these requests every second as a DELTA metric: 1. The system starts receiving at time=t_0. 2. A request is received, the system measures 1 request. 3. A request is received, the system measures 1 request. 4. A request is received, the system measures 1 request. 5. The 1 second collection cycle ends. A metric is exported for the number of requests received over the interval of time t_0 to t_0+1 with a value of 3. 6. A request is received, the system measures 1 request. 7. A request is received, the system measures 1 request. 8. The 1 second collection cycle ends. A metric is exported for the number of requests received over the interval of time t_0+1 to t_0+2 with a value of 2.
* CUMULATIVE is an AggregationTemporality for a profiler which reports changes since a fixed start time. This means that current values of a CUMULATIVE metric depend on all previous measurements since the start time. Because of this, the sender is required to retain this state in some form. If this state is lost or invalidated, the CUMULATIVE metric values MUST be reset and a new fixed start time following the last reported measurement time sent MUST be used. For example, consider a system measuring the number of requests that it receives and reports the sum of these requests every second as a CUMULATIVE metric: 1. The system starts receiving at time=t_0. 2. A request is received, the system measures 1 request. 3. A request is received, the system measures 1 request. 4. A request is received, the system measures 1 request. 5. The 1 second collection cycle ends. A metric is exported for the number of requests received over the interval of time t_0 to t_0+1 with a value of 3. 6. A request is received, the system measures 1 request. 7. A request is received, the system measures 1 request. 8. The 1 second collection cycle ends. A metric is exported for the number of requests received over the interval of time t_0 to t_0+2 with a value of 5. 9. The system experiences a fault and loses state. 10. The system recovers and resumes receiving at time=t_1. 11. A request is received, the system measures 1 request. 12. The 1 second collection cycle ends. A metric is exported for the number of requests received over the interval of time t_1 to t_1+1 with a value of 1. Note: Even though, when reporting changes since last report time, using CUMULATIVE is valid, it is not recommended.
Represents a mapping between Attribute Keys and Units.
Used in:
Index into string table.
Index into string table.
Describes a function, including its human-readable name, system name, source file, and starting line number in the source.
Used in:
Function name. Empty string if not available.
Function name, as identified by the system. For instance, it can be a C++ mangled name. Empty string if not available.
Source file containing the function. Empty string if not available.
Line number in source file. 0 means unset.
Details a specific line in a source code, linked to a function.
Used in:
Reference to function in ProfilesData.function_table.
Line number in source code. 0 means unset.
Column number in source code. 0 means unset.
A pointer from a profile Sample to a trace Span. Connects a profile sample to a trace span, identified by unique trace and span IDs.
Used in:
A unique identifier of a trace that this linked span is part of. The ID is a 16-byte array.
A unique identifier for the linked span. The ID is an 8-byte array.
Describes function and line table debug information.
Used in:
Reference to mapping in ProfilesData.mapping_table. It can be unset if the mapping is unknown or not applicable for this profile type.
The instruction address for this location, if available. It should be within [Mapping.memory_start...Mapping.memory_limit] for the corresponding mapping. A non-leaf address may be in the middle of a call instruction. It is up to display tools to find the beginning of the instruction if necessary.
Multiple line indicates this location has inlined functions, where the last entry represents the caller into which the preceding entries were inlined. E.g., if memcpy() is inlined into printf: line[0].function_name == "memcpy" line[1].function_name == "printf"
Provides an indication that multiple symbols map to this location's address, for example due to identical code folding by the linker. In that case the line information above represents one of the multiple symbols. This field must be recomputed when the symbolization state of the profile changes.
References to attributes in ProfilesData.attribute_table. [optional]
Describes the mapping of a binary in memory, including its address range, file offset, and metadata like build ID
Used in:
Address at which the binary (or DLL) is loaded into memory.
The limit of the address range occupied by this mapping.
Offset in the binary that corresponds to the first mapped address.
The object this entry is loaded from. This can be a filename on disk for the main binary and shared libraries, or virtual abstractions like "[vdso]".
Index into ProfilesData.string_table.
References to attributes in ProfilesData.attribute_table. [optional]
The following fields indicate the resolution of symbolic info.
Represents a complete profile, including sample types, samples, mappings to binaries, locations, functions, string table, and additional metadata. It modifies and annotates pprof Profile with OpenTelemetry specific fields. Note that whilst fields in this message retain the name and field id from pprof in most cases for ease of understanding data migration, it is not intended that pprof:Profile and OpenTelemetry:Profile encoding be wire compatible.
Used in:
A description of the samples associated with each Sample.value. For a cpu profile this might be: [["cpu","nanoseconds"]] or [["wall","seconds"]] or [["syscall","count"]] For a heap profile, this might be: [["allocations","count"], ["space","bytes"]], If one of the values represents the number of events represented by the sample, by convention it should be at index 0 and use sample_type.unit == "count".
The set of samples recorded in this profile.
References to locations in ProfilesData.location_table.
Time of collection (UTC) represented as nanoseconds past the epoch.
Duration of the profile, if a duration makes sense.
The kind of events between sampled occurrences. e.g [ "cpu","cycles" ] or [ "heap","bytes" ]
The number of events between sampled occurrences.
Free-form text associated with the profile. The text is displayed as is to the user by the tools that read profiles (e.g. by pprof). This field should not be used to store any machine-readable information, it is only for human-friendly content. The profile must stay functional if this field is cleaned.
Indices into ProfilesData.string_table.
Index into the sample_type array to the default sample type.
A globally unique identifier for a profile. The ID is a 16-byte array. An ID with all zeroes is considered invalid. This field is required.
dropped_attributes_count is the number of attributes that were discarded. Attributes can be discarded because their keys are too long or because there are too many attributes. If this value is 0, then no attributes were dropped.
Specifies format of the original payload. Common values are defined in semantic conventions. [required if original_payload is present]
Original payload can be stored in this field. This can be useful for users who want to get the original payload. Formats such as JFR are highly extensible and can contain more information than what is defined in this spec. Inclusion of original payload should be configurable by the user. Default behavior should be to not include the original payload. If the original payload is in pprof format, it SHOULD not be included in this field. The field is optional, however if it is present then equivalent converted data should be populated in other fields of this message as far as is practicable.
References to attributes in attribute_table. [optional] It is a collection of key/value pairs. Note, global attributes like server name can be set using the resource API. Examples of attributes: "/http/user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36" "/http/server_latency": 300 "abc.com/myattribute": true "abc.com/score": 10.239 The OpenTelemetry API specification further restricts the allowed value types: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/common/README.md#attribute Attribute keys MUST be unique (it is not allowed to have more than one attribute with the same key).
ProfilesData represents the profiles data that can be stored in persistent storage, OR can be embedded by other protocols that transfer OTLP profiles data but do not implement the OTLP protocol. The main difference between this message and collector protocol is that in this message there will not be any "control" or "metadata" specific to OTLP protocol. When new fields are added into this message, the OTLP request MUST be updated as well.
An array of ResourceProfiles. For data coming from an SDK profiler, this array will typically contain one element. Host-level profilers will usually create one ResourceProfile per container, as well as one additional ResourceProfile grouping all samples from non-containerized processes. Other resource groupings are possible as well and clarified via Resource.attributes and semantic conventions.
Mappings from address ranges to the image/binary/library mapped into that address range referenced by locations via Location.mapping_index.
Locations referenced by samples via Profile.location_indices.
Functions referenced by locations via Line.function_index.
Links referenced by samples via Sample.link_index.
A common table for strings referenced by various messages. string_table[0] must always be "".
A common table for attributes referenced by various messages.
Represents a mapping between Attribute Keys and Units.
A collection of ScopeProfiles from a Resource.
Used in:
,The resource for the profiles in this message. If this field is not set then no resource info is known.
A list of ScopeProfiles that originate from a resource.
The Schema URL, if known. This is the identifier of the Schema that the resource data is recorded in. Notably, the last part of the URL path is the version number of the schema: http[s]://server[:port]/path/<version>. To learn more about Schema URL see https://opentelemetry.io/docs/specs/otel/schemas/#schema-url This schema_url applies to the data in the "resource" field. It does not apply to the data in the "scope_profiles" field which have their own schema_url field.
Each Sample records values encountered in some program context. The program context is typically a stack trace, perhaps augmented with auxiliary information like the thread-id, some indicator of a higher level request being handled etc.
Used in:
locations_start_index along with locations_length refers to to a slice of locations in Profile.location_indices.
locations_length along with locations_start_index refers to a slice of locations in Profile.location_indices. Supersedes location_index.
The type and unit of each value is defined by the corresponding entry in Profile.sample_type. All samples must have the same number of values, the same as the length of Profile.sample_type. When aggregating multiple samples into a single sample, the result has a list of values that is the element-wise sum of the lists of the originals.
References to attributes in ProfilesData.attribute_table. [optional]
Reference to link in ProfilesData.link_table. [optional]
Timestamps associated with Sample represented in nanoseconds. These timestamps are expected to fall within the Profile's time range. [optional]
A collection of Profiles produced by an InstrumentationScope.
Used in:
The instrumentation scope information for the profiles in this message. Semantically when InstrumentationScope isn't set, it is equivalent with an empty instrumentation scope name (unknown).
A list of Profiles that originate from an instrumentation scope.
The Schema URL, if known. This is the identifier of the Schema that the profile data is recorded in. Notably, the last part of the URL path is the version number of the schema: http[s]://server[:port]/path/<version>. To learn more about Schema URL see https://opentelemetry.io/docs/specs/otel/schemas/#schema-url This schema_url applies to all profiles in the "profiles" field.
ValueType describes the type and units of a value, with an optional aggregation temporality.
Used in:
Index into ProfilesData.string_table.
Index into ProfilesData.string_table.