Skip to main content

Lightweight, framework-agnostic Python library for sending metrics to Datadog, SumoLogic, or Console. Lambda/Zappa-ready with live config support.

Project description

ddog-monitoring

A lightweight, framework-agnostic Python library for sending metrics to Datadog, SumoLogic, or a local Console output. Designed for use in Django, FastAPI, or any Python app — including AWS Lambda / Zappa deployments.

Installation

pip install ddog-monitoring

Quick Start

from monitoring.client import MonitoringFacade
from monitoring.config import MonitoringConfig

# Configure once at startup
MonitoringFacade.configure(MonitoringConfig(
    provider="datadog",
    datadog_api_key="your-api-key",
    datadog_app_key="your-app-key",
    datadog_hostname="your-host",
))

# Use anywhere
provider = MonitoringFacade.get_instance()
provider.send("api.request", value=1, metric_type="count", tags=["env:prod"])

Providers

Provider Config keys required
console (none) — prints metrics to stdout
datadog datadog_api_key, datadog_app_key, datadog_hostname
sumologic sumologic_url

Django + AWS Lambda / Zappa Usage

For Django apps, call configure() once in AppConfig.ready(). Pass a callable factory (lambda) instead of a static config so that django-constance value changes are picked up automatically on warm Lambda starts — without a redeploy.

# main_app/apps.py
from django.apps import AppConfig

class MainAppConfig(AppConfig):
    name = "main_app"

    def ready(self):
        from constance import config
        from monitoring.client import MonitoringFacade
        from monitoring.config import MonitoringConfig

        MonitoringFacade.configure(lambda: MonitoringConfig(
            provider=config.MONITORING_PROVIDER,
            datadog_api_key=config.DATADOG_API_KEY,
            datadog_app_key=config.DATADOG_APP_KEY,
            datadog_hostname=config.DATADOG_HOSTNAME,
            sumologic_url=config.SUMOLOGIC_URL,
        ))

Create a thin accessor module so views, management commands, and middleware never import MonitoringFacade directly:

# main_app/monitor.py
from monitoring.client import MonitoringFacade

def get_monitor():
    return MonitoringFacade.get_instance()
# views.py
from .monitor import get_monitor

def my_view(request):
    get_monitor().send("api.hit", value=1, metric_type="count", tags=["endpoint:my_view"])

How warm-start caching works

On every get_instance() call the library fetches the current config (via your factory) and compares it using Pydantic field equality. The provider is only recreated when config actually changes — otherwise the cached instance is reused immediately, keeping warm starts fast.

Decorators

Track function execution time and errors automatically:

from monitoring.decorators import track_metric

@track_metric("my_function")
def my_function():
    ...

License

MIT

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

ddog_monitoring-0.3.0.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

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

ddog_monitoring-0.3.0-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file ddog_monitoring-0.3.0.tar.gz.

File metadata

  • Download URL: ddog_monitoring-0.3.0.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for ddog_monitoring-0.3.0.tar.gz
Algorithm Hash digest
SHA256 d63be1bbe8e929898db9c25ecec9852a209d998e7c907a78a91ee34b44bab454
MD5 31609a5db99b6cfd3d5b210daa9c925b
BLAKE2b-256 ad012c4e0cc2b73862f4db451ca0512154de5843443746222a2c521f155a19e6

See more details on using hashes here.

File details

Details for the file ddog_monitoring-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ddog_monitoring-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5a72a601cb68de98f2c36227e72b1f8c63399bdd82c40f353461cdab230ff172
MD5 9b9375ec92e3ef571ac776e006fe5252
BLAKE2b-256 2ecea766e7a0528ac8353f0ea4955ee339b1dda3d4094c811d020aca14db18e5

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