Installing Prometheus Pushgateway

45 minutes
  • 2 Learning Objectives

About this Hands-on Lab

The Prometheus pull model provides a highly resilient method for gathering metrics. However, there are a few cases where this model is not a good fit. Prometheus Pushgateway serves as a middleman, providing a push-based method for gathering metrics without compromising the simplicity of Prometheus server. In this lab, you will have the opportunity to install and configure your own Prometheus Pushgateway instance. This will give you some hands-on experience with the process of setting up Pushgateway.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Install and Run Pushgateway
  1. Log in to the Prometheus server.

  2. Create a user and group for Pushgateway:

    sudo useradd -M -r -s /bin/false pushgateway
  3. Download and install the Pushgateway binary:

    wget https://github.com/prometheus/pushgateway/releases/download/v1.2.0/pushgateway-1.2.0.linux-amd64.tar.gz
    tar xvfz pushgateway-1.2.0.linux-amd64.tar.gz
    sudo cp pushgateway-1.2.0.linux-amd64/pushgateway /usr/local/bin/
    sudo chown pushgateway:pushgateway /usr/local/bin/pushgateway
  4. Create a systemd unit file for Pushgateway:

    sudo vi /etc/systemd/system/pushgateway.service
    [Unit]
    Description=Prometheus Pushgateway
    Wants=network-online.target
    After=network-online.target
    
    [Service]
    User=pushgateway
    Group=pushgateway
    Type=simple
    ExecStart=/usr/local/bin/pushgateway
    
    [Install]
    WantedBy=multi-user.target
  5. Start and enable the pushgateway service:

    sudo systemctl enable pushgateway
    sudo systemctl start pushgateway
  6. Verify the service is running and serving metrics:

    sudo systemctl status pushgateway
    curl localhost:9091/metrics
Configure Pushgateway as a Scrape Target for Prometheus Server
  1. Edit the Prometheus config:

    sudo vi /etc/prometheus/prometheus.yml
  2. Under the scrape_configs section, add a scrape configuration for Pushgateway. Be sure to set honor_labels: true:

    - job_name: 'Pushgateway'
      honor_labels: true
      static_configs:
      - targets: ['localhost:9091']
  3. Restart Prometheus to load the new configuration:

    sudo systemctl restart prometheus
  4. Use expression browser to verify you can see Pushgateway metrics in Prometheus. You can access expression browser in a web browser at http://<PROMETHEUS_SERVER_PUBLIC_IP>:9090.

  5. Run a query to view some Pushgateway metric data:

    pushgateway_build_info

Additional Resources

Your company, LimeDrop, is using Prometheus for monitoring. However, they have some short-lived batch jobs they would like to monitor. Unfortunately, the pull model used by Prometheus server to scrape metric data will not work for these jobs, since they terminate when processing is finished.

LimeDrop needs a Prometheus Pushgateway instance to which these jobs can push metric data. This will allow those metrics to be scraped by Prometheus server. Install Pushgateway on the existing Prometheus server and configure Prometheus server to scrape from Pushgateway.

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?