Lightweight wrapper around OpenTelemetry core APIs
Project description
DTA Observability
A lightweight wrapper around OpenTelemetry for Python applications.
Overview
DTA Observability simplifies the use of OpenTelemetry by providing a streamlined interface for instrumentation. It handles configuration of tracing, metrics, and logging with minimal setup.
Features
- Single function initialization of all telemetry components
- Automatic instrumentation for Flask, FastAPI, Celery, and other frameworks
- Structured logging with trace context correlation
- Function decoration for easy span creation
- System and application metrics collection
- Support for OTLP, GCP Cloud, and console exporters
- Automatic resource detection
- Configuration via parameters or environment variables
Installation
pip install dta-observability
Or with Poetry:
poetry add dta-observability
Basic Usage
import dta_observability
from dta_observability import get_logger, traced
# Initialize telemetry
dta_observability.init_telemetry(
service_name="my-service",
service_version="1.0.0",
otlp_endpoint="http://otel-collector:4317",
exporter_type="otlp", # Options: "otlp", "console", "gcp"
)
# Get a logger
logger = get_logger("my-service")
# Use the traced decorator
@traced(name="my_function")
def my_function():
logger.info("Doing work")
return "result"
Framework Integration
Flask
from flask import Flask
import dta_observability
app = Flask(__name__)
dta_observability.init_telemetry(
service_name="flask-service",
flask_app=app
)
FastAPI
from fastapi import FastAPI
import dta_observability
app = FastAPI()
dta_observability.init_telemetry(
service_name="fastapi-service",
fastapi_app=app
)
Celery
from celery import Celery
import dta_observability
app = Celery("tasks")
dta_observability.init_telemetry(
service_name="worker-service",
celery_app=app
)
GCP Integration
When using the GCP exporter type:
- For traces: Uses Cloud Trace exporter
- For metrics: Uses Cloud Monitoring exporter with
workload.googleapis.comprefix - For logs: Uses GCP log format when
log_formatis set to "gcp", sending logs to stdout in the proper format
To use GCP integration:
dta_observability.init_telemetry(
service_name="my-gcp-service",
exporter_type="gcp", # Uses GCP exporters for all signal types
log_format="gcp" # Formats logs for GCP
)
When log_format is set to "gcp", all logs will be formatted for Google Cloud Logging and sent to stdout, while metrics and traces will use their respective GCP exporters.
OTLP Integration
OTLP exporters send telemetry to an OpenTelemetry Collector:
dta_observability.init_telemetry(
service_name="my-otlp-service",
exporter_type="otlp",
otlp_endpoint="http://otel-collector:4317"
)
Configuration
Configuration options available in init_telemetry():
| Parameter | Environment Variable | Default | Description |
|---|---|---|---|
| service_name | SERVICE_NAME | unnamed-service | Name to identify the service |
| service_version | SERVICE_VERSION | 0.0.0 | Version of the service |
| service_instance_id | SERVICE_INSTANCE_ID | Unique identifier for this service instance | |
| resource_attributes | None | Additional resource attributes (dictionary) | |
| configure_auto_instrumentation | AUTO_INSTRUMENTATION_ENABLED | True | Whether to auto-instrument detected libraries |
| log_level | LOG_LEVEL | INFO | Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) |
| log_format | LOG_FORMAT | default | Log format type (default or gcp) |
| flask_app | None | Flask application instance to instrument | |
| fastapi_app | None | FastAPI application instance to instrument | |
| celery_app | None | Celery application instance to instrument | |
| safe_logging | SAFE_LOGGING | True | Whether to enable safe logging with complex data types |
| excluded_instrumentations | EXCLUDED_INSTRUMENTATIONS | None | Comma-separated list of instrumentations to exclude |
| otlp_endpoint | EXPORTER_OTLP_ENDPOINT | http://localhost:4317 | OTLP exporter endpoint URL |
| otlp_insecure | EXPORTER_OTLP_INSECURE | True | Whether to use insecure connection for OTLP |
| batch_export_delay_ms | BATCH_EXPORT_SCHEDULE_DELAY | 120000 | Milliseconds between batch exports |
| enable_resource_detectors | RESOURCE_DETECTORS_ENABLED | True | Whether to enable automatic resource detection |
| enable_logging_instrumentation | LOGGING_INSTRUMENTATION_ENABLED | True | Whether to enable logging instrumentation |
| propagators | OTEL_PROPAGATORS | w3c,gcp,tracecontext | Comma-separated list of context propagators |
| exporter_type | EXPORTER_TYPE | otlp | Default exporter type for all signals (otlp, console, or gcp) |
| traces_exporter_type | TRACES_EXPORTER_TYPE | otlp | Exporter type for traces (otlp, console, or gcp) |
| metrics_exporter_type | METRICS_EXPORTER_TYPE | otlp | Exporter type for metrics (otlp, console, or gcp) |
| logs_exporter_type | LOGS_EXPORTER_TYPE | otlp | Exporter type for logs (otlp, console, or gcp) |
| enable_traces | True | Whether to enable trace collection | |
| enable_metrics | True | Whether to enable metrics collection | |
| enable_logs | True | Whether to enable logs collection | |
| enable_system_metrics | SYSTEM_METRICS_ENABLED | True | Whether to enable system metrics collection |
Environment variables can also be prefixed with OTEL_ or DTA_ (e.g., DTA_SERVICE_NAME).
Examples
The examples directory contains sample applications demonstrating usage with different frameworks.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dta_observability-0.0.12.tar.gz.
File metadata
- Download URL: dta_observability-0.0.12.tar.gz
- Upload date:
- Size: 35.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.10 Linux/6.11.0-1012-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5caca9492d25358f173915d058991b84572ca5057db50f8e12085cfa31da91df
|
|
| MD5 |
99808146b1997e493b35ec0f05131838
|
|
| BLAKE2b-256 |
4354954f1d6c8b18b19a02afc0972796ff530f27e1ef8e4377290de663dd252c
|
File details
Details for the file dta_observability-0.0.12-py3-none-any.whl.
File metadata
- Download URL: dta_observability-0.0.12-py3-none-any.whl
- Upload date:
- Size: 46.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.10 Linux/6.11.0-1012-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab990935690bd23e62ec9f3789665880a06612a821634d34db6d247d20b3ad25
|
|
| MD5 |
a3fd220d69ef5ce28f9eb3cd69b3d05c
|
|
| BLAKE2b-256 |
f17a37d23505a058e78c97b2f2ef3f2c6016bbafaf9366738b91842f77b5c3bf
|