Building a Prometheus Server

45 minutes
  • 2 Learning Objectives

About this Hands-on Lab

Prometheus is a powerful tool for monitoring your infrastructure. Getting started with Prometheus is as easy as setting up a single Prometheus server. There are multiple ways to install Prometheus. In this lab, you will have the opportunity to set up a Prometheus server by installing Prometheus from pre-compiled binaries made available by the Prometheus team.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Download and Install Prometheus
  1. Create the prometheus user and directories:

    sudo useradd -M -r -s /bin/false prometheus
    sudo mkdir /etc/prometheus /var/lib/prometheus
  2. Download and extract the pre-compiled binaries:

    wget https://github.com/prometheus/prometheus/releases/download/v2.16.0/prometheus-2.16.0.linux-amd64.tar.gz
    tar xzf prometheus-2.16.0.linux-amd64.tar.gz prometheus-2.16.0.linux-amd64/
  3. Move the files from the downloaded archive to the appropriate locations, and set ownership on these files and directories to the prometheus user:

    sudo cp prometheus-2.16.0.linux-amd64/{prometheus,promtool} /usr/local/bin/
    sudo chown prometheus:prometheus /usr/local/bin/{prometheus,promtool}
    sudo cp -r prometheus-2.16.0.linux-amd64/{consoles,console_libraries} /etc/prometheus/
    sudo cp prometheus-2.16.0.linux-amd64/prometheus.yml /etc/prometheus/prometheus.yml
    sudo chown -R prometheus:prometheus /etc/prometheus
    sudo chown prometheus:prometheus /var/lib/prometheus
  4. Run Prometheus in the foreground to make sure everything is set up correctly so far:

    prometheus --config.file=/etc/prometheus/prometheus.yml
Configure Prometheus as a `systemd` Service
  1. Create a systemd unit file for Prometheus:

    sudo vi /etc/systemd/system/prometheus.service
  2. Define the Prometheus service in the unit file:

    [Unit]
    Description=Prometheus Time Series Collection and Processing Server
    Wants=network-online.target
    After=network-online.target
    
    [Service]
    User=prometheus
    Group=prometheus
    Type=simple
    ExecStart=/usr/local/bin/prometheus 
        --config.file /etc/prometheus/prometheus.yml 
        --storage.tsdb.path /var/lib/prometheus/ 
        --web.console.templates=/etc/prometheus/consoles 
        --web.console.libraries=/etc/prometheus/console_libraries
    
    [Install]
    WantedBy=multi-user.target
  3. Start and enable the Prometheus service:

    sudo systemctl daemon-reload
    sudo systemctl start prometheus
    sudo systemctl enable prometheus
  4. Verify the Prometheus service is healthy:

    sudo systemctl status prometheus
  5. Make an HTTP request to Prometheus to verify it is able to respond:

    curl localhost:9090
  6. You can also access Prometheus in a browser using the server’s public IP address: http://<PROMETHEUS_SERVER_PUBLIC_IP>:9090.

Additional Resources

You have just started your new job at LimeDrop, a new startup that provides a subscription service that ships a weekly box of limes to customers. Apparently, people are really into limes at the moment, so the company is growing rapidly. The company has built a complex infrastructure running both on-premises and in the cloud.

Unfortunately, LimeDrop has not yet invested much time in setting up monitoring for the various components of their infrastructure. This makes it difficult to diagnose and anticipate problems. Your first task is to set up a Prometheus server that will monitor LimeDrop's infrastructure. An Ubuntu server has been made available to you for this purpose.

Download and install the Prometheus pre-compiled binaries, and then configure Prometheus as a systemd service and start it.

If you get stuck, feel free to check out the solution video, or the detailed instructions under each objective. Good luck!

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?