Prometheus: Fehlerbehebung
Fehler, die Sie mit Prometheus begegnen können
👋 Willkommen in der Stackhero-Dokumentation!
Stackhero bietet eine einsatzbereite Prometheus Cloud-Lösung, die zahlreiche Vorteile bietet, darunter:
Alert Managerinklusive, um Warnungen anSlack,Mattermost,PagerDutyusw. zu senden.- Dedizierter E-Mail-Server zum Versenden von unbegrenzten E-Mail-Warnungen.
Blackboxzur Überprüfung vonHTTP,ICMP,TCPund mehr.- Einfache Konfiguration mit Online-Konfigurationsdatei-Editor.
- Mühelose Updates mit nur einem Klick.
- Optimale Leistung und robuste Sicherheit durch eine private und dedizierte VM.
Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Prometheus Cloud Hosting-Lösung von Stackhero auszuprobieren!
Lösung des Fehlers "received unsupported Content-Type "..." and no fallback_scrape_protocol specified for target"
Mit der Veröffentlichung von Prometheus v3 ist es nun erforderlich, dass Zielserver den Content-Type-Header in ihren Antworten einschließen, um Prometheus über das Protokoll der in der Antwort enthaltenen Metriken zu informieren. Dies betrifft Tools wie Node Exporter, die jetzt auf HTTP-Anfragen von Prometheus mit dem entsprechenden Content-Type antworten sollten. Für weitere Details können Sie die Prometheus-Dokumentation einsehen.
Wenn diese Anforderung nicht erfüllt wird, könnten Sie eine Fehlermeldung wie diese erhalten:
received unsupported Content-Type "application/octet-stream" and no fallback_scrape_protocol specified for target
Hier sind einige Möglichkeiten, wie Sie dieses Problem lösen können:
1. Aktualisieren Sie Ihre Zielserver
Wenn Sie mit einem Zielserver wie Node Exporter arbeiten, sollten Sie in Betracht ziehen, ihn auf die neueste Version zu aktualisieren. Neuere Updates stellen in der Regel sicher, dass der Content-Type-Header korrekt definiert ist, was den Fehler in Prometheus beheben sollte.
2. Definieren Sie den Content-Type-Header für Ihre Zielserver
Für benutzerdefinierte Zielserver, wie eine von Ihnen entwickelte API-Route zur Rückgabe von Prometheus-Metriken, können Sie den Content-Type-Header direkt in der Antwort festlegen.
Wenn Sie beispielsweise HapiJS verwenden, anstatt Ihre Metriken so zurückzugeben:
return metrics
Können Sie den Content-Type-Header so festlegen:
return h.response(metrics).type('text/plain;version=0.0.4');
Hier sind die unterstützten Content-Type-Header basierend auf dem Protokoll der Metriken, die Sie zurückgeben:
- PrometheusProto:
application/vnd.google.protobuf;proto=io.prometheus.client.MetricFamily;encoding=delimited - PrometheusText 0.0.4:
text/plain;version=0.0.4 - PrometheusText 1.0.0:
text/plain;version=1.0.0;escaping=allow-utf-8 - OpenMetricsText 0.0.1:
application/openmetrics-text;version=0.0.1 - OpenMetricsText 1.0.0:
application/openmetrics-text;version=1.0.0
3. Definieren Sie ein Fallback-Protokoll
Sie können auch ein Fallback-Protokoll in Ihrer prometheus.yml-Konfigurationsdatei definieren. Dieses Protokoll wird verwendet, wenn der Zielserver keinen Content-Type-Header angibt.
Hier ist ein Beispiel:
- job_name: "my-job"
# [...]
fallback_scrape_protocol: PrometheusText0.0.4
Unterstützte Werte sind PrometheusProto, PrometheusText0.0.4, PrometheusText1.0.0, OpenMetricsText0.0.1 und OpenMetricsText1.0.0.