Why do containers need their own monitoring layer?
Docker containers share the host kernel, so a problem in one container can affect every other workload on the same server. A container that leaks memory will eventually push the host into swap or trigger the OOM killer. A crash-looping container will keep restarting silently while your app serves errors.
Host metrics alone will not tell you which container is responsible. You need per-container data alongside server health monitoring so you can connect a CPU spike on the host to a specific container before users notice.
- •Per-container CPU and memory consumption
- •Container restart counts and exit codes
- •Whether a container is running, stopped or crash-looping
- •Host CPU, load average, disk I/O and memory pressure
- •Network I/O per container for unusual spikes
What thresholds and signals actually matter for Docker memory usage?
Docker memory limits are set per container, but the host has a fixed total. The useful signals are:
- •Container memory usage approaching its limit (above 80% of the limit is a warning; above 90% is urgent)
- •Host memory available dropping below 10% with no container limit set, which is a misconfiguration risk
- •Swap usage climbing, which means containers are already overflowing RAM
- •OOM kill events in kernel logs (dmesg or /var/log/syslog), which mean data may already be lost
- •Restart count incrementing more than once in a short window, which indicates a crash loop
You can inspect live container memory from the host without any agent:
docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}\t{{.MemPerc}}\t{{.CPUPerc}}"That gives you a snapshot. For ongoing server availability monitoring you need something that records this over time and alerts when a threshold is crossed or a container disappears.
What should a Docker monitoring tool do that plain host monitoring does not?
A tool that only watches the Linux host will show you aggregate CPU and memory, but it will not tell you which container is the source, or that a container exited with code 137 (OOM killed). A good Docker-aware monitoring tool adds:
- •Auto-discovery of running containers without manual configuration
- •Alerts when a named container stops or enters a restart loop
- •Per-container metrics that survive container restarts and name changes
- •Correlation between host pressure and the container causing it
- •Log summaries from container stdout/stderr so you do not have to SSH in to read them
If you run other workloads alongside Docker such as PM2 Node apps, Laravel queue workers, or nginx vhosts, those should appear in the same view. Switching tools per workload type creates blind spots. See what Linux server monitoring should cover for a wider checklist of what a single agent should handle.
How Opservo handles Docker alongside the rest of the server
Opservo is the AI ops engineer for teams without an SRE: plain-English server monitoring with one-click fixes. The agent is a single static Go binary under 15 MB. It installs in one command and opens no inbound ports; all traffic is outbound HTTPS with HMAC signatures.
curl -sSL https://api.getopservo.com/install.sh | sudo bashWithin five minutes of install, Opservo auto-discovers running Docker containers alongside systemd services, PM2 apps, Supervisor programs, nginx vhosts, Redis, MySQL, PostgreSQL, and Laravel, WordPress, Node, Django, FastAPI and PHP apps. You configure nothing manually.
For Docker specifically: Opservo alerts when a container stops or crash-loops, tracks per-container resource usage, and correlates container behaviour with host pressure. The Opservo Health Standard scores each server 0-100 across Performance, Security, Storage, Reliability, Maintenance, Network and Configuration. Every lost point names the rule, the threshold, the current value and the fix. It is a rule engine, not an AI guess.
On paid plans, learned baselines for CPU, memory and load alert you when behaviour is unusual for that specific hour of the day, without you setting thresholds. If the AI recommends a fix, you approve it first; every command is audited. For agencies and MSPs running fleets of servers, the Agency plan at ₹799 per server per month adds multi-tenant white-label workspaces and per-client status pages with a 10-server minimum.
If you are concerned about what the agent can and cannot do on your servers, the guide on monitoring agents and inbound ports explains the security model in detail.
What external checks should complement container monitoring?
Internal container health does not tell you whether your service is reachable from the internet. External monitoring checks the user-facing reality independently of what the agent sees inside the host.
- •HTTP/HTTPS checks against each public endpoint, with status code and response-time thresholds
- •SSL expiry alerts 30 and 7 days before a certificate lapses
- •TCP checks for non-HTTP services such as a database exposed to a private network
- •DNS checks to catch misconfigurations after a deployment
- •Cron heartbeat monitoring to detect a containerised scheduled job that stopped firing
Server availability monitoring only gives you the full picture when you combine the agent view (what is happening inside) with external checks (what users actually experience). Incidents, on-call rotations and escalation policies tie both together when something goes wrong overnight.
Last updated 2026-11-12.