실전! Spring 앱 모니터링 (w. 프로메테우스, 그라파나, EC2)

🔥Log·2023년 4월 23일
2

스프링

목록 보기
12/18

☕ 시작


이번 글에서는 지난 글에 이어서 모니터링 시스템을 구축해볼 것이다.
단, 지난 글과 차이점은 실제 배포된 스프링 앱에 대한 모니터링 서버를 구축한다는 것이다.

EC2에 프로메테우스와 그라파나를 설치하고 구동해보도록 하겠다.

레츠고 🔥

서버 환경

  • AWS EC2 Ubuntu 20.04

🍃 스프링 설정


1) 필요 라이브러리 설치

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-actuator'
	implementation 'io.micrometer:micrometer-registry-prometheus'
}

이렇게 2가지 라이브러리를 설치한다.

2) application.properties 설정 추가

management.endpoints.web.exposure.include=prometheus
management.endpoint.prometheus.enabled=true

application.properties 또는 application.yml에 위 설정들을 추가한다.
허용 엔드포인트에 prometheus말고 다른 것도 추가할 사람들은 아래와 같이 콤마로 구분해주면 된다.

이렇게 하고 서버를 실행했을 때 프로메테우스 엔드포인트가 잘 노출이되면, 성공적으로 설정이 된 것이다.


3) EC2 보안 그룹 설정

인바운드 규칙에 프로메테우스가 설치될 EC2의 IP를 허용해주자.


💻 프로메테우스, 그라파나 서버 세팅


1) EC2 생성

취향에 따라서 다르겠지만, 나는 Ubuntu 20.04로 EC2를 생성해주었다.
그리고, 나의 컴퓨터가 ssh(22포트)로 서버에 접속할 수 있게 보안그룹을 설정해주면 된다.
(EC2 설정은 글의 주제와 좀 벗어나서 길게 언급하지 않겠다.)


2) 보안그룹 설정

먼저 Elastic IP를 EC2서버에 할당해준다.

그리고 보안그룹에서 그라파나가 프로메테우스에 접근하기 위한 설정은 반드시 추가해주고, 나머지는 기호(?)나 상황에 맞게 설정해주면 된다.


🔥 프로메테우스 설치 및 실행


1) 프로메테우스 설치

sudo apt-get update
sudo apt-get install -y prometheus prometheus-node-exporter prometheus-pushgateway prometheus-alertmanager

위 명령어들을 순서대로 실행해주면 된다.


2) 프로메테우스 실행

sudo systemctl start prometheus
sudo systemctl enable prometheus

위 명령어들로 프로메테우스를 실행한다.

sudo systemctl status prometheus

그리고 위 명령어로 실행상태를 확인해보면, 아래와 같이 정상적으로 실행되고 있는 것을 확인할 수 있다.


3) prometheus.ymml 수정

  - job_name: "{서버 별칭}"
    metrics_path: "{내 서버의 Actuator 경로}/prometheus"
    scrape_interval: 10s 
    static_configs:
      - targets: ["{스프링 서버 IP}:{스프링 서버 포트}"]

아마 /etc/prometheus 하위에 prometheus.yml이 있을 것인데, 위 내용을 추가해주고 프로메테우스를 재실행해준다.

sudo systemctl restart prometheus

재실행은 위 명령어로 할 수 있다.


4) 연동 확인

이제 브라우저로 {프로메테우스가 설치된 EC2 IP}:9090으로 접속해보면, 이렇게 잘 접속이 되는 것을 확인할 수 있다.

위 페이지는 Status > Targets 페이지이다.


🌠 그라파나 설치 및 실행


프로메테우스를 설치한 EC2에 그라파나도 설치하겠다.
그라파나는 OSS (오픈소스) 버전을 설치한다.

1) 그라파나 레포지토리 추가

sudo apt-get update
sudo apt-get install wget curl gnupg2 apt-transport-https software-properties-common -y
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list

위 명령어들을 순서대로 실행한다.


2) 그라파나 설치

sudo apt-get update
sudo apt-get install grafana -y

위 명령어들을 순서대로 실행한다.

grafana-server -v

그리고 그라파나 서버의 버전을 찍어보면 정상적으로 버전이 출력되는 것을 확인할 수 있다.


3) 그라파나 실행

sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo systemctl status grafana-server

위 명령어들로 그라파나를 실행하고 상태를 확인할 수 있다.


4) 프로메테우스 데이터 소스 추가

이제 그라파나가 설치된 서버의 3000포트로 접속해보면 정상적으로 그라파나 대시보드에 접속할 수 있게 된다.

그리고, 아까 세팅한 프로메테우스와 연동해야하는데, 이전 글을 참고하면 좋을 것 같다 🤭


5) 대시보드 생성

저번 글과 달리 이번 글에서는 이미 만들어진 멋들어지는 대시보드를 import해서 사용해보겠다.

대시보드 페이지에서 import를 선택해준다.

여기에 내가 import하길 원하는 대시보드를 가져올 것이다. 다양한 대시보드들은 여기에서 확인할 수 있다.

나는 이 녀석을 가져와 보겠다. ㅎㅎ

이 대시보드의 번호는 11378이므로, 위에서 봤던 대시보드 import하는 곳에 11378을 입력하고 Load버튼을 눌러주자.

그리고 프로메테우스를 선택하는 곳에는 우리가 만든 프로메테우스 데이터 소스를 선택해준다.

그리고 대시보드로 다시 이동하면, 이렇게 멋진 대시보드 페이지를 볼 수 있다.


대시보드의 중간쯤에 보면 jetty_어쩌구라는 데이터가 보일 건데, 나는 Jetty서버를 쓰지 않으므로, 이 설정을 톰캣 서버에 대한 지표로 수정해주겠다.

Thread config min

  • jetty_threads_config_min 삭제

Thread config max

  • jetty_threads_config_max -> tomcat_threads_config_max_threads

Threads

  • jetty_threads_current -> tomcat_threads_current_threads
  • jetty_threads_busy -> tomcat_threads_busy_threads
  • jetty_threads_idle 삭제
  • jetty_threads_jobs 삭제

참고


2개의 댓글

comment-user-thumbnail
2024년 2월 11일

덕분에 좋은 정보 잘 보고 갑니다.
감사합니다.

1개의 답글