(로그, 메트릭) 모니터링 대시보드가 뭐죠?(2) EC2에 프로메테우스 설치하기

이돈이면 official·2023년 8월 9일
0
post-thumbnail
post-custom-banner

안녕하세요.
이돈이면 팀의 이리내입니다.

이번 포스팅에서는 EC2에 프로메테우스를 설치하는 내용을 다룰거예요.
그 전에 살짝 저희 프로젝트의 서버 구조를 보고 가실게요~


저희는 지금 위처럼 테스트 서버와 운영 서버로 분리되어 있어요.
각각의 서버에서는 스프링 애플리케이션과, mysql이 돌아가고 있습니다.

그리고 여기에 모니터링을 이렇게 얹어볼거예요.

왜 모니터링 서버를 분리했냐면요,
사실 저번 데모데이를 준비하는 전날, 스프링 애플리케이션과 같이 돌아가던 로그 모니터링 웹페이지가 터지는 일이 있었습니다.
여기서 저희 팀원들이 들었던 생각이 있었어요.

기껏만들어놨는데, 서버가 터져서 못본다니...
그렇다면 운영서버가 터지더라도 모니터링은 수월하게 할 수 있도록, 모니터링 서버를 별도의 서버로 분리해야겠다!

그래서 분리했어요.
그리고 분리해야, 테스트와 운영환경의 환경을 동일하게 가져갈 수 있잖아요?하하!

일단 테스트 서버를 모니터링하는 환경을 구축해보고, 잘돌아가면 운영서버에 구축해볼 것입니다.

스프링부트 프로젝트에 추가해야하는 설정

프로메테우스를 쓰기 위해선, 스프링부트 프로젝트에 약간의 설정을 추가해줘야합니다.
아래 설정들을 추가하고 테스트 서버에 반영해주었습니다.

build.gradle

// actuator 추가
implementation 'org.springframework.boot:spring-boot-starter-actuator'
// 프로메테우스 추가
implementation 'io.micrometer:micrometer-registry-prometheus'

application.properties

management.endpoints.web.exposure.include=prometheus
management.endpoint.prometheus.enabled=true
server.tomcat.mbeanregistry.enabled=true

Actuator가 갑자기 튀어나와서 잠깐 설명을 드릴게요.

  • Actuator: 매트릭 정보를 쉽게 제공해준다
  • Prometheus: 매트릭 정보를 수집, 저장해 준다
  • Grafana: Prometheus 로 확인한 결과를 시각화해준다

Actuator는 스프링 애플리케이션의 모니터링을 외부에서 쉽게 할 수 있도록 도와줘요!
{서버 주소}/actuator/prometheus 이런식으로 접근하면 관련된 정보를 확인할 수 있는거죠!

properties 파일에서 actuator를 통해 노출하는 정보는 prometheus만 노출하도록 했고,
맨 아래는 추후에 그라파나에서 tomcat을 분석하기 위해 추가한 설정이에요.

EC2에 프로메테우스 설치

이제 모니터링용 서버에 접속해서 프로메테우스를 설치해봅니다.

https://prometheus.io/download/
위에 사이트에서 환경에 맞는 프로메테우스의 링크를 복사해주어야 해요.
참고로 저희는 ubuntu에 아키텍처로는 arm을 쓰고 있답니다.
이걸 무시하고 처음에 amd로 받았다가 봉변을 당했지 뭐에옹

그리고 서버에서 복사한 링크를 이용해 명령어를 실행해주었습니다.

sudo apt-get update
wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-arm64.tar.gz

이제 압축파일이 생겼으니 압축을 풀어주어야겠죠?

tar xvzf prometheus-2.45.0.linux-arm64.tar.gz


amd로 하다가 잘 안되서 arm으로 바꿔서 한 흔적이 남아있는데요..
어쨌든 압축 해제한 폴더로 이용해서 prometheus.yml 파일을 수정해줬어요.

cd prometheus-2.45.0.linux-arm64
vi prometheus.yml

아래는 yml 파일에 추가해준 내용입니다.
이때는 모니터링 타겟으로는 테스트 서버만 추가했는데요, 이후에 운영 서버도 동일하게 아래에 job_name과 targets 주소만 바꿔서 파일에 추가해줬어요!

- job_name: "test-spring-actuator"
    metrics_path: '/actuator/prometheus'
    scrape_interval: 10s
    static_configs:
      - targets: ["테스트서버ip주소지롱:8080"]

yml 파일을 어떻게 수정해 주는지 모른다구요?
i를 눌러 insert 모드로 전환한 다음, 파일에 내용 수정하고, esc 누르고 :wq 입력해주면 됩니다.
저도 이제서야 완전히 외웠어옹

이제 프로메테우스를 실행할 수 있게되었어요!
같은 디렉토리에 있는 프로메테우스 파일을 실행해줍니다.

./prometheus

프로메테우스는 기본 포트번호가 9090이에요.
그래서 '모니터링 서버 주소:9090'을 통해 프로메테우스에 접속할 수 있는데요,
하지만 우테코 aws 계정에서는 9090은 닫혀있는 포트입니다...
따라서 다른 포트로 입력이 들어오면 9090으로 갈 수 있도록 포트포워딩을 해줬습니다.

이제 프로메테우스 홈페이지를 볼 수 있어요!!

아래는 예시로 cpu 사용량을 검색해본 것인데요,
현재 운영서버와 테스트 서버에 대해서 나와있는 모습이에요~!

다음엔 수집한 데이터들을 그라파나에서 대시보드로 시각화 하는 내용을 다뤄보도록 하겠슴돠

profile
이돈이면 기술 블로그입니다 🫶🏻
post-custom-banner

0개의 댓글