Prometheus: Risoluzione dei problemi

Errori che puoi incontrare con Prometheus

👋 Benvenuti nella documentazione di Stackhero!

Stackhero offre una piattaforma Prometheus cloud completamente gestita, progettata per garantire affidabilità e semplicità:

  • Alert Manager è integrato, così potete inviare avvisi direttamente a Slack, Mattermost, PagerDuty e altre destinazioni popolari.
  • Un server email dedicato vi consente di inviare avvisi email illimitati senza configurazioni aggiuntive.
  • Blackbox è incluso, permettendovi di effettuare probe su protocolli come HTTP, ICMP, TCP e altri per un monitoraggio completo.
  • Configurate rapidamente la vostra istanza tramite l’editor online del file di configurazione. Non è necessario gestire manualmente i file YAML.
  • Applicate gli aggiornamenti con un solo clic. Stackhero si occupa dell’intero processo di upgrade, riducendo al minimo i tempi di inattività e l’intervento manuale.
  • Alte prestazioni e sicurezza avanzata sono garantite grazie a un’infrastruttura privata e dedicata.

Sarete operativi in circa 5 minuti. Stackhero si occupa della configurazione, così potete concentrarvi sul monitoraggio invece che sulla manutenzione. Provate Prometheus cloud hosting su Stackhero per ottimizzare i vostri flussi di lavoro di monitoring e alerting.

Con il rilascio di Prometheus v3, è ora necessario che i server target includano l'intestazione Content-Type nelle loro risposte per informare Prometheus sul protocollo delle metriche contenute nella risposta. Questo influisce su strumenti come Node Exporter, che ora devono rispondere alle richieste HTTP di Prometheus con il Content-Type appropriato. Per maggiori dettagli, puoi consultare la documentazione di Prometheus.

Se questo requisito non viene soddisfatto, potresti incontrare un messaggio di errore come questo:

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

Ecco alcuni modi per risolvere questo problema:

Se stai lavorando con un server target come Node Exporter, considera di aggiornarlo all'ultima versione. Gli aggiornamenti recenti generalmente assicurano che l'intestazione Content-Type sia correttamente definita, il che dovrebbe risolvere l'errore in Prometheus.

Per i server target personalizzati, come una rotta API che hai sviluppato per restituire metriche Prometheus, puoi impostare direttamente l'intestazione Content-Type nella risposta.

Ad esempio, se stai usando HapiJS, invece di restituire le tue metriche in questo modo:

return metrics

Puoi impostare l'intestazione Content-Type in questo modo:

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

Ecco le intestazioni Content-Type supportate in base al protocollo delle metriche che stai restituendo:

  • 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

Puoi anche definire un protocollo di fallback nel tuo file di configurazione prometheus.yml. Questo protocollo verrà utilizzato se il server target non specifica un'intestazione Content-Type.

Ecco un esempio:

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

I valori supportati sono PrometheusProto, PrometheusText0.0.4, PrometheusText1.0.0, OpenMetricsText0.0.1, e OpenMetricsText1.0.0.