Prometheus: Trikčių šalinimas

Klaidos, su kuriomis galite susidurti naudojant Prometheus

👋 Sveiki atvykę į Stackhero dokumentaciją!

Stackhero siūlo visiškai valdomą Prometheus cloud platformą, sukurtą patikimumui ir paprastumui:

  • Alert Manager yra integruotas, todėl galite nukreipti įspėjimus tiesiai į Slack, Mattermost, PagerDuty ir kitas populiarias sistemas.
  • Dedikuotas el. pašto serveris leidžia siųsti neribotą kiekį el. pašto įspėjimų be papildomo konfigūravimo.
  • Įtraukta Blackbox funkcija, leidžianti tikrinti HTTP, ICMP, TCP ir kitus protokolus išsamiai stebėsenai.
  • Greitai konfigūruokite savo instanciją naudodamiesi internetiniu konfigūracijos failo redaktoriumi. Nereikia rankiniu būdu tvarkyti YAML.
  • Atnaujinimus pritaikykite vienu paspaudimu. Stackhero pasirūpina visais atnaujinimo procesais, sumažindama prastovas ir rankinį įsikišimą.
  • Aukštas našumas ir stipri sauga užtikrinami dėl privačios, dedikuotos infrastruktūros.

Pradėkite naudotis vos per 5 minutes. Stackhero pasirūpina diegimu, kad galėtumėte susitelkti į stebėseną, o ne priežiūrą. Išbandykite Prometheus cloud hosting Stackhero platformoje ir supaprastinkite savo stebėsenos bei įspėjimų procesus.

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.