7. Alerting with Alertmanager
Installation
Setup
You will install Alertmanager in the following labs. We will have a look at the default configuration in the next chapter.
Configuration in Alertmanager
Alertmanager’s configuration is done using a YAML config file. There are two main sections for configuring how Alertmanager is dispatching alerts: receivers and routing.
Receivers
With a receiver , one or more notifications can be defined. There are different types of notifications types, e.g. mail, webhook, or one of the message platforms like Slack or PagerDuty.
Routing
With routing blocks , a tree of routes and child routes can be defined. Each routing block has a matcher which can match one or several labels of an alert. Per block, one receiver can be specified, or if empty, the default receiver is taken.
amtool
As routing definitions might be very complex and hard to understand, amtool becomes handy as it helps to test the rules. It can also generate test alerts and has even more useful features. More about this in the labs.
More (advanced) options
For more insights of the configuration options, study the following resources:
- Example configuration provided by Alertmanager on GitHub
- General overview of Alertmanager
Alerting rules in Prometheus
Prometheus alerting rules
are configured very similarly to recording rules which you will get to know later in this training. The main difference is that the rules expression contains a threshold (e.g., query_expression >= 5) and that an alert is sent to the Alertmanager in case the rule evaluation matches the threshold. An alerting rule can be based on a recording rule or be a normal expression query.
Note
Sometimes the community or the maintainer of your Prometheus exporter already provide generic Prometheus alerting rules that can be adapted to your needs. For this reason, it makes sense to do some research before writing alerting rules from scratch. Before implementing such a rule, you should always understand and verify the rule. Here are some examples:
- MySQL: mysqld-mixin
- Strimzi Kafka Operator: strimzi/strimzi-kafka-operator
- General rules for Kubernetes: kubernetes-mixin-ruleset
- General rules for various exporters: samber/awesome-prometheus-alerts
Templates for awesome rules
Whenever creating PrometheusRules you can always expect other people having the same problem as you. On this site you can find a collection of different PrometheusRules for a big amount of cloud native technology.