Grafana 9 Alert : How to customize alert message
Grafana added the alert feature recently and it’s now released with the Grafana 9. That’s a great feature for the people who don’t want to set a proper alermanager and to configure it. I’ve took the time to explore the alert and play with it. Let’s see how it works!
Deploy grafana and prometheus
With the docker-compose file below run the grafana and prometheus docker-compose up -d.
# docker-compose.yml file
version: "3.5"
services:
prometheus:
image: quay.io/prometheus/prometheus:latest
volumes:
#- ./prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus:/prometheus
#command: "--config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus"
ports:
- 9090:9090
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
volumes:
- grafana-storage:/var/lib/grafana
volumes:
prometheus:
name: prometheus
grafana-storage:
name: grafana-storage
Build your alert
I have 2 websites running on a raspberrypi. In my case, I would like to know when the website is down and to get notified with the website name.
1- Define the alert
Using a blackbox_exporter, i have the metric probe_http_status_code that returns the status code of querying the website. To make it easy, let’s consider that the status code 200 is only the valid status_code, otherwise FIRE AN ALARM.

If you have a dashboard for this metric:
- Edit the dashboard
- Click on the tab
Alert - Create rule for this panel
- Start creating your alert
If you don’t have a dashboard for this metric:
- In the left bar, click on
Alert rules. - Create a new alert rule
- In the left bar, click on

2- Preview the alert
For testing purposes, a website has been turned off to fire an alarm. Click on the button Preview alerts to show the alert labels and value.

3- Build a custom description
Grafana uses Go templates to customize the alerts with the template_data. However, despite my knowledge in go templating, I’ve found this stage not very clear in grafana docs.
To access the labels of the alert in the description box, you have a root variable called $values. Then, get the var variable from the Preview alerts box. This var is the entrypoint to the labels.
An example of the description could be {{ $values.var.Labels.instance }}, In my case:
{{ $values.B0.Labels.instance }}

Define contact points
Contact points are the means that grafana can send through the alerts to the users.
You have a bunch of choices:
- Telegram
- Webhook
- …
Feel free to define your contact point. If you have any difficulties please let me know in the comment box below.