Prometheus: Rozwiązywanie problemów
Błędy, które możesz napotkać z Prometheus
👋 Witamy w dokumentacji Stackhero!
Stackhero oferuje w pełni zarządzaną platformę Prometheus cloud, zaprojektowaną z myślą o niezawodności i prostocie:
Alert Managerjest wbudowany, dzięki czemu można przekierowywać alerty bezpośrednio doSlack,Mattermost,PagerDutyoraz innych popularnych narzędzi.- Dedykowany serwer e-mail umożliwia wysyłanie nieograniczonej liczby powiadomień e-mail bez dodatkowej konfiguracji.
Blackboxjest dostępny, co pozwala na sondowanie protokołów takich jakHTTP,ICMP,TCPi innych, zapewniając kompleksowy monitoring.- Szybka konfiguracja instancji dzięki edytorowi plików konfiguracyjnych online – nie trzeba ręcznie zarządzać plikami YAML.
- Aktualizacje można zastosować jednym kliknięciem. Stackhero zajmuje się całym procesem aktualizacji, minimalizując przestoje i konieczność ręcznej interwencji.
- Wysoka wydajność i silne zabezpieczenia są zapewnione dzięki prywatnej, dedykowanej infrastrukturze.
Uruchom usługę w około 5 minut. Stackhero zajmuje się konfiguracją, abyś mógł skupić się na monitorowaniu, a nie na utrzymaniu. Wypróbuj Prometheus cloud hosting na Stackhero i usprawnij swoje procesy monitorowania oraz powiadamiania.
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.