Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
b844ccc
Remove redundant metrics
lquerel Dec 31, 2025
5b379ae
Add SEMANTIC_CONVENTIONS_GUIDE.md
lquerel Dec 31, 2025
2d01d29
Organize telemetry documentation
lquerel Jan 4, 2026
f70bfb3
Update entity-model.md
lquerel Jan 4, 2026
6ec0052
Update entity-model.md
lquerel Jan 4, 2026
56ef0fe
Update entity-model.md
lquerel Jan 4, 2026
e74191c
Update entity-model.md
lquerel Jan 4, 2026
44d2b98
Update README.md
lquerel Jan 4, 2026
bf8bc95
Add metrics-guide.md
lquerel Jan 4, 2026
d7e4720
Update README.md
lquerel Jan 4, 2026
a58942a
Update metrics-guide.md
lquerel Jan 5, 2026
43f5788
Update events-guide.md
lquerel Jan 6, 2026
16b8bb4
Update telemetry guides
lquerel Jan 6, 2026
e375cf1
Update telemetry README.md
lquerel Jan 6, 2026
7e7b7b2
Several updates in the document based on feedback
lquerel Jan 6, 2026
a7a14f7
Fix markdown issues
lquerel Jan 6, 2026
529047c
Add stability, compatibility, safety recommendations
lquerel Jan 6, 2026
2a72f07
Add 3 new guides on attributes, stability, and security/privacy
lquerel Jan 6, 2026
348fac4
Identify implementation gaps
lquerel Jan 6, 2026
96105e8
Remove content duplication
lquerel Jan 6, 2026
06c9b29
Clarify tracing status
lquerel Jan 6, 2026
51303e4
Fix markdown issues
lquerel Jan 6, 2026
986c300
Additional edits in the doc for improving consistency and clarity
lquerel Jan 6, 2026
c8d10bf
Unify title styles
lquerel Jan 7, 2026
161b209
Fix few missing/unclear points
lquerel Jan 7, 2026
ba507ee
Merge branch 'main' into metrics-cleanup
lquerel Jan 7, 2026
d69fb41
Few minor changes in the README.md
lquerel Jan 7, 2026
918233a
Few minor changes in the main README.md
lquerel Jan 7, 2026
4fe4bb3
Update admin endpoints security requirements
lquerel Jan 7, 2026
a493c22
Update rust/otap-dataflow/docs/telemetry/security-privacy-guide.md
lquerel Jan 8, 2026
91022dd
Merge branch 'main' into metrics-cleanup
lquerel Jan 8, 2026
57e4f67
Take into account all feedback
lquerel Jan 8, 2026
2a825de
Fix markdown issues
lquerel Jan 8, 2026
3642d55
Fix markdown issues
lquerel Jan 8, 2026
c709fd1
Fix markdown issues
lquerel Jan 8, 2026
4d676c5
Fix markdown issues
lquerel Jan 8, 2026
9831aab
Fix markdown issues
lquerel Jan 8, 2026
2bb7677
Fix markdown issues
lquerel Jan 8, 2026
bd82699
Merge branch 'main' into metrics-cleanup
lquerel Jan 8, 2026
c284533
Fix clippy issues
lquerel Jan 8, 2026
4f67d3b
Merge remote-tracking branch 'origin/metrics-cleanup' into metrics-cl…
lquerel Jan 8, 2026
3e1884f
Fix unit test
lquerel Jan 8, 2026
a5ec1ee
Fix unit test
lquerel Jan 8, 2026
87ffa22
Fix unit test
lquerel Jan 8, 2026
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
5 changes: 3 additions & 2 deletions rust/otap-dataflow/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# OTAP Dataflow Library
# OTAP Dataflow Engine

