Skip to main content

Monitoring & Observability

Effective monitoring is critical for identifying and diagnosing issues in production.

1. Structured Logging​

Framework M uses standard Python logging but supports structured, JSON-based outputs for better readability in log aggregators (ELK, Datadog, etc.).

  • Log Correlation: Use the request_id in every log message to trace requests through the system.
  • Context Injection: Include the user_id and tenant_id automatically using the UserContext provider in the FastAPI dependency hierarchy.

2. Health Checks (Liveness & Readiness)​

We provide standard health check endpoints (/health and /ready) that must be used for Kubernetes or other orchestrators.

  • /health: A basic liveness probe. Return 200 if the API can respond.
  • /ready: A readiness probe that checks for downstream dependencies (Database, Redis, etc.) by default. It can be extended with custom checks (like database migration verification) by registering plugins under the framework_m.readiness entrypoint group.

3. Metrics (Prometheus)​

Native metrics are exposed at the /metrics endpoint (if configured).

  • Request Counts: Track success/error rates per endpoint.
  • Latencies: Use histograms for request-response times (p50, p95, p99).
  • Queue Length: For background workers, monitor the Redis queue length as a proxy for labor pressure.

4. Distributed Tracing (OpenTelemetry)​

Support for distributed tracing can be enabled by providing an OTLPAdapter. This allows for visualizing the request journey across multiple services (Monolith vs. Microservices).