Oi, Matheus.
Tudo bem?
Matheus, a mensagem diz que não existe rota de comunicação configurada/estabelecida entre o Prometheus e a aplicação.
Você esta utilizando o arquivo docker-compose.yaml que esta disponibilizado para download no capitulo dessa aula ou esta trabalhando com um arquivo que foi desenvolvido no decorrer do curso?
A aplicação esta acessível via Proxy? Se sim, valide a exposição de métricas acessando a rota abaixo:
http://localhost/metrics
Verifique se seu docker-compose.yaml esta exatamente com estas configurações:
version: '3'
networks:
database:
internal: true
cache:
internal: true
api:
internal: true
monit:
proxy:
services:
redis-forum-api:
image: redis
container_name: redis-forum-api
restart: unless-stopped
expose:
- 6379
networks:
- cache
mysql-forum-api:
image: mysql:5.7
container_name: mysql-forum-api
restart: unless-stopped
environment:
MYSQL_DATABASE: 'forum'
MYSQL_USER: 'forum'
MYSQL_PASSWORD: 'Bk55yc1u0eiqga6e'
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
MYSQL_ROOT_HOST: '%'
volumes:
- ./mysql:/docker-entrypoint-initdb.d
expose:
- 3306
networks:
- database
depends_on:
- redis-forum-api
app-forum-api:
build:
context: ./app/
dockerfile: Dockerfile
image: app-forum-api
container_name: app-forum-api
restart: unless-stopped
networks:
- api
- database
- cache
depends_on:
- mysql-forum-api
healthcheck:
test: "curl -sS http://app-forum-api:8080/actuator/health"
interval: 1s
timeout: 30s
retries: 60
proxy-forum-api:
image: nginx
container_name: proxy-forum-api
restart: unless-stopped
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/proxy.conf:/etc/nginx/conf.d/proxy.conf
ports:
- 80:80
networks:
- proxy
- api
depends_on:
- app-forum-api
prometheus-forum-api:
image: prom/prometheus:latest
container_name: prometheus-forum-api
restart: unless-stopped
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- ./prometheus/prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--web.enable-lifecycle'
ports:
- 9090:9090
networks:
- monit
- api
depends_on:
- proxy-forum-api
Após validar o docker-compose, caso não encontre nada diferente, faça a validação das mudanças no application.properties do conteiner da aula anterior e refaça o build da aplicação por desencargo de consciência.
As mudanças no arquivo application.properties foram nos seguintes blocos:
# Redis cache config
spring.cache.type=redis
spring.redis.host=redis-forum-api
spring.redis.port=6379
# datasource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://mysql-forum-api:3306/forum
spring.datasource.username=forum
spring.datasource.password=Bk55yc1u0eiqga6e
# Actuator
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include=health,info,metrics,prometheus
# Prometheus
management.metrics.enable.jvm=true
management.metrics.export.prometheus.enabled=true
management.metrics.distribution.sla.http.server.requests=50ms,100ms,200ms,300ms,500ms,1s
management.metrics.tags.application=app-forum-api
Assegure-se de que o build seja executado com estas configurações, estando no diretório/pasta da aplicação e rodando o comando abaixo no terminal:
mvn clean package
É importante validar se o build da aplicação foi executado com as alterações feitas na aula anterior, para assegurar que a aplicação esteja encontrando o Redis e o MySQL conteinerizados, para sabermos sobre que a configuração esta válida, faça uma verificação no estado do conteiner da aplicação, via terminal:
Em ambientes Linux ou MacOs (Shell Bash)
docker container ps | grep app-forum-api
Em ambientes Windows (CMD)
docker container ps | findstr app-forum-api
Aguardo seu retorno para saber se o problema foi solucionado ou não.
Abraços.