Prometheus: Solución de problemas
Errores que puede encontrar con Prometheus
👋 ¡Bienvenido a la documentación de Stackhero!
Stackhero ofrece una solución nube de Prometheus lista para usar que proporciona una serie de beneficios, incluyendo:
Alert Managerincluido para enviar alertas aSlack,Mattermost,PagerDuty, etc.- Servidor de correo electrónico dedicado para enviar alertas de correo electrónico ilimitadas.
Blackboxpara sondearHTTP,ICMP,TCP, y más.- Configuración fácil con un editor de archivos de configuración en línea.
- Actualizaciones sin esfuerzo con solo un clic.
- Rendimiento óptimo y seguridad robusta gracias a una VM privada y dedicada.
Ahorre tiempo y simplifique su vida: solo toma 5 minutos probar la solución de alojamiento en la nube de Prometheus de Stackhero!
Solucionando el error "received unsupported Content-Type "..." and no fallback_scrape_protocol specified for target"
Con el lanzamiento de Prometheus v3, ahora es necesario que los servidores de destino incluyan el encabezado Content-Type en sus respuestas para informar a Prometheus sobre el protocolo de las métricas contenidas en la respuesta. Esto afecta a herramientas como Node Exporter, que ahora deben responder a las solicitudes HTTP de Prometheus con el Content-Type adecuado. Para más detalles, puede consultar la documentación de Prometheus.
Si no se cumple este requisito, puede encontrar un mensaje de error como este:
received unsupported Content-Type "application/octet-stream" and no fallback_scrape_protocol specified for target
Aquí hay algunas formas de resolver este problema:
1. Actualice sus servidores de destino
Si está trabajando con un servidor de destino como Node Exporter, considere actualizarlo a la última versión. Las actualizaciones recientes generalmente aseguran que el encabezado Content-Type esté correctamente definido, lo que debería resolver el error en Prometheus.
2. Defina el encabezado Content-Type para sus servidores de destino
Para servidores de destino personalizados, como una ruta API que haya desarrollado para devolver métricas de Prometheus, puede establecer directamente el encabezado Content-Type en la respuesta.
Por ejemplo, si está utilizando HapiJS, en lugar de devolver sus métricas así:
return metrics
Puede establecer el encabezado Content-Type así:
return h.response(metrics).type('text/plain;version=0.0.4');
Aquí están los encabezados Content-Type compatibles según el protocolo de las métricas que está devolviendo:
- 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. Defina un protocolo de respaldo
También puede definir un protocolo de respaldo en su archivo de configuración prometheus.yml. Este protocolo se utilizará si el servidor de destino no especifica un encabezado Content-Type.
Aquí hay un ejemplo:
- job_name: "my-job"
# [...]
fallback_scrape_protocol: PrometheusText0.0.4
Los valores compatibles son PrometheusProto, PrometheusText0.0.4, PrometheusText1.0.0, OpenMetricsText0.0.1, y OpenMetricsText1.0.0.