Skip to content

Conversation

@andborja
Copy link
Contributor

Add internal telemetry configurable prometheus exporter.

@andborja andborja requested a review from a team as a code owner December 23, 2025 23:36
@github-actions github-actions bot added the rust Pull requests that update Rust code label Dec 23, 2025
@codecov
Copy link

codecov bot commented Dec 23, 2025

Codecov Report

❌ Patch coverage is 92.59259% with 22 lines in your changes missing coverage. Please review.
✅ Project coverage is 84.06%. Comparing base (1af4d28) to head (722c935).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1691      +/-   ##
==========================================
- Coverage   84.08%   84.06%   -0.02%     
==========================================
  Files         467      469       +2     
  Lines      137359   137651     +292     
==========================================
+ Hits       115500   115721     +221     
- Misses      21325    21396      +71     
  Partials      534      534              
Components Coverage Δ
otap-dataflow 85.32% <92.59%> (-0.04%) ⬇️
query_abstraction 80.61% <ø> (ø)
query_engine 90.39% <ø> (ø)
syslog_cef_receivers ∅ <ø> (∅)
otel-arrow-go 53.50% <ø> (ø)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.


let response = Response::builder()
.status(StatusCode::OK)
.header("Content-Type", "text/plain; version=0.0.4; charset=utf-8")
Copy link
Member

Choose a reason for hiding this comment

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

we may have to support openmetrics format in the future. Not something for this PR.

let registry = Registry::new();
registry
.register(Box::new(
prometheus::Counter::new("test_counter", "A test counter").unwrap(),
Copy link
Member

Choose a reason for hiding this comment

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

lets use OpenTelemetry counter to properly test the integration. Otherwise, we are just testing prometheus crate mostly here...

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This is testing the handler as a unit, that receives the registry as parameter. It is not an integration test.

Copy link
Contributor

@drewrelmas drewrelmas left a comment

Choose a reason for hiding this comment

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

Only nit is keeping config/README.md up to date with support for prometheus

Copy link
Member

@cijothomas cijothomas left a comment

Choose a reason for hiding this comment

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

LGTM. One thing to address soon is how this interacts with existing prometheus metrics endpoint (https://github.com/open-telemetry/otel-arrow/blob/main/rust/otap-dataflow/crates/admin/src/telemetry.rs#L209)

Need some discussions to get consensus on the correct path we want to pursue.

Copy link
Contributor

@lquerel lquerel left a comment

Choose a reason for hiding this comment

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

How does this PR align with Joshua’s PR #1672?

@andborja
Copy link
Contributor Author

How does this PR align with Joshua’s PR #1672?

It is a separate use case. This is just another exporter of the SDK integration. Internal telemetry routing is a different approach on how to route internal telemetry to a pipeline. That PR is more aligned with (second phase) #1663

Copy link
Contributor

@lquerel lquerel 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 the work on this PR. I want to clarify that I'm approving it with reservations.

I am strongly in favor of using our pipeline engine to report our internal telemetry (more aligned with #1672 ). I see multiple advantages in this approach:

  • it provides strong motivation to develop fundamental exporters, such as an OTAP-based Prometheus exporter,
  • it enables native support for OTAP and, in the future, experimentation with protocol extensions to natively support multivariate metrics, which we already support internally,
  • it makes it possible to leverage our future processing language, OPL, on our own internal telemetry.

Important: integrating Prometheus support via the SDK must not lead to the removal of the existing /metrics endpoint. F5 currently uses this endpoint (JSON and compact JSON formats) because of its optimized support for multivariate metrics. It is fine to remove the Prometheus format from this endpoint if desired.

Looking ahead, I think this type of development should be discussed upstream to avoid this kind of duplication. I'm fully aware that I've been absent from the last two to three SIG meetings, so I take my share of responsibility for that.

@jmacd @drewrelmas @albertlockett for visibility

@lquerel lquerel added this pull request to the merge queue Jan 3, 2026
Merged via the queue into open-telemetry:main with commit 2584e4b Jan 3, 2026
43 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

rust Pull requests that update Rust code

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

4 participants