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 Manager jest wbudowany, dzięki czemu można przekierowywać alerty bezpośrednio do Slack, Mattermost, PagerDuty oraz innych popularnych narzędzi.
  • Dedykowany serwer e-mail umożliwia wysyłanie nieograniczonej liczby powiadomień e-mail bez dodatkowej konfiguracji.
  • Blackbox jest dostępny, co pozwala na sondowanie protokołów takich jak HTTP, ICMP, TCP i 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.

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:

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.

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

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.