Toay I Leanred
프로메테우스를 사용하기 위해 docker에서 실행을 시켰는데 Get "http://host.docker.internal:8080/actuator/prometheus": dial tcp 192.168.219.105:8080: connect: no route to host 에러가 발생하였다😭
함께 공부하는 팀원분들은 다들 문제없이 잘 작동하던데ㅠ.. 우리 집 컴퓨터는 매번 나에게 공부를 하라고 숙제를 내준다
그럼에도 잘 해결하였으니, 오늘의 TIL을 작성해 보자!!
[ 문제 ]
- prometheus.yml
- host.docker.internal은 Docker에서 제공하는 특수한 DNS 이름으로 Docker 컨테이너가 호스트 머신(즉, Docker를 실행하는 컴퓨터)의 네트워크 서비스에 접근할 수 있도록 해준다고 한다.
- 즉, host.docker.internal 를 통해 컨테이너 내부에서 호스트 머신의 네트워크 주소를 참조할 수 있다.
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'spring-boot'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['host.docker.internal:8080']
- docker에서 prometheus 실행
- localhost:9090 에 접속하여 프로메테우스 서버 접속
- 스프링 애플리케이션을 Run하고 있는지 확인
문제의 프로메테우스 설정 에러가 발생하였다.
[ 문제 해결 과정]
2가지 해결 방법
- 집에서 사용하는 공유기마다 설정이 조금씩 다를 수 있어서, 공유기 포드포워딩을 해줘야 한다는 말을 듣게 되었다.
- prometheus.yml 설정의 host.docker.internal 부분을 내부 Ip로 바꿔주면 해결이 될 수도 있다는 얘기를 듣게 되었다.
[ 공유기 포드 포워딩 ]
- 사용 공유기는 U+이다
https://m.blog.naver.com/ksdf25/222655817456
- 내부 Ip 주소 확인
- cmd를 열고 ipconfig를 입력하여 확인이 가능하다.
- IPv4 주소가 본인의 내부 Ip 주소이다.
- 노트북을 사용함으로 무선 LAN의 IPv4 주소를 확인하자.
- 8080 Port 포드 포워딩
- 포드 포워딩 후 재실행
- docker에서 promethus를 삭제하고 다시 실행시켜보기
- 스프링 애플리케이션을 Run
- localhost:9090 프로메테우스 서버 접속
아쉽지만 프로메테우스 설정 에러를 해결하지 못한 모습을 볼 수 있다.
두 번째 해결 방법을 사용해 보도록 하자!!
[ prometheus.yml 설정 편집 ]
- promethetus.yml 수정
- targets의 host.docker.internal 부분을 본인의 내부 Ip 주소로 바꿔주자
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'spring-boot'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['192.168.219.100:8080']
[ 문제 해결 ]
- 문제 해결
- docker에서 promethus를 삭제하고 다시 실행시켜보기
- 스프링 애플리케이션 Run
- localhost:9090 프로메테우스 서버 접속
프로메테우스가 정상적으로 작동하는 것을 볼 수 있다
3시간에 걸친 사투 끝에 프로메테우스를 정상 작동시키는데 성공하였다. 금방 해결할 줄 알았지만 쉽지 않았던 것 같고, 가끔은 코드를 짜는 것보다 설정을 하는데 더 많은 시간과 에너지가 소모되는 것 같다는 생각이 들 때가 있다
읽어주셔서 감사합니다 😭
.
.
.
하고 끝났으면 해피엔딩이지만 이후 Grapana에 prometheus를 연결하는 과정에서 문제가 생겼다.
[ 비하인드 ]
앞선 과정들은 Grapana에서 prometheus를 연결 위한 과정들이었다.
Grapana에 prometheus를 연결하기 위해 연결 시도를 해봤는데 그 과정에서 2가지 문제가 발생하였다.
- Grapana에 prometheus를 연결하기 위해, Grapana의 Connecion을 내부Ip로 주니까 연결이 되지 않았다.
- 알고보니 우분투에서 docker를 실행시켜서, Grafana에 prometheus 연결 시 WSL 과 같이 사용하는 경우에 옵션을 몇 개 추가해야 한다고 한다.
결국 로컬에 도커를 설치해서 처음부터 다시 실행했더니 prometheus.yml을 host.docker.internal로 설정해도 잘 동작했다.
Successfully 문구를 보기까지 많은 도전이 있던 하루였던 것 같다. 감격 😭
'해피 코딩 > Today I Learned' 카테고리의 다른 글
[TIL 16] 스파르타 첫 번째 팀 프로젝트 시작 (1) | 2024.08.23 |
---|---|
[TIL 15] DB Lock의 종류와 문제 사례 (0) | 2024.08.22 |
[TIL 14] RabbitMQ 추가 실습 + JMeter (0) | 2024.08.18 |
[TIL 12] RabbitMQ 이론 정복하기 (0) | 2024.08.16 |
[TIL 11] Chater 1. 과제와 피드백 내용 (0) | 2024.08.15 |