← Blog

October 17, 2026 · 6 min read

A running container is not a healthy service: an OpenClaw monitoring runbook

What Docker and Kubernetes health signals actually say, and how to turn them into a useful OpenClaw notification without making the agent your pager.

A container can be running while its application cannot serve a request. Before asking an OpenClaw agent to report container health, decide which signal you can observe: process state, Docker HEALTHCHECK, Kubernetes probe status, or a request from outside the workload. Each answers a different question. The Runbooks Container Health Monitor template sketches a check, but it is not a configured Docker or Kubernetes integration.

Translate the signal before writing an alert

Observed signalUseful interpretationWhat remains unknown
Container runningThe runtime has a live processWhether the application responds correctly
Docker HEALTHCHECK unhealthyThe configured command failed enough times to meet its retry policyWhether all user paths are broken
Kubernetes readiness failedThe pod should not receive normal service trafficWhether a restart would help
Kubernetes liveness failedThe kubelet may restart the container under its restart policyWhether users saw an outage
External request failedThat request failed from that vantage pointWhether every user or endpoint is affected

Docker's HEALTHCHECK has an explicit command, interval, timeout, start period, and retry count. Its unhealthy state reflects that configured check, not a universal application verdict. Kubernetes uses readiness to decide when a pod can serve traffic and liveness to decide when to restart it. Treat a readiness failure during startup differently from a sustained failure after a healthy period; record the probe and deployment context rather than flattening both into 'container down'.

A small acceptance test for the Runbooks template

The current Container Health Monitor listing says 'Every 5 minutes' and suggests querying a Docker or Kubernetes API, then alerting on stopped containers, restart loops, and resource usage. Its declared skills are web_fetch and message. Those words do not grant cluster credentials, supply a secure network path, or register a five-minute Automation. Before adopting it, specify the exact read-only source, the permission boundary, the schedule, and the actual notification destination.

  1. Pick one service and record its expected replica count, owner, and existing platform alert. If no health probe exists, distinguish process state from service readiness in the report.
  2. Expose only the minimum health/status data to the checker. Do not give a recurring summarizer a production Docker socket or broad cluster-admin access merely to read status.
  3. Create an explicit OpenClaw Automation and inspect its run record. A line in a HEARTBEAT.md template is an instruction, not proof of a registered schedule.
  4. Test a known healthy sample, a failed probe, and an unavailable monitoring source. The third case must say 'observation unavailable', not 'service healthy'.
  5. Route critical, actionable incidents through the existing platform pager. Let the agent add context and a link to the source of truth; verify both execution and delivery before relying on the notification.

Keep two clocks in the record

For every finding, keep the source observation time and the agent check time. A successful agent run reading an old snapshot does not establish current health. Record the service, environment, probe or endpoint, observed state, last transition, data age, and the follow-up owner. If a deployment is in progress, explain whether the result comes from a pod becoming unready, a restart, or an external request. This is a reporting format to implement and test, not a claim that the gallery template already produces it.

Start with the Container Health Monitor template if you need a checklist, then wire it to your actual status source. The useful outcome is a report that names the failing observation and its limits. A reassuring green run with no verified source observation is not a health check.

Inspect the Container Health Monitor template

Sources and further reading

More posts

October 14, 2026

OpenClaw database backup checks vs restore tests: what each proves

October 5, 2026

OpenClaw automation ran, but no message arrived: diagnose execution and delivery

October 2, 2026

OpenClaw SecretRefs for recurring workflows: a practical migration checklist

September 29, 2026

The scheduled blog queue ran dry: a runway check that catches it early

August 24, 2026

Agent workflow validation checklist before you reuse a template

August 21, 2026

Bounded background tasks for coding agents

August 18, 2026

Agent runbook status files that actually work

August 15, 2026

7 OpenClaw workflows worth running, and 5 that are not

August 12, 2026

The OpenClaw workflow security checklist we use before turning on tools

August 9, 2026

Your HEARTBEAT.md should be boring

August 6, 2026

How to build an OpenClaw automation that survives retries

August 3, 2026

OpenClaw cron vs heartbeat: the production rule that actually works

April 30, 2026

OpenClaw just shipped real voice agent calls. Here are 5 workflows worth setting up.

March 27, 2026

The best OpenClaw skills nobody knows about

March 25, 2026

Top AI agent workflow templates for developers in 2026

March 23, 2026

OpenClaw vs n8n: when to use each for agent automation

March 20, 2026

How to automate Make.com workflows with AI agents

March 18, 2026

Best n8n workflow templates for email automation

March 15, 2026

OpenClaw starter packs: the fastest way to a useful agent

March 12, 2026

How to build your own OpenClaw runbook from scratch

March 9, 2026

5 OpenClaw workflows that save 10 hours/week