스프링/스프링부트
-
메트릭 등록 - 게이지스프링/스프링부트 2023. 10. 3. 22:20
게이지는 임의로 오르내릴 수 있는 단일 숫자 값을 나타내는 메트릭이다. 카운터와 게이지는 값이 감소할 수 있는지의 차이이다. @Configuration public class StockConfigV1 { @Bean public MyStockMetric myStockMetric(OrderService orderService, MeterRegistry registry) { return new MyStockMetric(orderService, registry); } @Slf4j static class MyStockMetric { private OrderService orderService; private MeterRegistry registry; public MyStockMetric(OrderService o..
-
메트릭 등록 - Timer스프링/스프링부트 2023. 10. 3. 21:55
Timer는 카운터와 유사한데 실행 시간도 함께 측정해주는 기능이다. Timer 는 다음과 같은 내용을 한번에 측정해준다. seconds_count : 누적 실행 수 - 카운터 seconds_sum : 실행 시간의 합 - sum seconds_max : 최대 실행 시간(가장 오래걸린 실행 시간) - 게이지 최대 실행 시간은 평생 유지되는게 아니라 내부에 타임 윈도우라는 개념이 있어서 1~3분 마다 최대 실행 시간이 다시 갱신된다. 수동 등록 Timer도 자동으로 등록하는 @Timed 어노테이션이 존재하지만 일단 수동 등록부터 정리하겠다. @Slf4j public class OrderServiceV3 implements OrderService { private final MeterRegistry regis..
-
메트릭 등록 - 카운터스프링/스프링부트 2023. 10. 3. 21:19
공통으로 사용되는 메트릭인 공용 메트릭을 사용한다. 하지만, 우리 개인만의 메트릭을 만들어야할 수도 있다. 우리만의 기술이나 사용자의 요구사항에 따라 비즈니스 메트릭이 필요할 때가 있다. 비즈니스의 실시간 주문, 취소, 실시간 재고 수량을 메트릭으로 등록하고 확인해볼 것이다. 주문수, 취소수 - 카운터 사용(계속 증가) 상품을 주문하면 주문수가 증가한다. 상품을 취소해도 주문수는 유지한다. 대신에 취소수를 증가한다. 재고 수량 - 게이지 사용(증가하거나 감소) 상품을 주문하면 재고 수량이 감소한다. 상품을 취소하면 재고 수량이 증가한다. 재고 물량이 들어오면 재고 수량이 증가한다. MeterRegistry - 마이크로미터 기능을 제공하는 핵심 component 기본적으로 다 스프링으로 등록되어 있으며 이..
-
그라파나 - 공유 대시보드 활용스프링/스프링부트 2023. 10. 2. 22:18
https://grafana.com/grafana/dashboards 위의 사이트는 다른 사람들이 만들어놓은 대시보드들이 있는 사이트이다. spring이라고 검색하면 많은 대시보드가 나오는데 이 2개가 가장 많이 사용되는 대시보드이다. 오른쪽의 Spring Boot 2.1 System Monitor 대시보드를 클릭하고 ID를 복사해서 이 ID를 가지고 대시보드를 사용하면 된다. 그라파나의 Dashboards 페이지에 가서 New -> Import를 눌러준다. 이후에 복사한 ID를 입력하고 Load를 누르면 대시보드가 만들어진다. 다른 설정은 손댈 필요 없고 data source만 프로메테우스로 지정해준 다음 Import를 눌러주면 된다. 공유 대시보드의 실제 페이지 창이다. 마이크로미터의 메트릭 기능을 ..
-
그라파나 - 대시보드 만들기스프링/스프링부트 2023. 10. 2. 21:59
그라파나 대시보드를 만들기에 앞서 애플리케이션, 프로메테우스, 그라파나를 실행해야한다. 대시보드 생성 그라파나 페이지에서 Dashboards를 선택해준다. 오른쪽에 있는 New -> New Dashboard를 선택해서 대시보드를 만들어준다. 오른쪽 상단의 Save dashboard를 누른다. 그대로 Save를 누르면 대시보드가 만들어진다. 이제 패널을 만들 것이다. 대시보드가 큰 틀이라면 패널은 그 안에서 모듈처럼 들어가는 실제 그래프를 보여주는 component이다. 패널 생성 오른쪽 상단에서 Save Dashboard 옆에 있는 Add panel을 누르고 Add new pannel로 들어간다. 오른쪽에 있는 Builder 버튼을 Code 버튼으로 바꾼 다음, 빈칸에 프로메테우스 쿼리를 입력하면 프로메..
-
그라파나 - 설치 및 연동스프링/스프링부트 2023. 10. 2. 21:40
https://grafana.com/grafana/download 위의 사이트에서 본인의 운영체제에 맞는 그라파나를 다운받으면 된다. 애플리케이션과 프로메테우스를 꼭 켜놓은 상태에서 폴더에 있는 grafana-server.exe를 실행하면 된다. localhost:3030으로 접속하면 로그인 페이지가 나와서 로그인을 해주면 된다. 지금은 공부 단계이니까 ID : admin, PW : admin으로 접속한다. 연동 왼쪽 아래에 있는 Configuration에 들어간다. Add DataSource를 클릭하고 Prometheus를 누른다. 이름을 적고 HTTP URL에 프로메테우스의 포트인 http://localhost:9090을 입력한 뒤 save&test를 누르면 자동으로 연동이 된다.
-
프로메테우스 - 게이지와 카운터스프링/스프링부트 2023. 10. 2. 17:26
메트릭은 크게 보면 게이지와 카운터 2개로 분류할 수 있다. 게이지(Gauge) 임의로 오르내리는 값 ex) CPU 사용량, 메모리 사용량, 사용중인 커넥션 카운터(Counter) 단순하게 증가하는 누적 값 HTTP 요청 수, 로그 발생 수 게이지(Gauge) 대표적인 게이지인 CPU 사용량을 생각해보면, CPU 사용량은 측정 값을 그대로 보여주면 된다. 따로 가공을 하거나 그럴 필요는 딱히 없다. 게이지는 단순하고 쉬운 메트릭이다. 카운터(Counter) 카운터는 게이지보다 조금 복잡한데 쉽게 말해서 단순하게 증가하는 누적 값이다. 02:42 ~ 02:43: 80건 요청 02:43 ~ 02:46: 0건 요청 02:46 ~ 02:48: 약 50건 요청 위의 요청이 있었다고 가정을 할 때, 증가만 하는 그..
-
프로메테우스 - 기본 기능스프링/스프링부트 2023. 10. 2. 17:09
프로메테우스의 기본 페이지에 원하는 엔드포인트를 입력하면 그에 따른 정보가 나온다. 위에서는 http_server_requests_seconds_count를 입력해서 서버에 접근하는 총 소유 시간을 조회했다. Table이 아니라 Graph를 누르면 정보를 그래프로 보여준다. 시간 설정도 할 수 있다. 맨 위에 있는 그래프는 /actuator/prometheus인데 1초에 한 번씩 보내는걸로 yml로 실행했기 때문에 계속 실행되는 것이고, 아래 그래프의 보라색은 /log uri인데, localhost:8080/log에 접근해서 해당 컨트롤러를 약 20번정도 실행하고 결과를 캡쳐한 것이다. 특정 시간을 선택할 수도 있다. 그 시간대의 결과만 따로 보고싶을 때 사용하면 된다. 필터 레이블(마이크로미터의 tag..