[![build](https://github.com/open-telemetry/otel-arrow/actions/workflows/rust-ci.yml/badge.svg)](https://github.com/open-telemetry/otel-arrow/actions/workflows/rust-ci.yml)
[![build](https://github.com/open-telemetry/otel-arrow/actions/workflows/rust-audit.yml/badge.svg)](https://github.com/open-telemetry/otel-arrow/actions/workflows/rust-audit.yml)
Expand All @@ -10,7 +10,7 @@

## Overview

The OTAP Dataflow library is a set of core Rust crates which combine
The OTAP Dataflow Engine is a set of core Rust crates which combine
to produce an OpenTelemetry pipeline support, for use as an embedded
software component, providing a framework for collecting OpenTelemetry
data.
Expand Down Expand Up @@ -337,6 +337,7 @@ docker build --build-context otel-arrow=../../ -f Dockerfile -t df_engine .
## Contributing

- [Contribution Guidelines](CONTRIBUTING.md)
- [Internal Telemetry Guidelines](docs/telemetry/README.md)
- Code of Conduct (TBD)

Before submitting a PR, please run the following commands:
Expand Down
25 changes: 2 additions & 23 deletions rust/otap-dataflow/crates/otap/src/attributes_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -299,21 +299,12 @@ impl local::Processor<OtapPdata> for AttributesProcessor {
_ => Ok(()),
},
Message::PData(pdata) => {
if let Some(m) = self.metrics.as_mut() {
m.msgs_consumed.inc();
}

// Fast path: no actions to apply
if self.is_noop() {
let res = effect_handler
.send_message(pdata)
.await
.map_err(|e| e.into());
if res.is_ok() {
if let Some(m) = self.metrics.as_mut() {
m.msgs_forwarded.inc();
}
}
return res;
}

Expand Down Expand Up @@ -354,16 +345,10 @@ impl local::Processor<OtapPdata> for AttributesProcessor {
}
}

let res = effect_handler
effect_handler
.send_message(OtapPdata::new(context, records.into()))
.await
.map_err(|e| e.into());
if res.is_ok() {
if let Some(m) = self.metrics.as_mut() {
m.msgs_forwarded.inc();
}
}
res
.map_err(|e| e.into())
}
}
}
Expand Down Expand Up @@ -1171,8 +1156,6 @@ mod telemetry_tests {
tokio::time::sleep(std::time::Duration::from_millis(50)).await;

// Inspect current metrics; fields with non-zero values should be present
let mut found_consumed = false;
let mut found_forwarded = false;
let mut found_renamed_entries = false;
let mut found_deleted_entries = false;
let mut found_domain_signal = false;
Expand All @@ -1181,8 +1164,6 @@ mod telemetry_tests {
if desc.name == "attributes.processor.metrics" {
for (field, v) in iter {
match (field.name, v.to_u64_lossy()) {
("msgs.consumed", x) if x >= 1 => found_consumed = true,
("msgs.forwarded", x) if x >= 1 => found_forwarded = true,
("renamed.entries", x) if x >= 1 => found_renamed_entries = true,
("deleted.entries", x) if x >= 1 => found_deleted_entries = true,
("domains.signal", x) if x >= 1 => found_domain_signal = true,
Expand All @@ -1192,8 +1173,6 @@ mod telemetry_tests {
}
});

assert!(found_consumed, "msgs.consumed should be >= 1");
assert!(found_forwarded, "msgs.forwarded should be >= 1");
assert!(found_renamed_entries, "renamed.entries should be >= 1");
assert!(found_deleted_entries, "deleted.entries should be >= 1");
assert!(found_domain_signal, "domains.signal should be >= 1");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,6 @@ use otap_df_telemetry_macros::metric_set;
#[metric_set(name = "attributes.processor.metrics")]
#[derive(Debug, Default, Clone)]
pub struct AttributesProcessorMetrics {
/// PData messages consumed by this processor.
#[metric(unit = "{msg}")]
pub msgs_consumed: Counter<u64>,

/// PData messages forwarded by this processor.
#[metric(unit = "{msg}")]
pub msgs_forwarded: Counter<u64>,

Comment on lines -13 to -20
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Removed because redundant with the channel metrics.

Copy link
Member

Choose a reason for hiding this comment

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

suggestion: Its easier from review standpoint, to keep PRs more focused. Since this PR is adding telemetry guidelines doc, lets stick with that. Cleaning up metrics can be own PR.

/// Number of failed transform attempts.
#[metric(unit = "{op}")]
pub transform_failed: Counter<u64>,
Expand Down
12 changes: 2 additions & 10 deletions rust/otap-dataflow/crates/otap/src/transform_processor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,6 @@ impl Processor<OtapPdata> for TransformProcessor {
}
},
Message::PData(pdata) => {
self.metrics.msgs_consumed.inc();
let (context, payload) = pdata.into_parts();
let payload = if !self.should_process(&payload) {
// skip handling this pdata
Expand All @@ -200,8 +199,7 @@ impl Processor<OtapPdata> for TransformProcessor {

effect_handler
.send_message(OtapPdata::new(context, payload))
.await
.inspect(|_| self.metrics.msgs_forwarded.inc())?;
.await?;
}
};

Expand Down Expand Up @@ -347,17 +345,13 @@ mod test {
// Allow the collector to pull from the channel
tokio::time::sleep(std::time::Duration::from_millis(50)).await;

let mut msgs_consumed = 0;
let mut msgs_forwarded = 0;
let mut msgs_transformed = 0;
let mut msgs_transform_failed = 0;
registry.visit_current_metrics(|desc, _attrs, iter| {
if desc.name == "transform.processor.metrics" {
if desc.name == "transform.processor" {
for (field, v) in iter {
let val = v.to_u64_lossy();
match field.name {
"msgs.consumed" => msgs_consumed += val,
"msgs.forwarded" => msgs_forwarded += val,
"msgs.transformed" => msgs_transformed += val,
"msgs.transform.failed" => msgs_transform_failed += val,
_ => {}
Expand All @@ -366,8 +360,6 @@ mod test {
}
});

assert_eq!(msgs_consumed, 1);
assert_eq!(msgs_forwarded, 1);
assert_eq!(msgs_transformed, 1);
assert_eq!(msgs_transform_failed, 0)
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,9 @@ use otap_df_telemetry::instrument::Counter;
use otap_df_telemetry_macros::metric_set;

/// Metrics for the TransformProcessor node.
#[metric_set(name = "transform.processor.metrics")]
#[metric_set(name = "transform.processor")]
#[derive(Debug, Default, Clone)]
pub struct Metrics {
/// PData messages consumed by this processor.
#[metric(unit = "{msg}")]
pub msgs_consumed: Counter<u64>,

/// PData messages forwarded by this processor.
#[metric(unit = "{msg}")]
pub msgs_forwarded: Counter<u64>,

Comment on lines -13 to -20
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Removed because redundant with the channel metrics.

/// Number of messages successfully transformed.
#[metric(unit = "{msg}")]
pub msgs_transformed: Counter<u64>,
Expand Down
5 changes: 5 additions & 0 deletions rust/otap-dataflow/crates/telemetry/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Telemetry SDK (schema-first, multivariate, NUMA-aware)

Status: draft under active development.

A low-overhead, NUMA-aware telemetry SDK that turns a declarative schema into a
type-safe Rust API for emitting richly structured, multivariate metrics. It is
designed for engines that run a thread-per-core and require predictable latency
Expand Down Expand Up @@ -62,3 +64,6 @@ See the [telemetry-macros crate](../telemetry-macros) for details.
- NUMA-aware aggregation.

![Architecture Phase 2](assets/Metrics%20Phase%202.svg)

Note: The recent telemetry guidelines defined in `/docs/telemetry` are
still being implemented in this SDK. Expect changes and improvements over time.
Loading
Loading