Prometheus: Solución de problemas
Errores que puede encontrar con Prometheus
👋 ¡Bienvenido a la documentación de Stackhero!
Stackhero ofrece una plataforma totalmente gestionada de Prometheus en la nube diseñada para ofrecer fiabilidad y simplicidad:
Alert Managerestá integrado, lo que le permite enviar alertas directamente aSlack,Mattermost,PagerDutyy otros destinos populares.- Un servidor de correo electrónico dedicado le permite enviar alertas ilimitadas por email sin necesidad de configuración adicional.
Blackboxestá incluido, permitiéndole monitorizarHTTP,ICMP,TCPy otros protocolos para una supervisión completa.- Configure su instancia rápidamente utilizando el editor online de archivos de configuración. No es necesario gestionar archivos YAML manualmente.
- Aplique actualizaciones con un solo clic. Stackhero se encarga del proceso de actualización por usted, minimizando el tiempo de inactividad y la intervención manual.
- Alto rendimiento y máxima seguridad integrados, gracias a su propia infraestructura privada y dedicada.
Ponga todo en marcha en unos 5 minutos. Stackhero se encarga de la configuración para que pueda centrarse en la monitorización, no en el mantenimiento. Pruebe el hosting de Prometheus en la nube de Stackhero para optimizar sus flujos de trabajo de monitorización y alertas.
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.