Prometheus: Problemen oplossen

Fouten die u kunt tegenkomen met Prometheus

👋 Welkom bij de Stackhero-documentatie!

Stackhero biedt een kant-en-klare Prometheus cloud oplossing die tal van voordelen biedt, waaronder:

  • Alert Manager inbegrepen om meldingen te sturen naar Slack, Mattermost, PagerDuty, enz.
  • Toegewijde e-mailserver om onbeperkte e-mailmeldingen te verzenden.
  • Blackbox om HTTP, ICMP, TCP en meer te testen.
  • Eenvoudige configuratie met online configuratiebestand editor.
  • Moeiteloze updates met slechts één klik.
  • Optimale prestaties en robuuste beveiliging aangedreven door een privé en toegewijde VM.

Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de Prometheus cloud hosting oplossing van Stackhero te proberen!

Met de release van Prometheus v3 is het nu noodzakelijk dat doelservers de Content-Type header in hun antwoorden opnemen om Prometheus te informeren over het protocol van de meegeleverde statistieken. Dit beïnvloedt tools zoals Node Exporter, die nu moeten reageren op HTTP-verzoeken van Prometheus met de juiste Content-Type. Voor meer details kunt u de Prometheus documentatie raadplegen.

Als niet aan deze eis wordt voldaan, kunt u een foutmelding tegenkomen zoals deze:

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

Hier zijn enkele manieren om dit probleem op te lossen:

Als u werkt met een doelserver zoals Node Exporter, overweeg dan om deze bij te werken naar de nieuwste versie. Recente updates zorgen er doorgaans voor dat de Content-Type header correct is gedefinieerd, wat de fout in Prometheus zou moeten oplossen.

Voor aangepaste doelservers, zoals een API-route die u hebt ontwikkeld om Prometheus-statistieken te retourneren, kunt u de Content-Type header direct in de respons instellen.

Als u bijvoorbeeld HapiJS gebruikt, in plaats van uw statistieken als volgt te retourneren:

return metrics

Kunt u de Content-Type header als volgt instellen:

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

Hier zijn de ondersteunde Content-Type headers op basis van het protocol van de statistieken die u retourneert:

  • 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

U kunt ook een fallback-protocol definiëren in uw prometheus.yml configuratiebestand. Dit protocol wordt gebruikt als de doelserver geen Content-Type header specificeert.

Hier is een voorbeeld:

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

Ondersteunde waarden zijn PrometheusProto, PrometheusText0.0.4, PrometheusText1.0.0, OpenMetricsText0.0.1, en OpenMetricsText1.0.0.