Using Alertmanager with Prometheus

30 minutes
  • 5 Learning Objectives

About this Hands-on Lab

Prometheus does not just limit us to recording metrics. One of Prometheus’s core functionalities is the ability to define and route alerts to any alert management endpoint we define — or, in the case of this hands-on lab, Prometheus’s own sideproject, Alertmanager. Once we have our desired alerting thresholds defined, we need to set up our routes and receivers for the Alertmanager, ensuring our notifications are going to the right end user at the correct frequency and with the right information.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Add a Rules File
  1. Add a rules file configuration to the Prometheus config:

    sudo $EDITOR /etc/prometheus/prometheus.yml
    
    rule_files:
      - "rules.yml"
  2. Save and exit.

  3. Create and open the rules.yml file:

    sudo $EDITOR /etc/prometheus/rules.yml
Add an Alert to Track Uptime
  1. Before creating the alert itself, create a recording of the desired metric:

    groups:
      - name: uptime
        rules:
          - record: job:uptime:average:ft
            expr: avg without (instance) (up{job="forethought"})
  2. Create an alert based on this recording:

    groups:
      - name: uptime
        rules:
          - record: job:uptime:average:ft
            expr: avg without (instance) (up{job="forethought"})
          - alert: ForethoughtApplicationDown
            expr: job:uptime:average:ft < .75
            for: 30s
            labels:
              severity: page
              team: devops
  3. Save and exit.

  4. Restart Prometheus:

    sudo systemctl restart prometheus
    sudo systemctl status prometheus
Configure Alertmanager to Use an SMTP Smarthost
  1. Open the Alertmanager configuration file:

    sudo $EDITOR /etc/alertmanager/alertmanager.yml
  1. Define the global settings:

    global:
      resolve_timeout: 5m
      smtp_smarthost: 'localhost:25'
      smtp_from: 'prometheus'
Set up Alertmanager Routing
  1. Set up the backup route:

    route:
      receiver: 'email_backup'
      group_by: ['alertname']
      group_wait: 10s
      group_interval: 10s
      repeat_interval: 1m
  2. Set up the route for critical alerts:

    route:
      receiver: 'email_backup'
      group_by: ['alertname']
      group_wait: 10s
      group_interval: 10s
      repeat_interval: 1m
      routes:
        - match:
            severity: 'critical'
          group_by: ['team']
          receiver: 'email_pager'
  3. Set up the route for team alerts:

    
    route:
      receiver: 'email_backup'
      group_by: ['alertname']
      group_wait: 10s
      group_interval: 10s
      repeat_interval: 1m
      routes:
        - match:
            severity: 'critical'
          group_by: ['team']
          receiver: 'email_pager'
          routes:
            - match:
                team: devops
                receiver: 'email_devops'
    ``
Create the Needed Receivers
  1. Create the receivers:

    receivers:
    - name: 'email_backup'
      email_configs:
        - to: 'alerts@forethoughtapp.io'
    - name: 'email_pager'
      email_configs:
        - to: 'oncall@forethoughtapp.io'
    - name: 'email_devops'
      email_configs:
        - to: 'devops@forethoughtapp.io'
  2. Save and exit.

  3. Restart Alertmanager:

    sudo systemctl restart alertmanager

Additional Resources

Three servers are provided for this hands-on lab: one monitoring server and two application servers. Both of the application servers are already being monitored by Prometheus. The monitoring server already has Prometheus, Alertmanager, and Grafana installed, with endpoints set up. You can use systemctl manage any of these services.

To test the alert, stop one of the application servers by running sudo docker stop ft-app.

What are Hands-on Labs

Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.

Sign In
Welcome Back!

Psst…this one if you’ve been moved to ACG!

Get Started
Who’s going to be learning?