Template examples
Alert field templates will be executed during every rule iteration for each alert that fires, so keep any queries and templates lightweight. If you have a need for more complicated templates for alerts, it is recommended to link to a console instead.
Simple iteration
This displays a list of instances, and whether they are up:
{{ .Labels.instance }} {{ .Value }}
{{ end }}
Go and Go’s templating language are both strongly typed, so one must check that samples were returned to avoid an execution error. For example this could happen if a scrape or rule evaluation has not run yet, or a host was down.
The included prom_query_drilldown
template handles this, allows for formatting of results, and linking to the .
Using console URL parameters
{{ with printf "node_memory_MemTotal{job='node',instance='%s'}" .Params.instance | query }}
{{ . | first | value | humanize1024 }}B
Here we iterate over all network devices and display the network traffic for each.
As the range
action does not specify a variable, .Params.instance
is not available inside the loop as .
is now the loop variable.
Defining reusable templates
{{define "myTemplate"}}
do something
{{end}}
{{template "myTemplate"}}
Templates are limited to one argument. The function can be used to wrap multiple arguments.