Pet project for monitoring the status of various APIs, servers in the form of a visual chart.


As the number of projects grows, it gets a little harder to keep an eye on them. Something got debugged somewhere. Some script worked out of order, etc. Besides, I'd like to see a clear scheme: what server is running what, whether it's in docker or tmux.


The project consists of two parts: a backend that requests status from the entities to be checked at a given interval and a frontend that shows the visual schema.

The basis of the frontend part is: Nomnoml, which draws flowcharts from a textual description and for which there is a library that generates an SVG representation of the whole thing. Which means you can algorithmically change elements in the diagram. That is, a live service can be colored green. A fallen one - red. You can write some additional information, e.g. database size.

The backend is implemented in Python, FastAPI, Pydantic. It works quite simply: we have such entities as API, ping, database available. And we describe rules with what frequency we need to check their status and what response we expect. If we don't get the expected response, we send a message to Telgram that such and such server is down. It will be colored red on the scheme and I will easily understand where the server is spinning and under what and go to fix it.

An example of a response on a separate entity from API:

      "name": "foldwrap_api",
      "type": "api",
      "interval": 900,
      "lastcheck": "03.03.2023 06:37:24",
      "status": "error",
      "success_count": 1467,
      "fail_count": 1973,
      "success_ratio": 0.4265,
      "dependencies": null,
      "extra": {}

interval - period between checks in seconds
dependencies - entities: servers, databases, on which this thing depends
extra - any additional information we will show in the cell


The service has been running at my place for more than two years now and it correctly sends notifications to the cart when something goes down, works abnormally, etc. And when everything works as it should, the visual scheme is pleasing to the eye :)

You can check it out here: