Telemetry Manager
LLM-friendly telemetry abstraction layer for Arshai framework.
This module provides a well-behaved OTEL citizen implementation that:
1. Never creates TracerProvider/MeterProvider instances
2. Always uses get_tracer(“arshai”, version) pattern
3. Respects parent application’s configuration
4. Works with and without OTEL dependencies
5. Provides no-op implementations when OTEL is unavailable
Classes
-
arshai.observability.telemetry_manager.Meter
alias of NoOpMeter
-
class arshai.observability.telemetry_manager.NoOpInstrument[source]
Bases: object
-
add(value, attributes=None)[source]
-
record(value, attributes=None)[source]
-
class arshai.observability.telemetry_manager.NoOpMeter[source]
Bases: object
-
create_counter(**kwargs)[source]
-
create_histogram(**kwargs)[source]
-
create_up_down_counter(**kwargs)[source]
-
class arshai.observability.telemetry_manager.NoOpSpan[source]
Bases: object
-
set_attribute(key, value)[source]
-
set_status(status)[source]
-
record_exception(exception)[source]
-
class arshai.observability.telemetry_manager.NoOpTracer[source]
Bases: object
-
start_as_current_span(name, **kwargs)[source]
-
arshai.observability.telemetry_manager.Span
alias of NoOpSpan
-
class arshai.observability.telemetry_manager.SpanKind[source]
Bases: object
-
CLIENT = 'CLIENT'
-
class arshai.observability.telemetry_manager.Status(code, description='')[source]
Bases: object
-
__init__(code, description='')[source]
-
class arshai.observability.telemetry_manager.StatusCode[source]
Bases: object
-
ERROR = 'ERROR'
-
OK = 'OK'
-
class arshai.observability.telemetry_manager.TelemetryManager(config=None)[source]
Bases: object
LLM-friendly telemetry manager that respects parent OTEL configuration.
-
__init__(config=None)[source]
Initialize telemetry manager.
- Parameters:
config (Optional[PackageObservabilityConfig]) – Optional observability configuration
-
is_enabled()[source]
Check if telemetry is enabled and functional.
- Return type:
bool
-
is_metrics_enabled()[source]
Check if metrics collection is enabled.
- Return type:
bool
-
get_tracer()[source]
Get the tracer instance.
- Return type:
NoOpTracer
-
get_meter()[source]
Get the meter instance.
- Return type:
NoOpMeter
-
create_span(name, attributes=None, kind=None)[source]
Create a span with automatic context propagation.
- Parameters:
-
-
create_async_span(name, attributes=None, kind=None)[source]
Create an async span with automatic context propagation.
- Parameters:
-
-
create_counter(name, description, unit='1')[source]
Create a counter metric.
-
create_histogram(name, description, unit='1')[source]
Create a histogram metric.
-
create_up_down_counter(name, description, unit='1')[source]
Create an up-down counter metric.
-
set_span_attributes_safely(span, attributes)[source]
Safely set span attributes with error handling.
-
set_span_status_safely(span, success, error_message=None)[source]
Safely set span status with error handling.
-
record_exception_safely(span, exception)[source]
Safely record exception on span.
-
get_package_info()[source]
Get package information for telemetry.
- Return type:
Dict[str, str]
-
arshai.observability.telemetry_manager.Tracer
alias of NoOpTracer
Functions
-
arshai.observability.telemetry_manager.get_telemetry_manager(config=None)[source]
Get or create the default telemetry manager.
- Parameters:
config (Optional[PackageObservabilityConfig]) – Optional configuration (only used for first creation)
- Return type:
TelemetryManager
- Returns:
TelemetryManager instance
-
arshai.observability.telemetry_manager.reset_telemetry_manager()[source]
Reset the global telemetry manager (useful for testing).