Simply Accessible Container Performance Monitoring with SuperVisor
Tags: docker, devops, opensource, monitoring
Published: 2021-03-04 02:56:08

## 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 that monitors the container station system deeply and dispatches metrics, while the second is a frontend service that 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
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6qd0ildvvbwfraa5hen1.png)

---

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

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/or1xqwb80s53om7toaxy.gif)

**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-frontend-service \
  -p 9696:9696 \
  t0xic0der/supervisor-frontend-service:v1.1.0b-amd64 
```

```
docker logs supervisor-frontend-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 on 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

![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pmtf4tj70prkzluf4irh.png) 

### Not just it monitors containers but it also monitors the system on which they run

![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f8gajrl4ejecekzjzq6k.png) 

### Know about the entire revision history of an image without going to the registry

![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xsipkbvgcwvsrjpziws1.png) 

### Granular process-state control for the container station system

![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6ywgc9j1yyzt6nqbtbpy.png) 

### Dynamically loading log display for containers with one-second refresh rate

![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u80e685y8ex5f2qqf1vo.png) 

### Diagnose containers throughout by attaching a console as a web-terminal

![alt text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/d7xeyd8jb9qno5crgx11.png)

---

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