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

Adds Profiles Signal #10154

Draft
wants to merge 50 commits into
base: main
Choose a base branch
from
Draft

Adds Profiles Signal #10154

wants to merge 50 commits into from

Conversation

petethepig
Copy link
Member

@petethepig petethepig commented May 15, 2024

Description

This is a PR that adds profiling support to collector. Relevant links:

State of this PR

This is currently work in progress. The code compiles and tests pass, however I'm planning to split this one into smaller chunks to simplify the review process.

TODOs:

Testing

Workflow I use to test this right now:

  • Run make otelcorecol to verify that collector compiles
  • Run ./bin/otelcorecol_darwin_arm64 --config=file:tmp/config.yaml (config is here)
  • Run curl -i -X POST http://localhost:4318/v1experimental/profiles -H 'Content-Type: application/json' -d @profile.json (profile.json is here)
  • ^ This prints the profile in text form

My plan is to have an end-to-end pipeline where you can run collector with an example client and example backend to test the whole pipeline. I did this with an earlier version of this PR, but haven't updated it yet. Will do this soon and update PR descriptions with instructions on how to run it.

@mx-psi
Copy link
Member

mx-psi commented May 17, 2024

It's great to have this PR to have a full picture of what support for profiles entails, thanks for moving this along!

As we discussed on the last Collector SIG, when we work on adding profiles support, we need to add this in a way that is mindful of the Collector 1.0 effort and can separate experimental APIs related to profiling from the ones we intend to stabilize now. How to do this is an open question (see #9209 for related discussion that we may need to address when doing this), and I am happy to help here to move this along.

In general, the approach I want to explore first is to put profiling related interfaces, structs and options into separate modules. If something needs to be on the same module as 1.0 stuff (I currently don't see any blockers like this), then we'll need to see if we can refactor things to make it go away or deal with it in the way proposed in #9209.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants