Simply Accessible Container Performance Monitoring with SuperVisor

Akashdeep Dhar
4 min readMar 3, 2021

--

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.

Your personalized dashboard for monitoring your container stations

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.

Here’s an animated follow-up about how you can set up the driver service at your end

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 😁

Container listing with a variety of options to analyze, study and inspect them
Not just it monitors containers but it also monitors the system on which they run
Know about the entire revision history of an image without going to the registry
Granular process-state control for the container station system
Dynamically loading log display for containers with one-second refresh rate
Diagnose containers throughout by attaching a console as a web-terminal

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/.

--

--

Akashdeep Dhar
Akashdeep Dhar

Written by Akashdeep Dhar

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

Responses (1)