Dynamic Line Chart with Prometheus Metrics

By: fyvo August 1, 2025 Python

Description

This script fetches Prometheus metrics and generates a dynamic line chart using matplotlib. It simplifies visualizing time-series data from your monitoring system.

Code Snippet

import requests
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from datetime import datetime

# Prometheus endpoint and query
prometheus_url = "http://localhost:9090/api/v1/query_range"
query = 'rate(http_requests_total[5m])'

# Fetch data from Prometheus
response = requests.get(prometheus_url, params={'query': query, 'start': '1h', 'end': '0', 'step': '30s'})
response.raise_for_status()
data = response.json()['data']['result'][0]['values']

# Convert data to datetime objects and values
x = [datetime.fromtimestamp(float(item[0])) for item in data]
y = [float(item[1]) for item in data]

# Create the line chart
plt.figure(figsize=(10, 6))
plt.plot(x, y)
plt.xlabel('Time')
plt.ylabel('Requests per Second')
plt.title('HTTP Request Rate (5m)')
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%H:%M:%S'))
plt.gcf().autofmt_xdate()
plt.grid(True)
plt.show()

Discussion (0)