Datadog custom span tag 연동(kotlin-webflux)

코드적용 예시(kotlin + webflux)

현재 MSA 커뮤니티 dev, prod에 올라가 있고 동작은 하지만 개선 필요한 코드 입니다. 성능 체크도 필요.

  1. gradle 의존성 추가

implementation("io.opentracing:opentracing-api:0.33.0")
implementation("io.opentracing:opentracing-util:0.33.0")
implementation("com.datadoghq:dd-trace-api:0.104.0")

2. webFilter

@Component
class DatadogSpanWebFilter(private val environment: Environment) : WebFilter {
    override fun filter(exchange: ServerWebExchange, chain: WebFilterChain): Mono<Void> {
        return when {
            "dev" in environment.activeProfiles || "prod" in environment.activeProfiles -> {
                chain.filter(DatadogSpanWebExchange(exchange, environment))
            }
            else -> {
                chain.filter(exchange)
            }
        }
    }
}

3. webExchange delegate

4. webExchange request decorator

Last updated