Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add new profile signal #534

Merged
merged 86 commits into from
Apr 23, 2024
Merged
Show file tree
Hide file tree
Changes from 76 commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
0c3571c
WIP: add profiling signal
felixge Jan 26, 2023
3decfa0
Merge remote-tracking branch 'felix/profiling-signal' into profiling
petethepig Jun 14, 2023
912021b
snapshot
petethepig Jun 14, 2023
72ddb55
snapshot
petethepig Jun 14, 2023
05ecb3c
empty profile proto
petethepig Jun 14, 2023
1ebf7eb
improved naming (profile_records came from log_records)
petethepig Jun 20, 2023
fb6e215
adds alternative variations of profiles proto
petethepig Jun 27, 2023
25dce2e
fix
petethepig Jun 27, 2023
076244a
Test PR merging abilities
Rperry2174 Jun 30, 2023
c454d6d
Merge pull request #1 from open-telemetry/test-pr
Rperry2174 Jun 30, 2023
1695002
incorporating the feedback from the last meeting
petethepig Jul 5, 2023
7faab0e
copyright year fix
petethepig Jul 6, 2023
a87c236
uint64 -> uint32 for indices
petethepig Jul 6, 2023
980fc89
adds attributes to Location and Mapping
petethepig Jul 6, 2023
6b98f0c
move stacktraces to a separate message
petethepig Jul 7, 2023
efc572c
follow up to prev commit
petethepig Jul 7, 2023
8fe43e9
adds another alternative (arrays)
petethepig Jul 7, 2023
b016676
adds a decision log
petethepig Jul 18, 2023
8cd1e60
included recent suggestions
petethepig Jul 26, 2023
d3b7479
Merge branch 'main' into profiling
petethepig Jul 26, 2023
54bba7a
Merge remote-tracking branch 'profile/main' into profiling
petethepig Jul 26, 2023
622c165
Merge pull request #3 from petethepig/profiling
petethepig Jul 26, 2023
4fd6976
more changes to the spec
petethepig Aug 24, 2023
a40299b
more changes
petethepig Aug 24, 2023
9bf6890
Merge pull request #4 from petethepig/profiling2
petethepig Aug 24, 2023
10843b8
Updates copyright notice at the top of profiles.proto
petethepig Sep 11, 2023
154f871
Merge pull request #6 from petethepig/copyright
petethepig Sep 13, 2023
3630eec
adds a new "pprofextended" alternative version
petethepig Oct 4, 2023
2cf711b
referencing by index instead of id
petethepig Oct 4, 2023
706154c
feat: sharing of the call stacks between samples
petethepig Oct 4, 2023
3e2e211
feat: Reuse of OpenTelemetry attributes.
petethepig Oct 4, 2023
9ec863c
adds unit to KeyValueInterned
petethepig Oct 5, 2023
f10e577
fixes proto numbers
petethepig Oct 5, 2023
850e05c
feat: timestamps
petethepig Oct 5, 2023
b6997ba
feat: aggregation temporality
petethepig Oct 5, 2023
013f7af
adds pprofextended to the main profiles.proto file
petethepig Oct 5, 2023
2299b71
better location_id handling
petethepig Oct 13, 2023
a80227b
attribute experiments
petethepig Oct 19, 2023
d938d1f
Suggestions from Christos (see https://github.com/open-telemetry/open…
petethepig Oct 19, 2023
4605817
cleanups
petethepig Nov 1, 2023
6310a5b
improvements
petethepig Nov 2, 2023
1f95c9f
more changes
petethepig Nov 2, 2023
dc7dfcb
better spelling
petethepig Nov 2, 2023
56b272b
fix
petethepig Nov 2, 2023
d78bc9a
changes
petethepig Nov 2, 2023
621a03e
more changes
petethepig Nov 2, 2023
f4cab62
more changes
petethepig Nov 2, 2023
a11e736
adds the last suggestion from https://github.com/open-telemetry/opent…
petethepig Dec 12, 2023
b3cbe49
adds clarifications
petethepig Jan 11, 2024
210837b
introduces Link - pointer from a profile Sample to a trace Span
petethepig Jan 11, 2024
61ee419
Replaces file_id with build_id+enum
petethepig Jan 11, 2024
f02d550
Adds comments to each message and enum
petethepig Jan 11, 2024
2fb4135
new line fixes
petethepig Jan 11, 2024
b6cf37b
updates diagram
petethepig Jan 11, 2024
9fd6d42
support for attribute units
petethepig Jan 11, 2024
ed6a036
resolves Alexey's comments: BuildIDKind comments
petethepig Jan 17, 2024
69f4b43
resolves Alexey's comments: BuildIdKind placement
petethepig Jan 17, 2024
d3b0908
addresses Alexey's comments - organizes fields logically rather than …
petethepig Jan 17, 2024
40f36cb
Addresses Alexey's comments
petethepig Jan 17, 2024
99bc8fe
Addresses Alexey's comments RE attribute units
petethepig Jan 17, 2024
c1f2813
addresses comments from @Kielek
petethepig Jan 17, 2024
7ec7a8d
ports changes from original pprof: https://github.com/google/pprof/pu…
petethepig Jan 23, 2024
e94d888
reorders structs better
petethepig Jan 23, 2024
33c3568
fixes a comment for string_table
petethepig Jan 23, 2024
3fc34d8
fixes relationship in diagram
petethepig Jan 25, 2024
3a3e4d7
typo
petethepig Jan 25, 2024
d6e6ed8
updates comment
petethepig Feb 5, 2024
d46d02b
clarifies profile id
petethepig Feb 6, 2024
9530290
Merge branch 'main' into pprof-experiments
petethepig Feb 16, 2024
3e70731
adds experimental profiles support
petethepig Mar 19, 2024
e72e0e3
deletes decision log
petethepig Mar 19, 2024
ab21da7
rolls back README changes
petethepig Mar 19, 2024
17592ea
resets common.proto to original version
petethepig Mar 19, 2024
f4de046
cleans up copyrights and file paths
petethepig Mar 19, 2024
845b17a
updates to paths and such
petethepig Mar 19, 2024
437976a
Merge branch 'main' into new-profile-signal
petethepig Mar 19, 2024
876093e
v1 -> v1experimental
petethepig Mar 27, 2024
e1d0492
more v1 -> v1experimental
petethepig Mar 27, 2024
4ed028e
Merge branch 'main' into new-profile-signal
petethepig Apr 4, 2024
5c04661
Update opentelemetry/proto/collector/profiles/v1experimental/profiles…
petethepig Apr 18, 2024
b69a9b3
Update opentelemetry/proto/profiles/v1experimental/profiles.proto
petethepig Apr 18, 2024
97cb64e
Add schema URLs for resource and scope profiles
petethepig Apr 18, 2024
f5b5897
Update timestamps to nanoseconds in Sample message
petethepig Apr 18, 2024
0d406a3
Merge branch 'main' into new-profile-signal
petethepig Apr 18, 2024
8acbb5a
Update opentelemetry/proto/profiles/v1experimental/pprofextended.proto
petethepig Apr 19, 2024
ff7d7e0
Update opentelemetry/proto/profiles/v1experimental/pprofextended.proto
petethepig Apr 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ components as indicated by the Maturity table below.
| metrics/\*<br>collector/metrics/* | Stable | [Stable](docs/specification.md#json-protobuf-encoding) |
| trace/\*<br>collector/trace/* | Stable | [Stable](docs/specification.md#json-protobuf-encoding) |
| logs/\*<br>collector/logs/* | Stable | [Stable](docs/specification.md#json-protobuf-encoding) |
| profiles/\*<br>collector/profiles/* | Experimental | [Experimental](docs/specification.md#json-protobuf-encoding) |
petethepig marked this conversation as resolved.
Show resolved Hide resolved

(See [maturity-matrix.yaml](https://github.com/open-telemetry/community/blob/47813530864b9fe5a5146f466a58bd2bb94edc72/maturity-matrix.yaml#L57)
for definition of maturity levels).
Expand Down
79 changes: 79 additions & 0 deletions opentelemetry/proto/collector/profiles/v1/profiles_service.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
// Copyright 2019, OpenTelemetry Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package opentelemetry.proto.collector.profiles.v1;

import "opentelemetry/proto/profiles/v1/profiles.proto";

option csharp_namespace = "OpenTelemetry.Proto.Collector.Profiles.V1";
option java_multiple_files = true;
option java_package = "io.opentelemetry.proto.collector.profiles.v1";
option java_outer_classname = "ProfilesServiceProto";
option go_package = "go.opentelemetry.io/proto/otlp/collector/profiles/v1";

// Service that can be used to push profiles between one Application instrumented with
// OpenTelemetry and a collector, or between a collector and a central collector (in this
// case spans are sent/received to/from multiple Applications).
service ProfilesService {
// For performance reasons, it is recommended to keep this RPC
// alive for the entire life of the application.
rpc Export(ExportProfilesServiceRequest) returns (ExportProfilesServiceResponse) {}
}

message ExportProfilesServiceRequest {
// An array of ResourceProfiles.
// For data coming from a single resource this array will typically contain one
// element. Intermediary nodes (such as OpenTelemetry Collector) that receive
// data from multiple origins typically batch the data before forwarding further and
// in that case this array will contain multiple elements.
repeated opentelemetry.proto.profiles.v1.ResourceProfiles resource_profiles = 1;
}

message ExportProfilesServiceResponse {
// The details of a partially successful export request.
//
// If the request is only partially accepted
// (i.e. when the server accepts only parts of the data and rejects the rest)
// the server MUST initialize the `partial_success` field and MUST
// set the `rejected_<signal>` with the number of items it rejected.
//
// Servers MAY also make use of the `partial_success` field to convey
// warnings/suggestions to senders even when the request was fully accepted.
// In such cases, the `rejected_<signal>` MUST have a value of `0` and
// the `error_message` MUST be non-empty.
//
// A `partial_success` message with an empty value (rejected_<signal> = 0 and
// `error_message` = "") is equivalent to it not being set/present. Senders
// SHOULD interpret it the same way as in the full success case.
ExportProfilesPartialSuccess partial_success = 1;
}

message ExportProfilesPartialSuccess {
// The number of rejected profiles.
//
// A `rejected_<signal>` field holding a `0` value indicates that the
// request was fully accepted.
int64 rejected_profiles = 1;

// A developer-facing human-readable message in English. It should be used
// either to explain why the server rejected parts of the data during a partial
// success or to convey warnings/suggestions during a full success. The message
// should offer guidance on how users can address such issues.
//
// error_message is an optional field. An error_message with an empty value
// is equivalent to it not being set.
string error_message = 2;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# This is an API configuration to generate an HTTP/JSON -> gRPC gateway for the
# OpenTelemetry service using github.com/grpc-ecosystem/grpc-gateway.
type: google.api.Service
config_version: 3
http:
rules:
- selector: opentelemetry.proto.collector.profiles.v1.ProfilesService.Export
post: /v1/profiles
petethepig marked this conversation as resolved.
Show resolved Hide resolved
body: "*"
Loading
Loading