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
    summary = "High request latency",

ALERT DailyTest
  IF vector(1)
  FOR 1m
    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:

- name: alert.rules
  - alert: HighErrorRate
    expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
    for: 10m
      summary: High request latency
  - alert: DailyTest
    expr: vector(1)
    for: 1m
      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.