2
respostas

Estou usando wsl e tendo problemas com a conexão do prometheus

Estou utilizando o docker rodando os containers no WSL e não no windows diretamente. Estou tendo problemas com "connection refused" no prometheus com endpoint utilizado de como target. Como estou no wsl, o "host.docker.internal:8080" não funciona, ele não encontra o host. Tentei utilizar também o "localhost:8080" mas também não funciona.

Gostaria de saber se há alguma possibilidade de rodar dessa forma, ou se tenho que rodar diretamente o prometheus no windows para que as metricas funcionem corretamente.

2 respostas

Oi Kaio! Tudo bem?

O problema que você está enfrentando é comum, pois o host.docker.internal não é suportado no WSL da mesma forma que no Windows nativo. No entanto, há algumas alternativas que você pode tentar para resolver isso.

  1. Usar o IP do WSL: Você pode tentar usar o IP do WSL em vez de localhost ou host.docker.internal. Para descobrir o IP do WSL, você pode executar o comando ip addr show eth0 no terminal do WSL e procurar pela linha que começa com inet.

  2. Configurar o Docker para usar o host network: Outra abordagem é rodar o Docker com a opção --network="host", que permite que o container use a rede do host. No entanto, isso só funciona no Linux, então, se você estiver usando o WSL2, pode ser uma opção viável.

  3. Modificar o arquivo de configuração do Prometheus: No seu arquivo prometheus.yaml, você pode tentar substituir host.docker.internal:8080 pelo IP do WSL que você encontrou no passo 1.

Espero que uma dessas soluções ajude a resolver o problema.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Kaio, estou usando Ubuntu aqui e só funcionou depois que eu adicionei o parâmetro --network host no comando docker run e configurei o targets no arquivo prometheus.yml como [ '127.0.0.1:8080' ].