With the upcoming release of Prometheus 2.0 comes a new format for writing recording and alerting rules.

In this brief post we'll look at how we can use Promtool to automatically update your rules to the new format, and avoid rewriting them from scratch!

First grab and untar the latest 2.0 release binaries of Prometheus:

wget https://github.com/prometheus/prometheus/releases/download/v2.0.0-rc.1/prometheus-2.0.0-rc.1.linux-amd64.tar.gz tar -xzf prometheus-2*

Now let's update our current rules file. Let's say we have the following in alert.rules :

ALERT HighErrorRate IF job:request_latency_seconds:mean5m{job="myjob"} > 0.5 FOR 10m ANNOTATIONS { summary = "High request latency", } ALERT DailyTest IF vector(1) FOR 1m ANNOTATIONS { summary = "Daily alert test", }

Now we'll use Promtool to update our current rules in alert.rules to the new format with the following command:

./promtool update rules alert.rules

This will generate a new file titled alert.rules.yml containing all of your rules in the new 2.x format!

In my case, my two rules ended up as the following:

groups: - name: alert.rules rules: - alert: HighErrorRate expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5 for: 10m annotations: summary: High request latency - alert: DailyTest expr: vector(1) for: 1m annotations: summary: Daily alert test

You can now update your Prometheus 2.0 configuration to use this new rules file, and verify that they work as expected. Beware that the old format only works with Prometheus 1.x, and the new format only with 2.x!

Want the expert's advice on writing your alerting rules? Contact us.