import type { BinaryWriteOptions } from "@protobuf-ts/runtime"; import type { IBinaryWriter } from "@protobuf-ts/runtime"; import type { BinaryReadOptions } from "@protobuf-ts/runtime"; import type { IBinaryReader } from "@protobuf-ts/runtime"; import type { PartialMessage } from "@protobuf-ts/runtime"; import { MessageType } from "@protobuf-ts/runtime"; import { KeyValue } from "../../../../common/v1/common"; /** * Represents a complete profile, including sample types, samples, * mappings to binaries, locations, functions, string table, and additional metadata. * * @generated from protobuf message opentelemetry.proto.profiles.v1.alternatives.pprofextended.Profile */ export interface Profile { /** * 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". * * @generated from protobuf field: repeated opentelemetry.proto.profiles.v1.alternatives.pprofextended.ValueType sample_type = 1; */ sampleType: ValueType[]; /** * The set of samples recorded in this profile. * * @generated from protobuf field: repeated opentelemetry.proto.profiles.v1.alternatives.pprofextended.Sample sample = 2; */ sample: Sample[]; /** * Mapping from address ranges to the image/binary/library mapped * into that address range. mapping[0] will be the main binary. * * @generated from protobuf field: repeated opentelemetry.proto.profiles.v1.alternatives.pprofextended.Mapping mapping = 3; */ mapping: Mapping[]; /** * Locations referenced by samples via location_indices. * * @generated from protobuf field: repeated opentelemetry.proto.profiles.v1.alternatives.pprofextended.Location location = 4; */ location: Location[]; /** * Array of locations referenced by samples. * * @generated from protobuf field: repeated int64 location_indices = 15; */ locationIndices: bigint[]; /** * Functions referenced by locations. * * @generated from protobuf field: repeated opentelemetry.proto.profiles.v1.alternatives.pprofextended.Function function = 5; */ function: Function[]; /** * Lookup table for attributes. * * @generated from protobuf field: repeated opentelemetry.proto.common.v1.KeyValue attribute_table = 16; */ attributeTable: KeyValue[]; /** * Represents a mapping between Attribute Keys and Units. * * @generated from protobuf field: repeated opentelemetry.proto.profiles.v1.alternatives.pprofextended.AttributeUnit attribute_units = 17; */ attributeUnits: AttributeUnit[]; /** * Lookup table for links. * * @generated from protobuf field: repeated opentelemetry.proto.profiles.v1.alternatives.pprofextended.Link link_table = 18; */ linkTable: Link[]; /** * A common table for strings referenced by various messages. * string_table[0] must always be "". * * @generated from protobuf field: repeated string string_table = 6; */ stringTable: string[]; /** * frames with Function.function_name fully matching the following * regexp will be dropped from the samples, along with their successors. * * @generated from protobuf field: int64 drop_frames = 7; */ dropFrames: bigint; /** * frames with Function.function_name fully matching the following * regexp will be kept, even if it matches drop_frames. * * @generated from protobuf field: int64 keep_frames = 8; */ keepFrames: bigint; /** * The following fields are informational, do not affect * interpretation of results. * Time of collection (UTC) represented as nanoseconds past the epoch. * * @generated from protobuf field: int64 time_nanos = 9; */ timeNanos: bigint; /** * Duration of the profile, if a duration makes sense. * * @generated from protobuf field: int64 duration_nanos = 10; */ durationNanos: bigint; /** * The kind of events between sampled occurrences. * e.g [ "cpu","cycles" ] or [ "heap","bytes" ] * * @generated from protobuf field: opentelemetry.proto.profiles.v1.alternatives.pprofextended.ValueType period_type = 11; */ periodType?: ValueType; /** * The number of events between sampled occurrences. * * @generated from protobuf field: int64 period = 12; */ period: bigint; /** * 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. * * @generated from protobuf field: repeated int64 comment = 13; */ comment: bigint[]; /** * Index into the string table of the type of the preferred sample * value. If unset, clients should default to the last sample value. * * @generated from protobuf field: int64 default_sample_type = 14; */ defaultSampleType: bigint; } /** * Represents a mapping between Attribute Keys and Units. * * @generated from protobuf message opentelemetry.proto.profiles.v1.alternatives.pprofextended.AttributeUnit */ export interface AttributeUnit { /** * Index into string table. * * @generated from protobuf field: int64 attribute_key = 1; */ attributeKey: bigint; /** * Index into string table. * * @generated from protobuf field: int64 unit = 2; */ unit: bigint; } /** * 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. * * @generated from protobuf message opentelemetry.proto.profiles.v1.alternatives.pprofextended.Link */ export interface Link { /** * A unique identifier of a trace that this linked span is part of. The ID is a * 16-byte array. * * @generated from protobuf field: bytes trace_id = 1; */ traceId: Uint8Array; /** * A unique identifier for the linked span. The ID is an 8-byte array. * * @generated from protobuf field: bytes span_id = 2; */ spanId: Uint8Array; } /** * ValueType describes the type and units of a value, with an optional aggregation temporality. * * @generated from protobuf message opentelemetry.proto.profiles.v1.alternatives.pprofextended.ValueType */ export interface ValueType { /** * @generated from protobuf field: int64 type = 1; */ type: bigint; /** * @generated from protobuf field: int64 unit = 2; */ unit: bigint; /** * @generated from protobuf field: opentelemetry.proto.profiles.v1.alternatives.pprofextended.AggregationTemporality aggregation_temporality = 3; */ aggregationTemporality: AggregationTemporality; } /** * 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. * * @generated from protobuf message opentelemetry.proto.profiles.v1.alternatives.pprofextended.Sample */ export interface Sample { /** * The indices recorded here correspond to locations in Profile.location. * The leaf is at location_index[0]. [deprecated, superseded by locations_start_index / locations_length] * * @generated from protobuf field: repeated uint64 location_index = 1; */ locationIndex: bigint[]; /** * locations_start_index along with locations_length refers to to a slice of locations in Profile.location. * Supersedes location_index. * * @generated from protobuf field: uint64 locations_start_index = 7; */ locationsStartIndex: bigint; /** * locations_length along with locations_start_index refers to a slice of locations in Profile.location. * Supersedes location_index. * * @generated from protobuf field: uint64 locations_length = 8; */ locationsLength: bigint; /** * A 128bit id that uniquely identifies this stacktrace, globally. Index into string table. [optional] * * @generated from protobuf field: uint32 stacktrace_id_index = 9; */ stacktraceIdIndex: number; /** * 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. * * @generated from protobuf field: repeated int64 value = 2; */ value: bigint[]; /** * label includes additional context for this sample. It can include * things like a thread id, allocation size, etc. * * NOTE: While possible, having multiple values for the same label key is * strongly discouraged and should never be used. Most tools (e.g. pprof) do * not have good (or any) support for multi-value labels. And an even more * discouraged case is having a string label and a numeric label of the same * name on a sample. Again, possible to express, but should not be used. * [deprecated, superseded by attributes] * * @generated from protobuf field: repeated opentelemetry.proto.profiles.v1.alternatives.pprofextended.Label label = 3; */ label: Label[]; /** * References to attributes in Profile.attribute_table. [optional] * * @generated from protobuf field: repeated uint64 attributes = 10; */ attributes: bigint[]; /** * Reference to link in Profile.link_table. [optional] * * @generated from protobuf field: uint64 link = 12; */ link: bigint; /** * Timestamps associated with Sample represented in ms. These timestamps are expected * to fall within the Profile's time range. [optional] * * @generated from protobuf field: repeated uint64 timestamps = 13; */ timestamps: bigint[]; } /** * Provides additional context for a sample, * such as thread ID or allocation size, with optional units. [deprecated] * * @generated from protobuf message opentelemetry.proto.profiles.v1.alternatives.pprofextended.Label */ export interface Label { /** * @generated from protobuf field: int64 key = 1; */ key: bigint; /** * At most one of the following must be present * * @generated from protobuf field: int64 str = 2; */ str: bigint; /** * @generated from protobuf field: int64 num = 3; */ num: bigint; /** * Should only be present when num is present. * Specifies the units of num. * Use arbitrary string (for example, "requests") as a custom count unit. * If no unit is specified, consumer may apply heuristic to deduce the unit. * Consumers may also interpret units like "bytes" and "kilobytes" as memory * units and units like "seconds" and "nanoseconds" as time units, * and apply appropriate unit conversions to these. * * @generated from protobuf field: int64 num_unit = 4; */ numUnit: bigint; } /** * Describes the mapping of a binary in memory, including its address range, * file offset, and metadata like build ID * * @generated from protobuf message opentelemetry.proto.profiles.v1.alternatives.pprofextended.Mapping */ export interface Mapping { /** * Unique nonzero id for the mapping. [deprecated] * * @generated from protobuf field: uint64 id = 1; */ id: bigint; /** * Address at which the binary (or DLL) is loaded into memory. * * @generated from protobuf field: uint64 memory_start = 2; */ memoryStart: bigint; /** * The limit of the address range occupied by this mapping. * * @generated from protobuf field: uint64 memory_limit = 3; */ memoryLimit: bigint; /** * Offset in the binary that corresponds to the first mapped address. * * @generated from protobuf field: uint64 file_offset = 4; */ fileOffset: bigint; /** * 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]". * * @generated from protobuf field: int64 filename = 5; */ filename: bigint; /** * A string that uniquely identifies a particular program version * with high probability. E.g., for binaries generated by GNU tools, * it could be the contents of the .note.gnu.build-id field. * * @generated from protobuf field: int64 build_id = 6; */ buildId: bigint; /** * Specifies the kind of build id. See BuildIdKind enum for more details [optional] * * @generated from protobuf field: opentelemetry.proto.profiles.v1.alternatives.pprofextended.BuildIdKind build_id_kind = 11; */ buildIdKind: BuildIdKind; /** * References to attributes in Profile.attribute_table. [optional] * * @generated from protobuf field: repeated uint64 attributes = 12; */ attributes: bigint[]; /** * The following fields indicate the resolution of symbolic info. * * @generated from protobuf field: bool has_functions = 7; */ hasFunctions: boolean; /** * @generated from protobuf field: bool has_filenames = 8; */ hasFilenames: boolean; /** * @generated from protobuf field: bool has_line_numbers = 9; */ hasLineNumbers: boolean; /** * @generated from protobuf field: bool has_inline_frames = 10; */ hasInlineFrames: boolean; } /** * Describes function and line table debug information. * * @generated from protobuf message opentelemetry.proto.profiles.v1.alternatives.pprofextended.Location */ export interface Location { /** * Unique nonzero id for the location. A profile could use * instruction addresses or any integer sequence as ids. [deprecated] * * @generated from protobuf field: uint64 id = 1; */ id: bigint; /** * The index of the corresponding profile.Mapping for this location. * It can be unset if the mapping is unknown or not applicable for * this profile type. * * @generated from protobuf field: uint64 mapping_index = 2; */ mappingIndex: bigint; /** * 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. * * @generated from protobuf field: uint64 address = 3; */ address: bigint; /** * 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" * * @generated from protobuf field: repeated opentelemetry.proto.profiles.v1.alternatives.pprofextended.Line line = 4; */ line: Line[]; /** * 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. * * @generated from protobuf field: bool is_folded = 5; */ isFolded: boolean; /** * Type of frame (e.g. kernel, native, python, hotspot, php). Index into string table. * * @generated from protobuf field: uint32 type_index = 6; */ typeIndex: number; /** * References to attributes in Profile.attribute_table. [optional] * * @generated from protobuf field: repeated uint64 attributes = 7; */ attributes: bigint[]; } /** * Details a specific line in a source code, linked to a function. * * @generated from protobuf message opentelemetry.proto.profiles.v1.alternatives.pprofextended.Line */ export interface Line { /** * The index of the corresponding profile.Function for this line. * * @generated from protobuf field: uint64 function_index = 1; */ functionIndex: bigint; /** * Line number in source code. * * @generated from protobuf field: int64 line = 2; */ line: bigint; /** * Column number in source code. * * @generated from protobuf field: int64 column = 3; */ column: bigint; } /** * Describes a function, including its human-readable name, system name, * source file, and starting line number in the source. * * @generated from protobuf message opentelemetry.proto.profiles.v1.alternatives.pprofextended.Function */ export interface Function { /** * Unique nonzero id for the function. [deprecated] * * @generated from protobuf field: uint64 id = 1; */ id: bigint; /** * Name of the function, in human-readable form if available. * * @generated from protobuf field: int64 name = 2; */ name: bigint; /** * Name of the function, as identified by the system. * For instance, it can be a C++ mangled name. * * @generated from protobuf field: int64 system_name = 3; */ systemName: bigint; /** * Source file containing the function. * * @generated from protobuf field: int64 filename = 4; */ filename: bigint; /** * Line number in source file. * * @generated from protobuf field: int64 start_line = 5; */ startLine: bigint; } /** * Specifies the method of aggregating metric values, either DELTA (change since last report) * or CUMULATIVE (total since a fixed start time). * * @generated from protobuf enum opentelemetry.proto.profiles.v1.alternatives.pprofextended.AggregationTemporality */ export declare enum AggregationTemporality { /** * UNSPECIFIED is the default AggregationTemporality, it MUST not be used. * * @generated from protobuf enum value: AGGREGATION_TEMPORALITY_UNSPECIFIED = 0; */ UNSPECIFIED = 0, /** * * 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. * * @generated from protobuf enum value: AGGREGATION_TEMPORALITY_DELTA = 1; */ DELTA = 1, /** * * 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_0+1 with a value of 1. * Note: Even though, when reporting changes since last report time, using * CUMULATIVE is valid, it is not recommended. * * @generated from protobuf enum value: AGGREGATION_TEMPORALITY_CUMULATIVE = 2; */ CUMULATIVE = 2 } /** * Indicates the semantics of the build_id field. * * @generated from protobuf enum opentelemetry.proto.profiles.v1.alternatives.pprofextended.BuildIdKind */ export declare enum BuildIdKind { /** * Linker-generated build ID, stored in the ELF binary notes. * * @generated from protobuf enum value: BUILD_ID_LINKER = 0; */ BUILD_ID_LINKER = 0, /** * Build ID based on the content hash of the binary. Currently no particular * hashing approach is standardized, so a given producer needs to define it * themselves and thus unlike BUILD_ID_LINKER this kind of hash is producer-specific. * We may choose to provide a standardized stable hash recommendation later. * * @generated from protobuf enum value: BUILD_ID_BINARY_HASH = 1; */ BUILD_ID_BINARY_HASH = 1 } declare class Profile$Type extends MessageType { constructor(); create(value?: PartialMessage): Profile; internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Profile): Profile; internalBinaryWrite(message: Profile, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter; } /** * @generated MessageType for protobuf message opentelemetry.proto.profiles.v1.alternatives.pprofextended.Profile */ export declare const Profile: Profile$Type; declare class AttributeUnit$Type extends MessageType { constructor(); create(value?: PartialMessage): AttributeUnit; internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AttributeUnit): AttributeUnit; internalBinaryWrite(message: AttributeUnit, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter; } /** * @generated MessageType for protobuf message opentelemetry.proto.profiles.v1.alternatives.pprofextended.AttributeUnit */ export declare const AttributeUnit: AttributeUnit$Type; declare class Link$Type extends MessageType { constructor(); create(value?: PartialMessage): Link; internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Link): Link; internalBinaryWrite(message: Link, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter; } /** * @generated MessageType for protobuf message opentelemetry.proto.profiles.v1.alternatives.pprofextended.Link */ export declare const Link: Link$Type; declare class ValueType$Type extends MessageType { constructor(); create(value?: PartialMessage): ValueType; internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ValueType): ValueType; internalBinaryWrite(message: ValueType, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter; } /** * @generated MessageType for protobuf message opentelemetry.proto.profiles.v1.alternatives.pprofextended.ValueType */ export declare const ValueType: ValueType$Type; declare class Sample$Type extends MessageType { constructor(); create(value?: PartialMessage): Sample; internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Sample): Sample; internalBinaryWrite(message: Sample, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter; } /** * @generated MessageType for protobuf message opentelemetry.proto.profiles.v1.alternatives.pprofextended.Sample */ export declare const Sample: Sample$Type; declare class Label$Type extends MessageType