Prometheus: Rozwiązywanie problemów
Błędy, które możesz napotkać z Prometheus
👋 Witamy w dokumentacji Stackhero!
Stackhero oferuje gotowe do użycia rozwiązanie Prometheus cloud, które zapewnia wiele korzyści, w tym:
Alert Managerw zestawie do wysyłania alertów doSlack,Mattermost,PagerDuty, itp.- Dedykowany serwer e-mail do wysyłania nieograniczonych alertów e-mail.
Blackboxdo sondowaniaHTTP,ICMP,TCPi więcej.- Łatwa konfiguracja z edytorem plików konfiguracyjnych online.
- Bezproblemowe aktualizacje za pomocą jednego kliknięcia.
- Optymalna wydajność i solidne bezpieczeństwo dzięki prywatnej i dedykowanej VM.
Oszczędzaj czas i upraszczaj swoje życie: wystarczy 5 minut, aby wypróbować rozwiązanie Prometheus cloud hosting Stackhero!
Rozwiązywanie błędu "received unsupported Content-Type "..." and no fallback_scrape_protocol specified for target"
Wraz z wydaniem Prometheus v3, serwery docelowe muszą teraz zawierać nagłówek Content-Type w swoich odpowiedziach, aby poinformować Prometheus o protokole metryk zawartych w odpowiedzi. Dotyczy to narzędzi takich jak Node Exporter, które powinny teraz odpowiadać na żądania HTTP Prometheus z odpowiednim Content-Type. Więcej szczegółów można znaleźć w dokumentacji Prometheus.
Jeśli ten wymóg nie zostanie spełniony, możesz napotkać taki komunikat o błędzie:
received unsupported Content-Type "application/octet-stream" and no fallback_scrape_protocol specified for target
Oto kilka sposobów na rozwiązanie tego problemu:
1. Zaktualizuj swoje serwery docelowe
Jeśli pracujesz z serwerem docelowym takim jak Node Exporter, rozważ jego aktualizację do najnowszej wersji. Ostatnie aktualizacje zazwyczaj zapewniają, że nagłówek Content-Type jest poprawnie zdefiniowany, co powinno rozwiązać błąd w Prometheus.
2. Zdefiniuj nagłówek Content-Type dla swoich serwerów docelowych
Dla niestandardowych serwerów docelowych, takich jak trasa API, którą opracowałeś do zwracania metryk Prometheus, możesz bezpośrednio ustawić nagłówek Content-Type w odpowiedzi.
Na przykład, jeśli używasz HapiJS, zamiast zwracać swoje metryki w ten sposób:
return metrics
Możesz ustawić nagłówek Content-Type w ten sposób:
return h.response(metrics).type('text/plain;version=0.0.4');
Oto obsługiwane nagłówki Content-Type w zależności od protokołu metryk, które zwracasz:
- 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. Zdefiniuj protokół zapasowy
Możesz również zdefiniować protokół zapasowy w pliku konfiguracyjnym prometheus.yml. Ten protokół będzie używany, jeśli serwer docelowy nie określi nagłówka Content-Type.
Oto przykład:
- job_name: "my-job"
# [...]
fallback_scrape_protocol: PrometheusText0.0.4
Obsługiwane wartości to PrometheusProto, PrometheusText0.0.4, PrometheusText1.0.0, OpenMetricsText0.0.1, i OpenMetricsText1.0.0.