이번 글에서는 지난 글에 이어서 모니터링 시스템을 구축해볼 것이다.
단, 지난 글과 차이점은 실제 배포된 스프링 앱에 대한 모니터링 서버를 구축한다는 것이다.
EC2에 프로메테우스와 그라파나를 설치하고 구동해보도록 하겠다.
레츠고 🔥
서버 환경
- AWS EC2 Ubuntu 20.04
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-registry-prometheus'
}
이렇게 2가지 라이브러리를 설치한다.
management.endpoints.web.exposure.include=prometheus
management.endpoint.prometheus.enabled=true
application.properties 또는 application.yml에 위 설정들을 추가한다.
허용 엔드포인트에 prometheus
말고 다른 것도 추가할 사람들은 아래와 같이 콤마로 구분해주면 된다.
이렇게 하고 서버를 실행했을 때 프로메테우스 엔드포인트가 잘 노출이되면, 성공적으로 설정이 된 것이다.
인바운드 규칙에 프로메테우스가 설치될 EC2의 IP를 허용해주자.
취향에 따라서 다르겠지만, 나는 Ubuntu 20.04
로 EC2를 생성해주었다.
그리고, 나의 컴퓨터가 ssh(22포트)로 서버에 접속할 수 있게 보안그룹을 설정해주면 된다.
(EC2 설정은 글의 주제와 좀 벗어나서 길게 언급하지 않겠다.)
먼저 Elastic IP를 EC2서버에 할당해준다.
그리고 보안그룹에서 그라파나가 프로메테우스에 접근하기 위한 설정은 반드시 추가해주고, 나머지는 기호(?)나 상황에 맞게 설정해주면 된다.
sudo apt-get update
sudo apt-get install -y prometheus prometheus-node-exporter prometheus-pushgateway prometheus-alertmanager
위 명령어들을 순서대로 실행해주면 된다.
sudo systemctl start prometheus
sudo systemctl enable prometheus
위 명령어들로 프로메테우스를 실행한다.
sudo systemctl status prometheus
그리고 위 명령어로 실행상태를 확인해보면, 아래와 같이 정상적으로 실행되고 있는 것을 확인할 수 있다.
- job_name: "{서버 별칭}"
metrics_path: "{내 서버의 Actuator 경로}/prometheus"
scrape_interval: 10s
static_configs:
- targets: ["{스프링 서버 IP}:{스프링 서버 포트}"]
아마 /etc/prometheus
하위에 prometheus.yml
이 있을 것인데, 위 내용을 추가해주고 프로메테우스를 재실행해준다.
sudo systemctl restart prometheus
재실행은 위 명령어로 할 수 있다.
이제 브라우저로 {프로메테우스가 설치된 EC2 IP}:9090
으로 접속해보면, 이렇게 잘 접속이 되는 것을 확인할 수 있다.
위 페이지는 Status > Targets 페이지이다.
프로메테우스를 설치한 EC2에 그라파나도 설치하겠다.
그라파나는 OSS (오픈소스) 버전을 설치한다.
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
위 명령어들을 순서대로 실행한다.
sudo apt-get update
sudo apt-get install grafana -y
위 명령어들을 순서대로 실행한다.
grafana-server -v
그리고 그라파나 서버의 버전을 찍어보면 정상적으로 버전이 출력되는 것을 확인할 수 있다.
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
sudo systemctl status grafana-server
위 명령어들로 그라파나를 실행하고 상태를 확인할 수 있다.
이제 그라파나가 설치된 서버의 3000포트로 접속해보면 정상적으로 그라파나 대시보드에 접속할 수 있게 된다.
그리고, 아까 세팅한 프로메테우스와 연동해야하는데, 이전 글을 참고하면 좋을 것 같다 🤭
저번 글과 달리 이번 글에서는 이미 만들어진 멋들어지는 대시보드를 import해서 사용해보겠다.
대시보드 페이지에서 import
를 선택해준다.
여기에 내가 import하길 원하는 대시보드를 가져올 것이다. 다양한 대시보드들은 여기에서 확인할 수 있다.
나는 이 녀석을 가져와 보겠다. ㅎㅎ
이 대시보드의 번호는 11378이므로, 위에서 봤던 대시보드 import하는 곳에 11378을 입력하고 Load
버튼을 눌러주자.
그리고 프로메테우스를 선택하는 곳에는 우리가 만든 프로메테우스 데이터 소스를 선택해준다.
그리고 대시보드로 다시 이동하면, 이렇게 멋진 대시보드 페이지를 볼 수 있다.
대시보드의 중간쯤에 보면 jetty_어쩌구
라는 데이터가 보일 건데, 나는 Jetty서버를 쓰지 않으므로, 이 설정을 톰캣 서버에 대한 지표로 수정해주겠다.
덕분에 좋은 정보 잘 보고 갑니다.
감사합니다.