Prometheus: Resolução de Problemas
Erros que pode encontrar com o Prometheus
👋 Bem-vindo à documentação da Stackhero!
A Stackhero oferece uma solução Prometheus cloud pronta a usar que proporciona uma série de benefícios, incluindo:
Alert Managerincluído para enviar alertas paraSlack,Mattermost,PagerDuty, etc.- Servidor de email dedicado para enviar alertas de email ilimitados.
Blackboxpara sondarHTTP,ICMP,TCP, e mais.- Configuração fácil com editor de ficheiros de configuração online.
- Atualizações sem esforço com apenas um clique.
- Desempenho ótimo e segurança robusta alimentados por uma VM privada e dedicada.
Poupe tempo e simplifique a sua vida: leva apenas 5 minutos para experimentar a solução de hospedagem cloud Prometheus da Stackhero!
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.