일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Git
- db
- IntelliJ
- javascript
- ubuntu
- springboot
- linux
- tool
- Web Server
- elasticsearch
- Spring Boot
- php
- JVM
- java
- Gradle
- devops
- ReactJS
- Design Patterns
- AWS
- jenkins
- jsp
- 맛집
- 요리
- redis
- MySQL
- Oracle
- Spring
- Spring Batch
- it
- laravel
Archives
- Today
- Total
아무거나
[Spring Actuator] Example 4편 - Metrics Tags 본문
반응형
이전글: https://bkjeon1614.tistory.com/783
- Metrics Tags
- /actuator/metrics/{메트릭명} 에 접속할 경우 availableTags 에 존재하는 tag 의 values 값에 대한 상세 정보를 보고 싶다면
- 만약 tag: test, value: bong 이라고 가정해볼경우 /actuator/metrics/{메트릭명}?tag=test:bong (즉, tag={key}:{value} Querystring 형태이다)
- metrics 에 tag 를 직접 넣어보자.
- 샘플코드
[TagController.java]
[MyQueueManagerWithTags.java]package com.example.bkjeon.base.services.api.v1.actuator.controller; import com.example.bkjeon.base.services.api.v1.actuator.service.MyQueueManagerWithTags; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("v1/tags") @RequiredArgsConstructor public class TagController { private final MyQueueManagerWithTags myQueueManagerWithTags; @GetMapping("push") public String push() { myQueueManagerWithTags.push(); return HttpStatus.OK.toString(); } @GetMapping("pop") public String pop() { myQueueManagerWithTags.pop(); return HttpStatus.OK.toString(); } }
package com.example.bkjeon.base.services.api.v1.actuator.service; import io.micrometer.core.instrument.Counter; import io.micrometer.core.instrument.MeterRegistry; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor public class MyQueueManagerWithTags { private final MeterRegistry meterRegistry; public void push() { Counter.builder("my.queue.counter") .tag("type", "push") .tag("class", this.getClass().toString()) // tag 는 여러개를 넣을 수 있다. .register(meterRegistry).increment(); } public void pop() { Counter.builder("my.queue.counter") .tag("type", "pop") .tag("class", this.getClass().toString()) .register(meterRegistry).increment(); } }
- 샘플코드2
- @Counted 를 사용하여 간소화 시킬 수 있다.
[TagController.java]package com.example.bkjeon.base.services.api.v1.actuator.controller; import io.micrometer.core.annotation.Counted; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("v1/tags") @RequiredArgsConstructor public class TagController { // private final MyQueueManagerWithTags myQueueManagerWithTags; // extraTags 는 추가적으로 Tag 가 필요시에 사용하면되고 형태는 key, value, key, value ... 이다 @Counted(value = "my.counted", extraTags = { "type", "value1", "type2", "value2" }) @GetMapping("push") public String push() { // myQueueManagerWithTags.push(); return HttpStatus.OK.toString(); } @Counted(value = "my.counted", extraTags = { "type3", "value3", "type4", "value4" }) @GetMapping("pop") public String pop() { // myQueueManagerWithTags.pop(); return HttpStatus.OK.toString(); } }
- @Counted 를 사용하여 간소화 시킬 수 있다.
- 상기 Counter.builder() 를 확인해보면 Tag 가 다를 시 별개의 카운터가 만들어지며 이름이 같으면 같은걸로 뭉쳐질 수 있다.
- 샘플코드
- /actuator/metrics/{메트릭명} 에 접속할 경우 availableTags 에 존재하는 tag 의 values 값에 대한 상세 정보를 보고 싶다면
참고
- https://semtul79.tistory.com/
- https://docs.spring.io/
- https://www.inflearn.com/course/spring-boot-actuator-%ED%8C%8C%ED%97%A4%EC%B9%98%EA%B8%B0/dashboard
반응형
'Java & Kotlin > Spring' 카테고리의 다른 글
[Spring Actuator] Example 6편 - Timer (1) | 2023.11.30 |
---|---|
[Spring Actuator] Example 5편 - Gauge (2) | 2023.11.27 |
[Spring Actuator] Example 3편 - Counter (0) | 2023.11.26 |
[Spring Actuator] Example 1편 - Custom Endpoint 생성 (2) | 2023.11.26 |
[Redis 시리즈 2편] Lettuce 를 사용한 Read / Write 분리 (0) | 2023.08.22 |
Comments