Skip to content

[service/internal/graph] Measure telemetry as it is passed between pipeline components #12812

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

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

djaglowski
Copy link
Member

@djaglowski djaglowski commented Apr 8, 2025

Depends on #12856

Resolves #12676

This is a reboot of #11311, incorporating metrics defined in the component telemetry RFC and attributes added in #12617.

The basic pattern is:

  • When building any pipeline component which produces data, wrap the "next consumer" with instrumentation to measure the number of items being passed. This wrapped consumer is then passed into the constructor of the component.
  • When building any pipeline component which consumes data, wrap the component itself. This wrapped consumer is saved onto the graph node so that it can be retrieved during graph assembly.

@djaglowski djaglowski changed the title Compiling and tests passing [service/internal/graph] Record normalized telemetry as it is passed between pipeline components Apr 8, 2025
@djaglowski djaglowski changed the title [service/internal/graph] Record normalized telemetry as it is passed between pipeline components [service/internal/graph] Measure telemetry as it is passed between pipeline components Apr 8, 2025
@djaglowski djaglowski force-pushed the pipeline-component-metrics branch 2 times, most recently from b6bb02d to 2f83f2b Compare April 8, 2025 19:20
Copy link

codecov bot commented Apr 8, 2025

Codecov Report

Attention: Patch coverage is 82.98507% with 57 lines in your changes missing coverage. Please review.

Project coverage is 91.54%. Comparing base (ac520a5) to head (7c557ad).

Files with missing lines Patch % Lines
service/internal/graph/connector.go 65.95% 32 Missing and 16 partials ⚠️
service/internal/graph/exporter.go 85.71% 2 Missing and 1 partial ⚠️
service/internal/graph/processor.go 89.65% 2 Missing and 1 partial ⚠️
service/internal/graph/receiver.go 75.00% 2 Missing and 1 partial ⚠️

❌ Your patch check has failed because the patch coverage (82.98%) is below the target coverage (95.00%). You can increase the patch coverage or adjust the target coverage.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #12812      +/-   ##
==========================================
- Coverage   91.67%   91.54%   -0.13%     
==========================================
  Files         503      503              
  Lines       27819    28094     +275     
==========================================
+ Hits        25502    25720     +218     
- Misses       1828     1866      +38     
- Partials      489      508      +19     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Contributor

@jaronoff97 jaronoff97 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

some initial thoughts, overall implementation seems very sane to me though. Thank you!

@djaglowski djaglowski force-pushed the pipeline-component-metrics branch from 2f83f2b to 052cffc Compare April 8, 2025 20:36
@djaglowski djaglowski force-pushed the pipeline-component-metrics branch from 052cffc to 362a610 Compare April 9, 2025 16:39
@djaglowski djaglowski force-pushed the pipeline-component-metrics branch 2 times, most recently from fbed573 to b789109 Compare April 9, 2025 20:24
Copy link
Contributor

@codeboten codeboten left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for moving this work forward @djaglowski, just a few questions

@djaglowski
Copy link
Member Author

Thanks for the reviews.

#12817 implements a subset of this PR. If we can get that merged in first, I'll rebase to reduce the scope of this one substantially.

Copy link
Member

@MikeGoldsmith MikeGoldsmith left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this looks really good 👍🏻

As shared in the other PR, I'd really like to see bytes counters too but this is a great start.

github-merge-queue bot pushed a commit that referenced this pull request Apr 15, 2025
Subset of #12812

This internal package defines wrappers around consumers. These are
useful for instrumenting the component graph, so that we can generate
telemetry describing data as it is passed in between components.

Currently, this supports only a single counter metric, but in the near
future it can be enhanced to automatically capture multiple metrics
(e.g. item count & size), and potentially spans and/or logs as well.
@djaglowski djaglowski force-pushed the pipeline-component-metrics branch from b789109 to 4afe6cd Compare April 15, 2025 13:13
@djaglowski djaglowski force-pushed the pipeline-component-metrics branch from 4afe6cd to 5bdd398 Compare April 15, 2025 14:29
@github-actions github-actions bot requested a review from dmathieu April 15, 2025 14:29
@djaglowski djaglowski force-pushed the pipeline-component-metrics branch 4 times, most recently from adec160 to b66a5a8 Compare April 17, 2025 14:47
@codeboten
Copy link
Contributor

testing this further, this appears to be the current behaviour in main, it looks like something broke in the last 20 commits

@codeboten
Copy link
Contributor

Looks like things have been unhappy since this change: dc8e2dd

Copy link
Member

@dmitryax dmitryax left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR LGTM. However, I'd like to get an agreement on #12916 before releasing this

@songy23
Copy link
Member

songy23 commented Apr 24, 2025

I built the collector using the branch and when running it, this is what I see at localhost:8888/metrics:

I just tested and saw the same, internal metrics are broken at mainline head.

@songy23
Copy link
Member

songy23 commented Apr 24, 2025

Looks like things have been unhappy since this change: dc8e2dd

Yes, reverting that commit fixes it http://github.com/open-telemetry/opentelemetry-collector/pull/12917

@songy23 songy23 mentioned this pull request Apr 24, 2025
@djaglowski
Copy link
Member Author

With #12933 merged, the metrics created by this PR are once again useless without the telemetry.newPipelineTelemetry feature gate being enabled, so I am moving this back to draft.

@djaglowski djaglowski marked this pull request as draft April 28, 2025 17:19
@djaglowski djaglowski force-pushed the pipeline-component-metrics branch 3 times, most recently from 07a92cf to b54f142 Compare April 30, 2025 18:06
@djaglowski djaglowski marked this pull request as ready for review April 30, 2025 18:57
github-merge-queue bot pushed a commit that referenced this pull request May 5, 2025
Implements new name for attribute as documented in #12951.

Note: The obsconsumer package is unused until #12812 is merged so this
is not a breaking change.
@djaglowski djaglowski requested review from codeboten and dmitryax May 6, 2025 14:53
@djaglowski djaglowski force-pushed the pipeline-component-metrics branch 2 times, most recently from 3398805 to c5e2fcf Compare May 7, 2025 14:55
@mx-psi
Copy link
Member

mx-psi commented May 7, 2025

@dmitryax @codeboten I will merge this by Friday EOD Monday morning EU time unless you block by then

Copy link
Contributor

@codeboten codeboten left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @djaglowski, just one comment about the update of the tpm package, otherwise this looks good

@djaglowski djaglowski force-pushed the pipeline-component-metrics branch from e25097a to 014f717 Compare May 7, 2025 23:54
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.

Implement pipeline instrumentation
7 participants