Sending Custom Metrics from Python to Prometheus

K Shekar
2 min readOct 31, 2023

--

Instrumenting your Python application with the Prometheus Python Client library allows you to collect and expose custom metrics for monitoring and analysis. In this post, we’ll walk through the process of instrumenting a Python application and exposing metrics using the Prometheus Python Client library.

Step 1: Installprometheus_client library:

pip install prometheus_client

Official Repo for Python Prometheus Client — https://github.com/prometheus/client_python

Step 2: Import Required Modules

In your Python script, import the necessary modules from the Prometheus Client library:

from prometheus_client import start_http_server, Counter, Gauge

You can ofcourse create different types of prometheus metrics depending on your use-case. In this post we will create a `counter`

Step 3: Create and Register Metrics

Define the metrics you want to collect, such as counters or gauges. For this example, we’ll create a simple counter and a gauge metric.

# Create a counter metric to count requests
request_count = Counter('http_req_total', 'HTTP Requests Total')
# Create a gauge metric to measure system memory usage
memory_usage = Gauge('memory_usage_in_bytes', 'System Memory Usage'

Step 4: Instrument Your Code

Within your application, instrument the code to update the metrics as needed. For example, you can increment the request count every time a request is processed and update the memory usage gauge with the current memory usage.

By starting an HTTP server on a specified port (in this case, port 8000), you expose the metrics for Prometheus to scrape.

Step 6: Access Prometheus Metrics

With the HTTP server running and metrics exposed, you can access your metrics by visiting http://localhost:8000/metrics in a web browser or using the Prometheus server to scrape and store the metrics for monitoring.

By following these steps and instrumenting your Python application with the Prometheus Python Client library, you can collect and expose custom metrics that provide insights into your application’s behavior, performance, and resource usage. These metrics enable you to use them in your monitoring tool or remote write them to your hosted Prometheus setup.

--

--

K Shekar
K Shekar

Written by K Shekar

DevOps Practioner . Open Source Contributor . General Nerd

No responses yet