spring 3.0 이후로는 brave를 사용해야함
implementation 'io.zipkin.reporter2:zipkin-reporter-brave'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-tracing-bridge-brave'
implementation 'io.github.openfeign:feign-micrometer'
@Configuration
public class MonitorConfig {
@Bean
public Capability capability(final MeterRegistry registry){
return new MicrometerCapability(registry);
}
}
management:
endpoints:
web:
exposure:
include: refresh, health, beans, busrefresh, info, metrics, prometheus
endpoint:
health:
show-details: always
tracing:
sampling:
probability: 1.0
propagation:
consume: b3
produce: b3_multi
zipkin:
tracing:
endpoint: "http://localhost:9411/api/v2/spans"
logging:
level:
org.example.orderservice: DEBUG
pattern:
level: "%5p [%X{traceId:-},%X{spanId:-}]"
order-service, user-service가 같은 traceId를 사용 -> 한 요청임을 의미
* 에러가 있는경우 test
@GetMapping("/{userId}/orders")
public ResponseEntity getOrder(@PathVariable("userId") String userId) throws Exception {
log.info("Before retrieve orders data");
Iterable<OrderEntity> orderList = orderService.getOrdersByUserId(userId);
try{
Thread.sleep(1000);
throw new Exception("장애 발생");
} catch (InterruptedException ex){
log.warn(ex.getMessage());
}