Prometheus: Resolução de Problemas

Erros que pode encontrar com o Prometheus

👋 Bem-vindo à documentação da Stackhero!

A Stackhero disponibiliza uma plataforma Prometheus cloud totalmente gerida, concebida para garantir fiabilidade e simplicidade:

  • O Alert Manager está integrado, permitindo-lhe encaminhar alertas diretamente para o Slack, Mattermost, PagerDuty e outros destinos populares.
  • Um servidor de email dedicado permite-lhe enviar alertas por email ilimitados sem necessidade de configuração adicional.
  • O Blackbox está incluído, possibilitando a monitorização de protocolos como HTTP, ICMP, TCP e outros, para uma supervisão abrangente.
  • Configure rapidamente a sua instância através do editor online de ficheiros de configuração. Não é necessário editar YAML manualmente.
  • Aplique atualizações com um único clique. A Stackhero gere todo o processo de atualização por si, minimizando o tempo de indisponibilidade e a intervenção manual.
  • Elevado desempenho e segurança reforçada estão garantidos, graças à sua infraestrutura privada e dedicada.

Fique operacional em cerca de 5 minutos. A Stackhero trata da configuração para que se possa concentrar na monitorização, não na manutenção. Experimente o Prometheus cloud hosting da Stackhero para simplificar os seus fluxos de trabalho de monitorização e alertas.

Com o lançamento do Prometheus v3, é agora necessário que os servidores alvo incluam o cabeçalho Content-Type nas suas respostas para informar o Prometheus sobre o protocolo das métricas contidas na resposta. Isto afeta ferramentas como o Node Exporter, que agora devem responder a pedidos HTTP do Prometheus com o Content-Type apropriado. Para mais detalhes, pode consultar a documentação do Prometheus.

Se este requisito não for cumprido, poderá encontrar uma mensagem de erro como esta:

received unsupported Content-Type "application/octet-stream" and no fallback_scrape_protocol specified for target

Aqui estão algumas formas de resolver este problema:

Se estiver a trabalhar com um servidor alvo como o Node Exporter, considere atualizá-lo para a versão mais recente. As atualizações recentes geralmente garantem que o cabeçalho Content-Type está corretamente definido, o que deverá resolver o erro no Prometheus.

Para servidores alvo personalizados, como uma rota API que desenvolveu para retornar métricas do Prometheus, pode definir diretamente o cabeçalho Content-Type na resposta.

Por exemplo, se estiver a usar HapiJS, em vez de retornar as suas métricas assim:

return metrics

Pode definir o cabeçalho Content-Type assim:

return h.response(metrics).type('text/plain;version=0.0.4');

Aqui estão os cabeçalhos Content-Type suportados com base no protocolo das métricas que está a retornar:

  • 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

Também pode definir um protocolo de fallback no seu ficheiro de configuração prometheus.yml. Este protocolo será utilizado se o servidor alvo não especificar um cabeçalho Content-Type.

Aqui está um exemplo:

  - job_name: "my-job"
    # [...]
    fallback_scrape_protocol: PrometheusText0.0.4

Os valores suportados são PrometheusProto, PrometheusText0.0.4, PrometheusText1.0.0, OpenMetricsText0.0.1, e OpenMetricsText1.0.0.