Prometheus: Problemen oplossen

Fouten die u kunt tegenkomen met Prometheus

👋 Welkom bij de Stackhero-documentatie!

Stackhero biedt een volledig beheerd Prometheus cloud platform, ontworpen voor betrouwbaarheid en eenvoud:

  • Alert Manager is geïntegreerd, zodat u waarschuwingen direct kunt doorsturen naar Slack, Mattermost, PagerDuty en andere populaire bestemmingen.
  • Een dedicated mailserver stelt u in staat om onbeperkt e-mailwaarschuwingen te versturen zonder extra configuratie.
  • Blackbox is inbegrepen, waarmee u HTTP, ICMP, TCP en andere protocollen kunt monitoren voor uitgebreide controle.
  • Configureer uw instance snel via de online configuratiebestand-editor. Handmatig YAML beheren is niet nodig.
  • Voer updates uit met één klik. Stackhero verzorgt het upgradeproces voor u, waardoor downtime en handmatige acties tot een minimum worden beperkt.
  • Hoge prestaties en sterke beveiliging zijn standaard, dankzij uw eigen privé en dedicated infrastructuur.

Binnen ongeveer 5 minuten operationeel. Stackhero regelt de installatie, zodat u zich kunt richten op monitoring in plaats van onderhoud. Probeer Prometheus cloud hosting op Stackhero en optimaliseer uw monitoring- en alertingprocessen.

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.