plone.observability

plone.observability logo

Kubernetes-style health probes, a pluggable Prometheus and JSON metrics endpoint, and optional OpenTelemetry tracing for Plone running in containers.

Plone’s built-in @@ok view answers OK whether the database is reachable or not, right up until the process is too busy to answer at all. That is not enough to orchestrate Plone in Kubernetes. plone.observability gives an orchestrator the real signals it needs: separate liveness, readiness, and startup probes on a dedicated port, plus a metrics endpoint your monitoring stack can scrape.

Key capabilities:

  • Liveness, readiness, and startup probes on a separate HTTP port that stays answerable when all Zope threads are busy

  • A pluggable @@metrics endpoint with Prometheus text and JSON output

  • Request, ZODB, and content metrics out of the box, with low-cardinality labels

  • Optional OpenTelemetry tracing that honors the standard OTEL_* environment variables

  • Extensible via the Zope Component Architecture: custom health checks, metric providers, and formatters

Requirements: Plone 6, Python 3.10+. OpenTelemetry tracing is an optional extra.

Documentation

Tutorials

Learning-oriented – step-by-step lessons to build skills.

Start here if you are new to plone.observability.

Tutorials
How-to guides

Goal-oriented – solutions to specific problems.

Use these when you need to accomplish something.

How-to guides
Reference

Information-oriented – configuration tables and API details.

Consult when you need exact facts.

Reference
Explanation

Understanding-oriented – architecture and design decisions.

Read to understand why the package works the way it does.

Explanation

Quick start

  1. Get plone.observability running in Docker

  2. Install it into your own Plone and wire the WSGI filters

  3. Point Kubernetes probes at the health server

  4. Understand the three health probes