Expand description
OpenTelemetry integration for Term validation library.
This module provides telemetry configuration and utilities following the BYOT (Bring Your Own Tracer/Meter) pattern. Term does not initialize its own OpenTelemetry SDK - users must configure and pass in their tracer and optionally a meter.
§Feature Gate
All telemetry functionality is behind the telemetry feature flag to ensure
zero overhead when telemetry is not needed.
§Tracing
Term provides comprehensive distributed tracing with spans for:
- Validation suite execution
- Individual check execution
- Constraint evaluation
- Data source loading
§Metrics
When a meter is provided, Term collects the following metrics:
§Histograms
data.validation.duration- Duration of complete validation suite executiondata.validation.check.duration- Duration of individual validation checksdata.processing.load.duration- Time to load data for validationdata.validation.custom_metric- Custom business metrics from constraints
§Counters
data.validation.total- Total number of validation runsdata.validation.rows- Total number of rows processeddata.validation.failures- Total number of failed validationsdata.validation.checks.passed- Total number of passed checksdata.validation.checks.failed- Total number of failed checks
§Gauges
- Active validations (tracked internally)
data.validation.memory- Memory usage of validation process (Linux only)
§Examples
§Basic Tracing Only
ⓘ
use term_guard::telemetry::TermTelemetry;
use opentelemetry::trace::Tracer;
// User configures their own tracer
let tracer = opentelemetry_jaeger::new_agent_pipeline()
.with_service_name("my_validation_service")
.install_simple()?;
// Create telemetry configuration
let telemetry = TermTelemetry::new(tracer);
// Use with validation suite
let suite = ValidationSuite::builder("my_suite")
.with_telemetry(telemetry)
.build();§With Metrics
ⓘ
use term_guard::telemetry::TermTelemetry;
use opentelemetry::{global, trace::Tracer};
// User configures their own tracer and meter
let tracer = global::tracer("my_service");
let meter = global::meter("my_service");
// Create telemetry configuration with metrics
let telemetry = TermTelemetry::new(tracer)
.with_meter(&meter)?;
// Use with validation suite
let suite = ValidationSuite::builder("my_suite")
.with_telemetry(telemetry)
.build();Modules§
- utils
- Utility functions for telemetry integration.
Structs§
- Term
Span - regardless of whether the telemetry feature is enabled.
- Term
Telemetry - Configuration for Term’s telemetry integration.