JAVA/프로젝트

쿠폰 선착순 발급 이벤트 -프로메테우스, 그라파나를 사용해 모니터링 환경 구축

whyHbr 2024. 12. 9. 16:07
728x90
반응형

프로메테우스를 통해 메트릭을 수집하고, 그라파나를 사용해 시각화, 대시보드를 설정한다.


build.gradle.kts 의존성 추가

implementation("org.springframework.boot:spring-boot-starter-actuator")
implementation("io.micrometer:micrometer-registry-prometheus")

 


yml 파일 설정

 

core.yml

---
spring:
  config:
    activate:
      on-profile: prod
  datasource:
    hikari:
      jdbc-url: jdbc:mysql://PROD_URL:3306/coupon
      driver-class-name: com.mysql.cj.jdbc.Driver
      maximum-pool-size: 10
      max-lifetime: 30000
      connection-timeout: 3000
      username: PROD_USER_NAME
      password: PROD_PASSWORD
  jpa:
    hibernate:
      ddl-auto: none
  data:
    redis:
      host: PROD_URL
      port: 6379

 

consumer.yml

management:
  metrics:
    tags:
      application:
        ${spring.application.name}
  endpoints:
    web:
      exposure:
        include: prometheus

 

api.yml

server:
  port: 8080
  tomcat:
    mbeanregistry:
      enabled: true
management:
  metrics:
    tags:
      application:
        ${spring.application.name}
  endpoints:
    web:
      exposure:
        include: prometheus

 

 

루트 모듈(coupon) 에 monitoring 패키지를 추가한다.

prometheus.yml 을 추가한다.

global:
  scrape_interval: 5s // http://localhost:8080/actuator/prometheus 매트릭 수집 주기 5s

scrape_configs:
  - job_name: "coupon-api"
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: [ 'host.docker.internal:8080' ]
  - job_name: "coupon-consumer"
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: [ 'host.docker.internal:8081' ]

 

 


docker-compose.yml

version: '3.7'
services:
  prometheus: //프로메테우스를 사용해 메트릭 수집
    image: prom/prometheus
    container_name: prometheus
    volumes:
      - ./prometheus/config:/etc/prometheus
      - ./prometheus/volume:/prometheus
    ports:
      - 9090:9090
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
    restart: always
    networks:
      - promnet
  grafana: // 그라파나를 통해 시각화. 대시보드를 만든다.
    image: grafana/grafana
    container_name: grafana
    ports:
      - 3000:3000
    volumes:
      - ./grafana/volume:/var/lib/grafana
    restart: always
    networks:
      - promnet
networks:
  promnet:
    driver: bridge

 


접근하기

 

cd monitoring 로 모니터링 패키지로 접근해 docker-conpose up -d 을 사용해 container 를 띄워준다.

 

 

프로메테우스: 

9090포트로 들어가 status 를 확인해준다.

couponApiApplication. couponCousumerApplication 을 실행해주면 초록불이 들어온다. 

 

 

Query - system_cpu_usage - excute 를 확인해보면

cpu 사용량을 볼 수 있다. 

성능 테스트 후라 사용 흔적이 있다.

 

 

 

그라파나 port에 접속하면 로그인 창이 나온다.

name, password: admin 로 로그인 한다. 

 

Home - connections - Data Source 에서 프로메테우스를 설정해준다.

 

모니터링을 할 수 있다.

 

 


성능 테스트:

RPS 가 4652 로 상승한 것을 볼 수 있다.

 

RPS:

mySql 3669 - redis 분산락 319 - redis script 4652 

728x90