Simply Accessible Container Performance Monitoring with SuperVisor

Observability of containers

Containerization is an awesome next-step forward when it comes to deploying services and applications reliably without needing to worry about the intricacies of adding dependencies and configuring environments. One can easily deploy, utilize, upgrade and remove these with just a few lines of commands and the unintrusiveness nature of the containers is almost very rewarding for the sysadmins — now that they do not have to worry about taking care of the residual configurations!

Although observability of such containers is an entirely different story, due to the fact that every container is a disjoint system in its own right with a lot of configuration variables to consider, performance statistics to study and execution histories to read through. Having all such complexities to think about could potentially lead to the creation of a very convoluted tool that may make system monitoring look overwhelming to the users — that is something I tried to address with this service of mine.

The earliest commit made to this project was about three months ago, but it has been something I have been conceptualizing forever. SuperVisor is a combination of two services — the first is a driver service which monitors the container station system deeply and dispatches metrics, while the second is a frontend service which takes up the metrics served by the former and parses them in an interactive and functional dashboard.

How do I set it up at my end?

You would really want to take it for a spin if you liked what you saw above. Setting up SuperVisor on a Docker station is literally as easy as following the provided three steps in sequence.

Step #1
Run the following commands to start up the driver service and take a note of sync URI, termsocket URI and passcode carefully.

docker run -d \
--restart unless-stopped \
--name supervisor-driver-service \
-p 8888:8888 \
-p 6969:6969 \
-v /var/run/docker.sock:/var/run/docker.sock \
t0xic0der/supervisor-driver-service:v1.1.0b-amd64
docker logs supervisor-driver-service ,---. . ,o
`---.. .,---.,---.,---.| |.,---.,---.,---.
|| || ||---'| \ / |`---.| ||
`---'`---'|---'`---'` `' ``---'`---'`
|
* Driver Service v1.1.0-beta
* IP version : 4
* Passcode : 6097A8C00A2BC97C
* Sync URI : http://0.0.0.0:8888/
* TermSocket URI : http://0.0.0.0:6969/
* Monitor service : Psutil v5.8.0
* Container service : DockerPy v4.4.1
* WebSocket service : Terminado v0.9.2
* Endpoint service : Falcon v2.0.0
* HTTP server : Werkzeug v1.0.1
* Running on http://0.0.0.0:8888/ (Press CTRL+C to quit)
* TermSocket started on port 6969

Step #2
Run the following command to start up the frontend service and head over to http://<HOSTNAME>:9696/using a browser of your choice.

docker run -d \
--restart unless-stopped \
--name supervisor-frontend-service \
-p 9696:9696 \
t0xic0der/supervisor-frontend-service:v1.1.0b-amd64

Step #3
Now enter the sync URI, termsocket URI and passcode which you acquired from the first step and enter them in the login page to get started. Do not copy the ones provided above as they are here just for representation.

You will be welcomed by the dashboard page which lists all the available containers, images, networks and volumes. From there on, I would recommend exploring further to see what SuperVisor is capable of!

In action

Here are some screenshots which might convince you to give it a try if you are not already 😁

Epilogue

Find the frontend service here https://hub.docker.com/r/t0xic0der/supervisor-frontend-service and the driver service here https://hub.docker.com/r/t0xic0der/supervisor-driver-service — images would be actively published here on every release.

As this is a beta testing release, bugs would be actively sorted out and features would be constantly added in — so criticisms, praise, advice and everything else are most welcome! If you like what you saw here, please go ahead and star these repositories to show your support and motivate me https://github.com/t0xic0der/supervisor-frontend-service/ and https://github.com/t0xic0der/supervisor-driver-service/.

Contributor at Fedora Project | Free and Open-Source Software Evangelist