Monitor your patches with VL.Prometheus

Hello hello hello,

In the past, I rolled out many more-or-less bad custom solutions to monitor the health of my vvvv apps and the computers running them. Turns out, people have been thinking about a standard way of doing that for years: Prometheus.

TL;DR: VL.Prometheus lets you export metrics from your patches so you can visualize them in super fancy dashboards with Grafana.

Prometheus is an open source solution to monitor your applications/computers and even more. Without going into too much details, let’s go for a little crash course.

Prometheus is a monitoring system that collects metrics from your programs/machines and stores them over time. The things you want to monitor (or “observe”) must have a little program called an exporter that gets these things’ metrics and exposes them. For instance, if you want to monitor the health of your Windows machine, you would install the Windows exporter there (think CPU/memory usage, for instance). If you want to monitor your Nvidia GPU, you would install the Nvidia exporter on your machine (memory usage, temperature..).
For list of existing exporters, have a look here. There is a ton of stuff you could observe already!

No matter what you’re observing, in the end the result is still the same: you have a bunch of exporters all making their metrics available to be observed. Prometheus is pull based : your systems don’t push metrics to it. Rather, it scrapes your systems for their metrics, and it up to you to configure it.
For instance, you would say “please scrape my Windows machines every 15s on port 9182 for Windows metrics, and on port 9835 for nvidia metrics”. Every 15s, Prometheus will scrape these metrics and store them in its time-series database, letting you keep weeks or months of history depending on how you configure it.

Now, how do we make use of that in our patches? This is where VL.Prometheus comes in. With it, you can easily create custom metrics inside your patches and expose them in a format Prometheus can scrape. Exposing your application’s framerate is the first obvious thing you can do, but you can also show any arbitrary data that’s relevant for your application : the status of a connection to some server, the number of times a specific event occurs.. it’s up to you!

This whole observability universe is a bit intimidating at first, but once you get used to it you never come back :-)

I’m just publishing the source of the VL.Prometheus integration I’m working on and hope I’ll have time for tutorials soon!

Have fun

17 Likes