BACK TO DIRECTORY

Klarsmith Ops Kit

by klarsmith

0.0
(0 ratings)

WordPress has no honest health endpoint. The front page, admin-ajax.php and the usual
health.php stubs all return 200 while the database is down, the object cache is gone, or
WordPress is serving its “database update required” interstitial. Every probe in common
use calls that pod ready.

Klarsmith Ops Kit gives a containerised WordPress site three things operators actually need:

  • Honest readinessGET /wp-json/ops/v1/readyz returns 200 only when the database
    answers, the schema matches the running core version, the object cache round-trips, and
    the uploads directory is writable. Anything else is a 503 with the failing check names.
    Liveness is deliberately left alone: a database outage must drain pods, never restart
    them.
  • Prometheus metricsGET /wp-json/ops/v1/metrics serves the text exposition
    format from a snapshot that wp ops collect writes to the object cache on a schedule.
    Nothing expensive runs on scrape. wp_ops_snapshot_age_seconds tells you when the
    collector has stopped. Pod-level series (wp_ops_pod_*) and site-level series
    (wp_ops_site_*) are split so replicas do not duplicate site numbers.
  • Structured JSON logs — with WP_OPS_LOG_JSON=true, PHP errors and fatals go to
    stderr as one JSON object per line, ready for a log pipeline.

The plugin fails closed. /metrics is disabled until a token is configured, and the
anonymous readiness response names failing checks without leaking detail.

Configuration is by environment variable, which is how containers are configured:

  • WP_OPS_TOKEN — bearer token for /metrics (Authorization: Bearer or
    X-Ops-Token). Unset disables the endpoint.
  • WP_OPS_SITE_NAMEsite label on JSON log records (metrics carry no site
    label; the scraper’s own labels identify the site).
  • WP_OPS_EXPECT_OBJECT_CACHE — fail readiness when no external object cache is active.
  • WP_OPS_REQUIRED_PLUGINS — comma-separated plugin files (dir/plugin.php) that
    must be active for readiness.
  • WP_OPS_REST_BYPASS_AUTH — set to false to stop the plugin allowing anonymous
    access to its own REST namespace.
  • WP_OPS_LOG_JSON — set to true to emit JSON log lines on stderr.

WP-CLI commands: wp ops check (exit 1 on any failing check), wp ops collect
(refresh the snapshot), wp ops metrics (print the exposition locally).

Source, issue tracker and Kubernetes manifests for probes, the collector CronJob and
scraping live at https://github.com/klarsmith/wp-ops-kit.

Plugin Details

Active Installs
0
Total Downloads
49
Version
0.1.7
Requires WP
6.4
Requires PHP
8.3
Tested Up To
7.1
Added
2026-09-10
Last Updated
2026-09-10 8:36am GMT

Ratings

5
0
4
0
3
0
2
0
1
0