Prometheus: Trikčių šalinimas

Klaidos, su kuriomis galite susidurti naudojant Prometheus

👋 Sveiki atvykę į Stackhero dokumentaciją!

Stackhero siūlo paruoštą naudoti Prometheus cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:

  • Įtrauktas Alert Manager, skirtas siųsti įspėjimus į Slack, Mattermost, PagerDuty ir kt.
  • Skirtas el. pašto serveris, skirtas siųsti neribotus el. pašto įspėjimus.
  • Blackbox skirtas HTTP, ICMP, TCP ir kitų protokolų tikrinimui.
  • Lengvas konfigūravimas su internetiniu konfigūracijos failų redaktoriumi.
  • Paprasti atnaujinimai vienu paspaudimu.
  • Optimali veikla ir tvirta sauga, užtikrinama privačios ir dedikuotos VM.

Taupykite laiką ir supaprastinkite savo gyvenimą: tereikia 5 minučių, kad išbandytumėte Stackhero Prometheus cloud hosting sprendimą!

Su Prometheus v3 išleidimu, dabar būtina, kad tiksliniai serveriai įtrauktų Content-Type antraštę savo atsakymuose, kad informuotų Prometheus apie atsakyme esančių metrikų protokolą. Tai veikia tokius įrankius kaip Node Exporter, kurie dabar turi atsakyti į Prometheus HTTP užklausas su tinkama Content-Type antrašte. Daugiau informacijos galite rasti Prometheus dokumentacijoje.

Jei šis reikalavimas nėra įvykdytas, galite susidurti su tokia klaidos žinute:

received unsupported Content-Type "application/octet-stream" and no fallback_scrape_protocol specified for target

Štai keletas būdų, kaip galite išspręsti šią problemą:

Jei dirbate su tokiu tiksliniu serveriu kaip Node Exporter, apsvarstykite galimybę jį atnaujinti į naujausią versiją. Naujausi atnaujinimai paprastai užtikrina, kad Content-Type antraštė būtų tinkamai apibrėžta, kas turėtų išspręsti klaidą Prometheus.

Jei turite pritaikytus tikslinius serverius, tokius kaip API maršrutas, kurį sukūrėte Prometheus metrikoms grąžinti, galite tiesiogiai nustatyti Content-Type antraštę atsakyme.

Pavyzdžiui, jei naudojate HapiJS, vietoj to, kad grąžintumėte savo metrikas taip:

return metrics

Galite nustatyti Content-Type antraštę taip:

return h.response(metrics).type('text/plain;version=0.0.4');

Štai palaikomos Content-Type antraštės, atsižvelgiant į metrikų protokolą, kurį grąžinate:

  • 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

Taip pat galite nustatyti atsarginį protokolą savo prometheus.yml konfigūracijos faile. Šis protokolas bus naudojamas, jei tikslinis serveris nenurodo Content-Type antraštės.

Štai pavyzdys:

  - job_name: "my-job"
    # [...]
    fallback_scrape_protocol: PrometheusText0.0.4

Palaikomos vertės yra PrometheusProto, PrometheusText0.0.4, PrometheusText1.0.0, OpenMetricsText0.0.1, ir OpenMetricsText1.0.0.