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 aSlack,Mattermost,PagerDutye 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 comeHTTP,ICMP,TCPe 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.
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.