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.13.tar.gz (35.1 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.13-py3-none-any.whl (46.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: dta_observability-0.0.13.tar.gz
  • Upload date:
  • Size: 35.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.11 Linux/6.11.0-1018-azure

File hashes

Hashes for dta_observability-0.0.13.tar.gz
Algorithm Hash digest
SHA256 55b96f2cdbe044efbcbdc1f05f307810f4bb40b849a8c75f9355ccbd92c0368b
MD5 b90f6d0a4dc961b31ed77cde9bb2efdf
BLAKE2b-256 00199323a0f4f3cf5f56e8224396c1453bb84ce870c9a82049515841118f9d35

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for dta_observability-0.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 04d8717177b953a05c1aef0db069f3cf0c1c137fd8a04f2c493f70a0369e4f0c
MD5 a71b0c0f5048a5699640f9741ac9e8d4
BLAKE2b-256 bbfd3e42dd7a84bee5d200d55b41299de0ceefaf87376ce0871e69ed27866294

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