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).