Module telemetry

Module telemetry 

Source
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 execution
  • data.validation.check.duration - Duration of individual validation checks
  • data.processing.load.duration - Time to load data for validation
  • data.validation.custom_metric - Custom business metrics from constraints

§Counters

  • data.validation.total - Total number of validation runs
  • data.validation.rows - Total number of rows processed
  • data.validation.failures - Total number of failed validations
  • data.validation.checks.passed - Total number of passed checks
  • data.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§

TermSpan
regardless of whether the telemetry feature is enabled.
TermTelemetry
Configuration for Term’s telemetry integration.