snippetdockerMinor
How do you monitor status of multiple docker containers?
Viewed 0 times
howyoudockerstatusmultiplemonitorcontainers
Problem
My home server has about 15 distinct services running, each represented by a Docker container. Depending on how the developers implemented the Dockerfile, some services have health checks, but most do not.
At the moment, I do not have a way to make sure these services remain healthy and running. I do have the
What I'd like is to know when they go down. Maybe an email that notifies me, so I can go fix the issue, instead of only finding out about the issue when a family member notifies me or when I try to use that service.
Is there a reasonable way to monitor multiple Docker containers in this way? Do I have to hand-write a bunch of scripts that do
At the moment, I do not have a way to make sure these services remain healthy and running. I do have the
restart: always setting set, but worst case this just means Docker endlessly restarts a server if it fails to start or crashes on startup for whatever reason. Or maybe a docker pull caused an issue during an update. There could be many reasons why these services do not start, or stop running during the day.What I'd like is to know when they go down. Maybe an email that notifies me, so I can go fix the issue, instead of only finding out about the issue when a family member notifies me or when I try to use that service.
Is there a reasonable way to monitor multiple Docker containers in this way? Do I have to hand-write a bunch of scripts that do
ps to check for process up time or something? Preferably an out-of-the-box solution would be great. Note I use Docker Compose for everything, and I only have 1 physical machine where I run these services, so I don't need to worry about complex setups.Solution
Note: answer based only on docs, I didn't play with docker much.
If you choose scripting you could pick a higher layer than just
Stream container events for every container in the project.
Description
Get real time events from the server
You'd be looking for the
Use
events differ per Docker object type.
Object types
CONTAINERS
The event appears to be generated regardless of the restart policy (from Docker Events Explained):
But you're right, there's a ton of monitoring tools out there, I also suspect some already do what you're seeking.
Just aimlessly wandering through those links I got to Implementing Docker event monitoring from scratch:
What else? I can create alerts on them. The next time any of my
containers decide to puke and die, I can get an SMS message about
their doomed state.
If you choose scripting you could pick a higher layer than just
ps, based on either:- the
docker-compose eventsCLI:
Usage: events [options] [SERVICE...]
Options:
--json Output events as a stream of json objectsStream container events for every container in the project.
- the
docker eventsCLI:
Description
Get real time events from the server
You'd be looking for the
die event of the container(from Extended description):Use
docker events to get real-time events from the server. Theseevents differ per Docker object type.
Object types
CONTAINERS
die
The event appears to be generated regardless of the restart policy (from Docker Events Explained):
But you're right, there's a ton of monitoring tools out there, I also suspect some already do what you're seeking.
Just aimlessly wandering through those links I got to Implementing Docker event monitoring from scratch:
What else? I can create alerts on them. The next time any of my
containers decide to puke and die, I can get an SMS message about
their doomed state.
Code Snippets
Usage: events [options] [SERVICE...]
Options:
--json Output events as a stream of json objectsContext
StackExchange DevOps Q#6454, answer score: 3
Revisions (0)
No revisions yet.