PromQL is the Prometheus Query Language. While it ends in QL, you will find that it is not an SQL-like language, as SQL languages tend to lack expressive power when it comes to the sort of calculations you would like to perform on time series.
Labels are a key part of PromQL, and you can use them not only to do arbitrary aggregations but also to join different metrics together for arithmetic operations against them. There are a wide variety of functions available to you from prediction to date and math functions.
This chapter will introduce you to the basic concepts of PromQL, including aggregation, basic types, and the HTTP API.
Let’s get started with some simple aggregation queries. These queries will likely cover most of your potential uses for PromQL. While PromQL is as powerful as it is possible to be,1 most of the time your needs will be reasonably simple.
Gauges are a snapshot of state, and usually when aggregating them you want to take a sum, average, minimum, or maximum.
Consider the metric
node_filesystem_size_bytes from your Node exporter, which
reports the size of each of your mounted filesystems, and has
mountpoint labels. You can calculate total filesystem
size on each machine with:
sum without(device, fstype, mountpoint)(node_filesystem_size_bytes)
This works as
without tells the
sum aggregator to sum everything up with
the same labels, ignoring those three. So if you had the time ...