본문 바로가기
해피 코딩/Today I Learned

[TIL 13] prometheus 설정 에러 / 대체 나한테 왜그래ㅠ..

by happy-coding 2024. 8. 19.

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가지 해결 방법
  1. 집에서 사용하는 공유기마다 설정이 조금씩 다를 수 있어서, 공유기 포드포워딩을 해줘야 한다는 말을 듣게 되었다.
  2. prometheus.yml 설정의 host.docker.internal 부분을 내부 Ip로 바꿔주면 해결이 될 수도 있다는 얘기를 듣게 되었다. 

[ 공유기 포드 포워딩 ]

  • 사용 공유기는 U+이다

https://m.blog.naver.com/ksdf25/222655817456

 

LG U+ 공유기 포트포워딩 설정하는 방법

오늘 준비한 포스팅 주제는 LG 유플러스 기가와이파이 공유기 포트포워딩 설정방법입니다 저희같은 CC...

blog.naver.com


  • 내부 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가지 문제가 발생하였다.

 

  1. Grapana에 prometheus를 연결하기 위해, Grapana의 Connecion을 내부Ip로 주니까 연결이 되지 않았다.
  2. 알고보니 우분투에서 docker를 실행시켜서, Grafana에 prometheus 연결 시  WSL 과 같이 사용하는 경우에 옵션을 몇 개 추가해야 한다고 한다.

결국 로컬에 도커를 설치해서 처음부터 다시 실행했더니 prometheus.yml을 host.docker.internal로 설정해도 잘 동작했다.

 

Successfully 문구를 보기까지 많은 도전이 있던 하루였던 것 같다. 감격 😭