Prometheus: Risoluzione dei problemi
Errori che puoi incontrare con Prometheus
👋 Benvenuti nella documentazione di Stackhero!
Stackhero offre una soluzione Prometheus cloud pronta all'uso che fornisce numerosi vantaggi, tra cui:
Alert Managerincluso per inviare avvisi aSlack,Mattermost,PagerDuty, ecc.- Server email dedicato per inviare avvisi email illimitati.
Blackboxper sondareHTTP,ICMP,TCPe altro ancora.- Configurazione facile con editor di file di configurazione online.
- Aggiornamenti senza sforzo con un solo clic.
- Prestazioni ottimali e sicurezza robusta grazie a una VM privata e dedicata.
Risparmia tempo e semplifica la tua vita: bastano solo 5 minuti per provare la soluzione di Prometheus cloud hosting di Stackhero!
Risoluzione dell'errore "received unsupported Content-Type "..." and no fallback_scrape_protocol specified for target"
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:
1. Aggiorna i tuoi server target
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.
2. Definisci l'intestazione Content-Type per i tuoi server target
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
3. Definisci un protocollo di fallback
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.