본 포스팅은 Mac OS를 기준으로 작성 했습니다.
Grafana를 이용해 서버를 모니터링 할 수 있게 설정하는 방법은 이미 꽤 많은 사람들이 자세하게 작성해 놓은 블로그들이 있습니다.
따라서 제가 또 적기보다는 나중에 제가 까먹었을 때 보고 참고하거나 다른 분들도 뭘 봐야할지 모르겠고 설정할 때 큰 흐름을 모르실 때 참고할 수 있게끔 적어보려고 합니다.
우선 Actuator , 프로메테우스(Prometheus), Grafana 이 3개가 필요합니다.
최종적으로 우리 눈으로 Grafana에서 직접 그래프로 관찰할 수 있게 될텐데
이것의 원리를 알고가는게 좋을 것 같습니다.
- 모니터링 원리의 큰 흐름
- Spring boot의 actuator 라이브러리라는 친구가 현재 내 프로젝트의
메트릭 정보
를 노출시킵니다.- 프로메테우스는
actuator가 노출시킨 메트릭 정보
를 수집하고 저장합니다.- 마지막으로 프로메테우스가 수집한 정보들을 Grafana에 표시하여 시각화 할 수 있습니다. 이런 방식으로 저희가 모니터링을 할 수 있는 겁니다!
우선 저의 프로젝트(Lionz)에는 로그인 기능이 있어서 Token이 없으면 다른 어떤 api에 접근할 수가 없습니다.
하지만 모니터링 할 때도 Token이 필요하다면 굉장히 불편하겠죠?
따라서 Token이 없어도 접근할 수 있게 설정해주도록 하겠습니다.
.requestMatchers("/actuator/**").permitAll()
프로젝트 파일의 SecurityConfig파일에 위와 같이 내도메인/actuator/~
의 url에 접근이 가능하도록 설정해줬습니다.
//actuator
implementation 'org.springframework.boot:spring-boot-starter-actuator'
build.gradle에 의존성을 추가해줍시다.
$ brew install prometheus
맥북에서 터미널을 열어 위의 명령어를 입력해 프로메테우스를 설치해줍시다.
$ vi $(brew --prefix)/etc/prometheus.yml
설치가 완료되면 prometheus.yml이라는 파일이 생성됩니다.
위의 명령어를 통해 접근해줍시다.
//prometheus.yml
global:
scrape_interval: 10s // 매트릭 수집 주기
scrape_configs:
- job_name: "원하는 job_name"
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ["localhost:8083"]
위와 같이 작성해주시면 되는데 targets 부분은 본인의 프로젝트를 배포했던 서버의 IP나 도메인을 적어주시면 되겠습니다.
implementation 'io.micrometer:micrometer-registry-prometheus'
build.gralde에 의존성을 추가해줍시다.
management:
endpoints:
web:
exposure:
include: "*"
$ brew services restart prometheus
// 실행중이 아니었다면
$ brew services start prometheus
// 위의 명렁어로 실행시켜 줍니다.
설정을 변경하였다면 위의 명령어를 입력해 프로메테우스를 재시작해줍니다.
프로메테우스가 사용하는 기본 포트는 9090입니다.
따라서 아까 prometheus.yml에 targets 부분에 썼던 본인의 도메인에 9090을 붙여서 접근하시면 됩니다.
https://도메인:9090
url을 입력해 들어갔다면 위와 같이 Status->Targets를 눌러줍니다.
이렇게 초록불이 뜨면 성공입니다!
$ brew update
$ brew install grafana
터미널을 켜서 위의 명령어를 입력해서 Grafana를 설치해줍니다.
$ brew services start grafana
위의 명령어를 입력해 Grafana를 실행해줍니다.
실행이 제대로 됐다면 localhost:3000
으로 접근해줍니다.
localhost:3000
으로 접근했다면 아래와 같이 뜰텐데요!
처음에는 그냥 admin/admin을 통해 로그인하시면 됩니다.
이후의 과정은 https://ttl-blog.tistory.com/1366#%F0%9F%A7%90%20%EA%B7%B8%EB%9D%BC%ED%8C%8C%EB%82%98%EC%99%80%20%ED%94%84%EB%A1%9C%EB%A9%94%ED%85%8C%EC%9A%B0%EC%8A%A4%20%EC%97%B0%EB%8F%99-1
여기에 잘 정리되어 있으니 따라하시면 됩니다!
actuator
https://hudi.blog/spring-boot-actuator-prometheus-grafana-set-up/
프로메테우스 (prometheus)
https://engineering.linecorp.com/ko/blog/armeria-prometheus-monitoring
Grafana
https://grafana.com/docs/grafana/latest/setup-grafana/installation/mac/