Skip to content

Add Linux user_events receiver#2787

Merged
jmacd merged 35 commits into
open-telemetry:mainfrom
lalitb:split/user-events-receiver-only
May 13, 2026
Merged

Add Linux user_events receiver#2787
jmacd merged 35 commits into
open-telemetry:mainfrom
lalitb:split/user-events-receiver-only

Conversation

@lalitb
Copy link
Copy Markdown
Member

@lalitb lalitb commented Apr 30, 2026

Change Summary

Split out from the original combined PR #2717.

Adds a contrib receiver for Linux user_events tracepoints.

The receiver supports two decode formats:

  • tracefs: generic Linux tracepoint decoding based on the static schema exposed in tracefs format files.
  • event_header: decodes self-describing EventHeader payloads. EventHeader comes from the Microsoft LinuxTracepoints-Rust project, but is open and usable by any producer.

The receiver uses one_collect for perf/user_events collection, and supports single or multiple subscriptions, batching, late registration, and basic receiver metrics. It is behind the userevents-receiver feature flag.

Also adds a Linux CI smoke test that registers and reads both tracefs and EventHeader user_events tracepoints when kernel support is available.

What issue does this PR close?

How are these changes tested?

Added Linux CI smoke test

Are there any user-facing changes?

Yes, a receiver.

@lalitb lalitb marked this pull request as ready for review April 30, 2026 06:40
@lalitb lalitb requested a review from a team as a code owner April 30, 2026 06:40
@github-actions github-actions Bot added lang:rust Pull requests that update Rust code ci-repo Repository maintenance, build, GH workflows, repo cleanup, or other chores labels Apr 30, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 30, 2026

Codecov Report

❌ Patch coverage is 69.20449% with 631 lines in your changes missing coverage. Please review.
✅ Project coverage is 85.90%. Comparing base (b645a26) to head (bacaf90).

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

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2787      +/-   ##
==========================================
- Coverage   86.03%   85.90%   -0.13%     
==========================================
  Files         720      725       +5     
  Lines      273264   275313    +2049     
==========================================
+ Hits       235095   236521    +1426     
- Misses      37645    38268     +623     
  Partials      524      524              
Components Coverage Δ
otap-dataflow 87.03% <69.20%> (-0.16%) ⬇️
query_abstraction 80.61% <ø> (ø)
query_engine 89.57% <ø> (ø)
otel-arrow-go 52.45% <ø> (ø)
quiver 92.25% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Comment thread rust/otap-dataflow/crates/contrib-nodes/README.md Outdated
Comment thread rust/otap-dataflow/crates/contrib-nodes/src/receivers/mod.rs Outdated
Comment thread rust/otap-dataflow/crates/contrib-nodes/Cargo.toml Outdated
Comment thread rust/otap-dataflow/crates/contrib-nodes/Cargo.toml
Copy link
Copy Markdown
Contributor

@jmacd jmacd left a comment

Choose a reason for hiding this comment

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

Partial review. This is super!

Comment thread .github/workflows/rust-ci.yml Outdated
Comment thread .github/workflows/rust-ci.yml
Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

@utpilla utpilla left a comment

Choose a reason for hiding this comment

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

LGTM overall. I left a comment about including the smoke test in rust-required-status-check.

Thanks for working on this @lalitb! Great work!

…ecoder coverage, require user_events_linux_smoke in CI
@lalitb
Copy link
Copy Markdown
Member Author

lalitb commented May 11, 2026

LGTM overall. I left a comment about including the smoke test in rust-required-status-check.

Thanks for working on this @lalitb! Great work!

Thanks @utpilla for the thorough review! Addressed all remaining points in e01f767

Comment thread rust/otap-dataflow/configs/user-events-tracefs-debug.yaml
Comment thread rust/otap-dataflow/configs/user-events-tracefs-debug.yaml
Comment thread rust/otap-dataflow/crates/contrib-nodes/src/receivers/user_events_receiver/mod.rs Outdated
@lalitb
Copy link
Copy Markdown
Member Author

lalitb commented May 13, 2026

@copilot resolve the merge conflicts in this pull request

Copy link
Copy Markdown
Contributor

@jmacd jmacd left a comment

Choose a reason for hiding this comment

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

This is great to see. I would request that for the many TODOs in this code that we open issues to explain -- I'm curious for more information about them all.

@jmacd jmacd enabled auto-merge May 13, 2026 17:43
@jmacd jmacd added this pull request to the merge queue May 13, 2026
Merged via the queue into open-telemetry:main with commit 4fced8c May 13, 2026
85 of 86 checks passed
guancioul pushed a commit to guancioul/otel-arrow that referenced this pull request May 16, 2026
# Change Summary

Split out from the original combined PR open-telemetry#2717.

  Adds a contrib receiver for Linux user_events tracepoints.

  The receiver supports two decode formats:
- `tracefs`: generic Linux tracepoint decoding based on the static
schema exposed in tracefs format files.
- `event_header`: decodes self-describing EventHeader payloads.
EventHeader comes from the Microsoft LinuxTracepoints-Rust project, but
is open and usable by any producer.

The receiver uses `one_collect` for `perf`/`user_events` collection, and
supports single or multiple subscriptions, batching, late registration,
and basic receiver metrics. It is behind the `userevents-receiver`
feature flag.

Also adds a Linux CI smoke test that registers and reads both tracefs
and EventHeader user_events tracepoints when kernel support is
available.


## What issue does this PR close?

* Closes open-telemetry#2698

## How are these changes tested?

Added Linux CI smoke test

## Are there any user-facing changes?

Yes, a receiver.

---------

Co-authored-by: Utkarsh Umesan Pillai <66651184+utpilla@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-repo Repository maintenance, build, GH workflows, repo cleanup, or other chores lang:rust Pull requests that update Rust code

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Proposal: Add Linux user_events Receiver for Telemetry from Applications Co-Located with the Collector

7 participants