Skip to main content

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:

  1. For traces: Uses Cloud Trace exporter
  2. For metrics: Uses Cloud Monitoring exporter with workload.googleapis.com prefix
  3. For logs: Uses GCP log format when log_format is 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dta_observability-0.0.8.tar.gz (35.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dta_observability-0.0.8-py3-none-any.whl (46.2 kB view details)

Uploaded Python 3

File details

Details for the file dta_observability-0.0.8.tar.gz.

File metadata

  • Download URL: dta_observability-0.0.8.tar.gz
  • Upload date:
  • Size: 35.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.10 Linux/6.11.0-1013-azure

File hashes

Hashes for dta_observability-0.0.8.tar.gz
Algorithm Hash digest
SHA256 fcda8ced0465593b202c7907ea6c2fa9dc8a2e1fb97c03dc95e3472fa66ce414
MD5 b4326dea3a65b666dea8fa74e70cebac
BLAKE2b-256 d27061978cca01a5ee4257fc5a954f53579a3464b7c8c1f9533a1ccfebd7ceac

See more details on using hashes here.

File details

Details for the file dta_observability-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: dta_observability-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 46.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.10 Linux/6.11.0-1013-azure

File hashes

Hashes for dta_observability-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 a38de75cd21cc4a1622a06bc87fde2e3d9d37c3b5df9f46d23d7f1c0c782c3f8
MD5 7053aad56333ed7b39b31f9bb1872e86
BLAKE2b-256 4e49bcc6b41babd0e21b8b7e9b4caf2200f216d42564a41b9b2682f02cd11fdf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page