Skip to main content

OpenTelemetry Wrapper

Python Tests

A comprehensive Python wrapper for OpenTelemetry that simplifies sending traces, metrics, and logs using the OTLP protocol.

Ask DeepWiki

Features

  • Unified API for traces, metrics, and logs
  • Simple configuration with reasonable defaults
  • Configurable endpoints for each signal type (traces, metrics, logs)
  • Distributed tracing with context propagation helpers
  • Multiple metric types (counters, gauges, histograms)
  • Error handling with graceful fallbacks
  • Singleton pattern ensures consistent resources across your application

Installation

pip install otel-wrapper

Or with Poetry:

poetry add otel-wrapper

Quick Start

from otel_wrapper.deps_injector import wrapper_builder

# Initialize the wrapper with your application name
telemetry = wrapper_builder("my-application")

# Create a trace
with telemetry.traces().span_in_context("my-operation") as (span, context):
    # Add span attributes
    span.set_attribute("operation.type", "example")
    
    # Create a log
    telemetry.logs().new_log(
        msg="Operation in progress", 
        tags={"operation": "my-operation"}, 
        level=20  # INFO level
    )
    
    # Record a metric
    telemetry.metrics().metric_increment(
        name="operations.count", 
        tags={"operation": "my-operation"}, 
        value=1.0
    )

Configuration

The wrapper can be configured using environment variables:

  • OTEL_EXPORTER_OTLP_ENDPOINT: Default endpoint for all signals
  • OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: Endpoint for traces
  • OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: Endpoint for metrics
  • OTEL_EXPORTER_OTLP_LOGS_ENDPOINT: Endpoint for logs
  • OTEL_LOG_LEVEL: Log level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
  • __SCOPE__: Application environment (defaults to "Production")

API Reference

Traces

# Create a simple span
span = telemetry.traces().new_span("my-span")
span.set_attribute("attribute.name", "value")
span.end()

# Use span as a context manager
with telemetry.traces().span_in_context("my-span") as (span, context):
    # Do something with the span
    pass

# Context propagation
headers = {}
telemetry.traces().inject_context_into_headers(headers)

# Extract context from headers
context = telemetry.traces().extract_context_from_headers(headers)

Metrics

# Increment a counter
telemetry.metrics().metric_increment(
    name="requests.count", 
    tags={"endpoint": "/api/users"}, 
    value=1.0
)

# Record a gauge value
telemetry.metrics().record_gauge(
    name="system.memory.usage", 
    tags={"host": "server-01"}, 
    value=1024.5
)

# Record a histogram value
telemetry.metrics().record_histogram(
    name="request.duration", 
    tags={"endpoint": "/api/users"}, 
    value=0.156
)

Logs

# Create a simple log
telemetry.logs().new_log(
    msg="User logged in", 
    tags={"user_id": "123"}, 
    level=20  # INFO level
)

# Get the logger directly
logger = telemetry.logs().get_logger()
logger.info("Message with structured data", extra={"key": "value"})

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Metadata

Release files for otel-wrapper 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for otel-wrapper 0.1.2
File Size Uploaded
otel_wrapper-0.1.2.tar.gz 8.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for otel-wrapper 0.1.2
File Interpreter ABI Platform
otel_wrapper-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 20.9 kB

Release files / otel_wrapper-0.1.2.tar.gz

Download URL otel_wrapper-0.1.2.tar.gz
Size 8.4 kB
Tags Source
SHA-256 checksum
How to use checksums
5bb482575fb0de2bdd3a21ae5ef7eff607dc46f6316df2224828a41f3328b76f
BLAKE2b-256 checksum
How to use checksums
4cdef4f5faf5141ada232a55bde0b4dfb64053d8e4144f39f0a57c0cef0a3d6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.6.1 CPython/3.9.23 Linux/6.11.0-1018-azure

Release files / otel_wrapper-0.1.2-py3-none-any.whl

Download URL otel_wrapper-0.1.2-py3-none-any.whl
Size 12.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
335eaadf033970db30b8e5c0981317b830915adc9c1fe411e68168d1d923376d
BLAKE2b-256 checksum
How to use checksums
503e557db53dff65a3e99127a25c116e6646ee1af20ad04365bd1caa3fedd5ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.6.1 CPython/3.9.23 Linux/6.11.0-1018-azure

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page