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 Manager está integrado, lo que le permite enviar alertas directamente a Slack, Mattermost, PagerDuty y otros destinos populares.
  • Un servidor de correo electrónico dedicado le permite enviar alertas ilimitadas por email sin necesidad de configuración adicional.
  • Blackbox está incluido, permitiéndole monitorizar HTTP, ICMP, TCP y 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.

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:

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.

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

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.