Skip to main content

Lightweight FastAPI middleware for centralized API monitoring

Project description

tigzig-api-monitor

Lightweight FastAPI middleware for centralized API monitoring. Automatically captures request/response metrics and sends them to a central monitoring service.

Installation

pip install tigzig-api-monitor

Quick Start

from fastapi import FastAPI
from tigzig_api_monitor import APIMonitorMiddleware

app = FastAPI()

# Add the monitoring middleware
app.add_middleware(
    APIMonitorMiddleware,
    app_name="YOUR_APP_NAME",  # Required: identifies your app in logs
)

Configuration

Set these environment variables:

Variable Required Description
API_MONITOR_URL Yes URL of the monitoring service (e.g., https://logger.tigzig.com/log)
API_MONITOR_KEY Yes API key for authentication

Features

  • Non-blocking: Logs are sent asynchronously, never slowing down your API
  • Automatic capture: Request method, endpoint, status code, response time
  • Privacy-safe: IP addresses are hashed, not stored
  • Lightweight: Minimal dependencies (just httpx and starlette)
  • Fire-and-forget: Logging failures don't affect your API

What Gets Logged

Each request automatically captures:

  • App name (configured)
  • Endpoint path (no query params for privacy)
  • HTTP method (GET, POST, etc.)
  • Response status code
  • Response time in milliseconds
  • Client IP (sent to service, hashed before storage)
  • User-Agent header
  • Origin header
  • Referer path (no query params)

Example

import os
from fastapi import FastAPI
from tigzig_api_monitor import APIMonitorMiddleware

# Set environment variables (or use .env file)
os.environ["API_MONITOR_URL"] = "https://logger.tigzig.com/log"
os.environ["API_MONITOR_KEY"] = "your-api-key"

app = FastAPI()

# Add monitoring - that's it!
app.add_middleware(APIMonitorMiddleware, app_name="MY_BACKEND")

@app.get("/")
def read_root():
    return {"message": "Hello World"}

# Every request to this API will now be monitored automatically

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

tigzig_api_monitor-1.0.0.tar.gz (3.6 kB view details)

Uploaded Source

Built Distribution

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

tigzig_api_monitor-1.0.0-py3-none-any.whl (4.2 kB view details)

Uploaded Python 3

File details

Details for the file tigzig_api_monitor-1.0.0.tar.gz.

File metadata

  • Download URL: tigzig_api_monitor-1.0.0.tar.gz
  • Upload date:
  • Size: 3.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.6

File hashes

Hashes for tigzig_api_monitor-1.0.0.tar.gz
Algorithm Hash digest
SHA256 29232769bfd54b1f053949d651b0d4f41f91256f1885ab7890162f57993747d1
MD5 0a830c8ea0a6ced0e1a895479278c9fa
BLAKE2b-256 2d449b37687e8746a47b5352e92c457fcebe28fac4cd0e11c8f09e8ce88f6e2b

See more details on using hashes here.

File details

Details for the file tigzig_api_monitor-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for tigzig_api_monitor-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5cacb921aa0d90775f6563f235dee939d8fed4234cc6d1311ff895b2f010d946
MD5 9b8dedd1e4db21713ab77d65df24af27
BLAKE2b-256 350d853444db75538ec113c52d45ada48e203164a7e14f140fd512ab45924ee0

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