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.4.0.tar.gz (8.4 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.4.0-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ddog_monitoring-0.4.0.tar.gz
  • Upload date:
  • Size: 8.4 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.4.0.tar.gz
Algorithm Hash digest
SHA256 4d34b754c0c590733e8615ccc1f7ca268b9ff104344e587ec37d9eb98e97cc22
MD5 e32398595549f51ade8d26525cfb991a
BLAKE2b-256 0ccf0d0aa621d170e08bda0667cc9f40819bea23f5834e98cf123113e0ade003

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ddog_monitoring-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bc8ac4454c7d269a9140b426a72efc088b227c3e3cbdd66d8bf8557845529c61
MD5 6f0a8624f8a2d25dbbccf94d2c26bf1a
BLAKE2b-256 3cb2264ebb598631102f052e59a322e6680a79cfc49b66de6d0c35fc8e105433

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