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 Managerestá integrado, permitindo-lhe encaminhar alertas diretamente para oSlack,Mattermost,PagerDutye outros destinos populares.- Um servidor de email dedicado permite-lhe enviar alertas por email ilimitados sem necessidade de configuração adicional.
- O
Blackboxestá incluído, possibilitando a monitorização de protocolos comoHTTP,ICMP,TCPe 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.
Resolução do erro "received unsupported Content-Type "..." and no fallback_scrape_protocol specified for target"
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:
1. Atualize os seus servidores alvo
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.
2. Defina o cabeçalho Content-Type para os seus servidores alvo
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
3. Defina um protocolo de fallback
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.