Prometheus Exporter für eine Web-API

In diesem Artikel zeige ich kurz ein Python-Skript, welches einen Prometheus-Exporter für eine Web-API bereitstellt. Damit sind wir in der Lage Daten, die über eine API ausgeliefert worden, in unsere Prometheus-Datenbank zu importieren.

Für das Skript werden die Python-Pakete flask und requests benötigt. Diese können mit dem folgenden Befehl auf unserem System installiert werden:

pip install requests
pip install flask

Sobald das installiert ist, können wir das folgende Skript verwenden und noch ein bisschen auf unsere Bedürfnisse anpassen:

from flask import Flask, Response
import requests

app = Flask(__name__)

def fetch_temperature():
    response = requests.get("http://<ip-adresse>/single1")
    temp = float(response.text.strip().replace("°C", "").replace(",", "."))
    return temp

@app.route('/metrics')
def metrics():
    temperature = fetch_temperature()
    return Response(f"# HELP sensor_temperature Temperature in Celsius\n# TYPE sensor_temperature gauge\nsensor_temperature {temperature}\n", mimetype="text/plain")

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=9876)

In meinem Anwendungsfall wurde das Skript verwendet, um die Temperatur eines W&T Thermometers anzuzeigen.

Im Anschluss brauchen wir nur noch das Skript ausführen. Das Skript wird in einer Schleife offen gehalten und stellt dann den eigenen kleinen Webserver bereit.