Building a Prometheus Console Template

45 minutes
  • 3 Learning Objectives

About this Hands-on Lab

Prometheus collects a wide variety of metric data. However, to make use of that data in the real world, you need a way to visualize important metrics at a glance. You can do this by building dashboards or similar pages that display real-time data in a useful format. One way to build these views is to use console templates. In this lab, you will have the opportunity to build a simple console template to display some statistics about a Linux server. This will give you some hands-on experience in working with console templates.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Add the Server Status Metric to the Console Template
  1. Create and edit the console template file:

    sudo vi /etc/prometheus/consoles/limedrop-web.html
  2. Implement a display of the current "up" status of the web server:

    {{template "head" .}}
    {{template "prom_content_head" .}}
    <h1>LimeDrop Web Server Metrics</h1>
    
    <strong>Server Status:</strong> {{ template "prom_query_drilldown" (args "up{job='Web Server'}") }}
    {{template "prom_content_tail" .}}
    {{template "tail"}}
  3. View the console in a browser to verify it is working:

    http://<PROMETHEUS_SERVER_PUBLIC_IP>:9090/consoles/limedrop-web.html
Add the CPU Usage Metric to the Console Template
  1. Edit the console template file:

    sudo vi /etc/prometheus/consoles/limedrop-web.html
  2. Implement a display for the web server’s CPU usage:

    {{template "head" .}}
    {{template "prom_content_head" .}}
    <h1>LimeDrop Web Server Metrics</h1>
    
    <strong>Server Status:</strong> {{ template "prom_query_drilldown" (args "up{job='Web Server'}") }}
    <br />
    <br />
    <strong>Current CPU Usage:</strong> {{ template "prom_query_drilldown" (args "sum(rate(node_cpu_seconds_total{instance='limedrop-web:9100',mode!='idle'}[5m])) * 100 / 2" "%") }}
    {{template "prom_content_tail" .}}
    {{template "tail"}}
  3. View the console in a browser to verify it is working:

    http://<PROMETHEUS_SERVER_PUBLIC_IP>:9090/consoles/limedrop-web.html
Add the Memory Usage Metric to the Console Template
  1. Edit the console template file:

    sudo vi /etc/prometheus/consoles/limedrop-web.html
  2. Implement a display for the web server’s memory usage:

    {{template "head" .}}
    {{template "prom_content_head" .}}
    <h1>LimeDrop Web Server Metrics</h1>
    
    <strong>Server Status:</strong> {{ template "prom_query_drilldown" (args "up{job='Web Server'}") }}
    <br />
    <br />
    <strong>Current CPU Usage:</strong> {{ template "prom_query_drilldown" (args "sum(rate(node_cpu_seconds_total{instance='limedrop-web:9100',mode!='idle'}[5m])) * 100 / 2" "%") }}
    <br />
    <br />
    <strong>Current Memory Usage:</strong> {{ template "prom_query_drilldown" (args "100 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes) * 100" "%") }}
    {{template "prom_content_tail" .}}
    {{template "tail"}}
  3. View the console in a browser to verify it is working:

    http://<PROMETHEUS_SERVER_PUBLIC_IP>:9090/consoles/limedrop-web.html

Additional Resources

Your company, LimeDrop, is using Prometheus for monitoring. One of the things they are monitoring with Prometheus is a basic web server. This server occasionally encounters issues related to high CPU and/or memory load.

While it is possible to query Prometheus for the web server's memory and CPU usage data at any time, the administrators would like to have a dashboard they can access in order to quickly view the data at a glance.

Prometheus is already set up to monitor the web server with a job called Web Server. The web server's instance name is limedrop-web:9100.

Build a Prometheus console template to display the following pieces of information:

  • Current "up" status of the web server (whether or not Prometheus was able to successfully reach the server and scrape metrics).
    • Hint: Use the up metric.
  • Current percentage of CPU usage across all CPUs.
    • Hint: Use the node_cpu_seconds_total metric, keeping in mind the idle mode means the CPU is not in use.
  • Current percentage of memory usage.
    • Hint: The node_memory_MemAvailable_bytes and node_memory_MemTotal_bytes are useful here.

Implement your console template in a file located at /etc/prometheus/consoles/limedrop-web.html.

Once you have created the file, you should be able to test it by accessing it in a web browser at http://<PROMETHEUS_SERVER_PUBLIC_IP>:9090/consoles/limedrop-web.html.

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?