d.jaeger

Script: Erstellt Port-Forwarding zu Prometheus

Hallo in die Runde,

mein Script

#!/bin/bash

# connect_prometheus.sh
# Funktion: Verbindet Port-Forward zu Prometheus und öffnet localhost:9090.
# Zeigt Warnseite, wenn kein Zugriff möglich ist (z. B. fehlende SSH-Verbindung).

PORT=9090
NAMESPACE="prometheus"  
SERVICE="prometheus"  
URL="http://localhost:$PORT"  
HTML_FEHLERDATEI="/tmp/prometheus_ssh_hinweis.html"  
MAX_RETRIES=20   # insgesamt 10 Sekunden (0.5s Schritte)

echo "Starte Port-Forwarding für $SERVICE im Namespace $NAMESPACE..."  

# Starte Port-Forwarding im Hintergrund
kubectl -n "$NAMESPACE" port-forward service/"$SERVICE" $PORT:$PORT >/dev/null 2>&1 &  
PID=$!

# Warten und prüfen, ob Prometheus erreichbar wird
echo "Warte auf Verbindung zu $URL ..."  
for i in $(seq 1 $MAX_RETRIES); do
    if curl -s --head "$URL" | grep -q "200 OK"; then  
        echo "✅ Prometheus ist erreichbar unter $URL"  
        xdg-open "$URL" >/dev/null 2>&1 &  
        
        # Port-Forwarding nach 60 Sekunden automatisch beenden
        (
            sleep 60
            if ps -p $PID > /dev/null; then
                kill $PID
                echo "⏹ Port-Forwarding nach 60 Sekunden beendet."  
            fi
        ) &
        exit 0
    fi
    sleep 0.5
done

# Wenn hier angekommen: Verbindung fehlgeschlagen
echo "❌ Verbindung zu Prometheus fehlgeschlagen."  
echo "👉 Vermutlich fehlt eine SSH-Verbindung zum Kubernetes-Cluster."  

# HTML-Seite zur Warnung erzeugen
cat > "$HTML_FEHLERDATEI" <<EOF  
<!DOCTYPE html>
<html lang="de">  
<head>
    <meta charset="UTF-8">  
    <title>SSH-Verbindung erforderlich</title>
</head>
<body style="font-family: sans-serif; text-align: center; margin-top: 50px;">  
    <h1 style="color: red;">⚠ Verbindung zum Prometheus fehlgeschlagen ⚠</h1>  
    <p>Bitte stelle eine SSH-Verbindung zum Kubernetes-Cluster her.</p>
    <p style="font-weight: bold;">Befehl:</p>  
    <pre style="font-size: 1.2em; background: #f0f0f0; display: inline-block; padding: 10px; border-radius: 8px;">  
ssh kubernetescluster -N
    </pre>
</body>
</html>
EOF

xdg-open "$HTML_FEHLERDATEI" >/dev/null 2>&1 &  

# Hintergrundprozess beenden, falls gestartet
if ps -p $PID > /dev/null; then
    kill $PID
fi

exit 1

funktioniert leider nicht.

Wenn ich im Terminal per
kubectl -n prometheus port-forward service/prometheus 9090:9090
erhalte ich
 kubectl -n prometheus port-forward service/prometheus 9090:9090
Forwarding from 127.0.0.1:9090 -> 9090
Forwarding from [::1]:9090 -> 9090

dann gehe ich in den Browser und gebe dort
http://localhost:9090
ein und erhalte die Seite.

Leider ist im Script ein Fehler, der immer die Fehlerseite ausgibt.

Freue mich über Hilfe
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 672747

Url: https://administrator.de/forum/script-erstellt-port-forwarding-zu-prometheus-672747.html

Ausgedruckt am: 05.05.2025 um 21:05 Uhr