Monitoring) Grafana + prometheus 모니터링

박우영·2023년 5월 25일
0

모니터링

목록 보기
1/1

왜 도입해야하는가?


백엔드에서 가장중요한 것중 하나가 성능최적화 라고생각하는데 성능을 최적화 하기위해선 트래픽들을 분석하고 개선후 변화가 어떻게 되는지 확인하는것이 중요하다고 생각합니다. 특히 MSA 로 진행하는 프로젝트에서는 필수라고 생각합니다. 각 MS 의 리소스들의 트래픽을 분석하고 조율해야합니다. 특히 수많은 컨테이너를 띄우게 되는데 각 컨테이너마다 들어가서 log를 확인하는것과 같은 수고가 줄어들것입니다.

사용하기


build.gradle

    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'io.micrometer:micrometer-core'
    implementation 'io.micrometer:micrometer-registry-prometheus'
  • actuator : Spring Cloud 에서도 사용했지만 상태정보(Metrics)등을 제공합니다.
  • prometheus : Prometheus는 메트릭 수집, 시각화, 알림, 서비스 디스커버리 기능을 모두 제공하는 오픈 소스 모니터링 시스템

이 두가지를 활용해서 서버의 메트릭 을 시각화하고 Grafana 를 통해 보다 편리하게 모니터링을 하고자 합니다.

application.yml

management:
  endpoints:
    web:
      exposure:
        include: health, info, prometheus

다음과 같이 yml 을추가하면 기존의 actuator 에서 info, prometheus가 추가된것을 확인할 수 있습니다.

prometheus url을 들어가보면 매우많은 정보들이 나옵니다.

시간 설정 에러


Baeker 프로젝트에서 cron 기능을 위해 Asia/Sueoul 로 설정해줬고 각 컨테이너 별로 시간을 동일하게 맞춰줘야합니다. 따라서 다음과 같이 docker를 실행시켰습니다.

prometheus

global:
  scrape_interval: 5s
scrape_configs:
  - job_name: 'baeker'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['서버:포트']
docker run -p 9090:9090 -e TZ=Asia/Seoul -v /home/ubuntu/dep/prometheus.yml:/etc/prometheus/prometheus.yml --name prometheus -d bitnami/prometheus:latest --config.file=/etc/prometheus/prometheus.yml

grafana

docker run -d -e TZ=Asia/Seoul --name=grafana -p 3000:3000 grafana/grafana

프로메테우스 연동확인


9090 포트로 띄웠으니 9090 으로 들어가서 Status 를 확인해봅니다.


Status -> targets 를 들어가면

서버 와 프로메테우스의 연결상태를 확인 할 수 있습니다.

그라파나


그라파나는 다양한 템플릿들이 있는데 https://grafana.com/grafana/dashboards/ 로 대시보드를 임포트하여 적용할 수있습니다.

회고


Grafana 와 프로메테우스를 처음 사용해보는데 docker logs -f 로 도커를 들어가서 확인할 필요가없고, 메트릭 정보를 시각화하여 볼 수있다는게 정말 큰 장점 인거같습니다. 물론 MSA 뿐만아니라 성능 최적화를 해야겠지만 특히 많은 MS 통신 , kafka의 상태등을 확인할 수도있어서 MSA 를 적용하고자 한다면 반드시 필요한거같습니다.

0개의 댓글