|
<< Click to Display Table of Contents >> Navigation: Prometheus - Kennzahlen > Proxy-Transfer |
Wenn der Rechner nicht direkt erreichbar ist und die gesuchte Resource erzeugt bereits eine valide Prometheus-Datei, dann muß man eine Proxy-Lösung einsetzen: pushprox ist so eine Lösung. Diese ist bei github verfügbar. Die letzten Releases sind von 2024 und es gibt diese vorbereitet für viele Plattformen.
Auf dem Prometheus-Server kann man den Proxy installieren. Auf den nicht erreichbaren Servern installiert man den Client.
Die Installation erfolgt via:
tar xvf .......
man erhält immer die Binaries für den Proxy und den Client.
Der Proxy wird auf dem Prometheus-Server installiert (nicht unbedingt notwendig - aber erleichtert die Kommunikation) und wird wie folgt gestartet:
nohup ./pushprox-proxy --web.listen-address=127.0.0.1:8080 &
Der Apache muß für den pushprox-Proxy abgeändert werden, damit er von außen erreichbar ist. Der Client hält lange HTTP-Verbindungen, daher ProxyTimeout und Timeout.
ProxyTimeout 300
Timeout 300
#
# Proxy
#
ProxyPass /pushprox/ http://127.0.0.1:8080/
ProxyPassReverse /pushprox/ http://127.0.0.1:8080/
Der Client wird wie folgt gestartet und registriert sich beim Proxy unter einem bestimmten Namen (hier: worker-a) an:
nohup ./pushprox-client --proxy-url=https://rechnername/pushprox/ --fqdn=worker-a
Bei Prometheus müssen die Resources definiert werden, von denen man Metriken anfordern möchte. Also definiert man einen Job, der über einen Proxy anfragt. Prometheus wird dann den Proxy anfragen, dieser schaut nach, ob ein angemeldeter Client zu der Anfrage passt, leitet diese weiter und gibt das Ergebnis an Prometheus zurück.
scrape_configs:
- job_name: 'node-exporter-test'
proxy_url: http://127.0.0.1:8080/
static_configs:
- targets: ['worker-a:9100', 'worker-b:9100']
labels:
process_type: node-exporter-test
Nun kommt das Problem: Ein Client hat sich als "worker-a:9100" angemeldet. Der Proxy leitet den Request an den Client weiter. Der Client fragt dann "worker-a:9100" an und gibt die Prometheus Datei zurück. Wenn diese Resource aber nur unter 127.0.0.1 erreichbar ist, dann muß man in der "host"-Datei auf dem Cllient einen Eintrag hinterlegen, so dass "worker-a" gegen 127.0.0.1 aufgelöst wird und schon fragt der Client eine lokale Resource an.