[英]How can I remove the child node name from the metrics sent to Cloudwatch?
我正在使用用 Ktor 構建的 Java API。 它使用 MicrometerMetrics 功能將指標發布到 CloudWatch。 我的問題是我創建了一個攔截器,它使 CloudWatch 中的路由名稱變得混亂。
下面是攔截器:
fun Route.test(callback: Route.() -> Unit): Route {
val routeTest = createChild(object : RouteSelector(1.0) {
override fun evaluate(context: RoutingResolveContext, segmentIndex: Int): RouteSelectorEvaluation =
RouteSelectorEvaluation.Constant
})
routeTest.intercept(ApplicationCallPipeline.Call) {
call.response.header("X-Next-Polling-In", pollTime)
}
callback(routeTest)
return routeTest
}
以下是之前攔截器攔截的請求/users
的路由在 CloudWatch 中的顯示方式:
/users/my.package.TestInterceptor$test$routeTest$1@6cdas3a85
有沒有辦法刪除子節點名稱或硬編碼唯一值而不是my.package.TestInterceptor$test$routeTest$1@6cdas3a85 ?
我設法通過覆蓋RouteSelector
上的toString
方法解決了這個問題,如下所示:
fun Route.test(callback: Route.() -> Unit): Route {
val routeTest = createChild(object : RouteSelector(1.0) {
override fun evaluate(context: RoutingResolveContext, segmentIndex: Int): RouteSelectorEvaluation =
RouteSelectorEvaluation.Constant
override fun toString() = "customName"
})
routeTest.intercept(ApplicationCallPipeline.Call) {
call.response.header("X-Next-Polling-In", pollTime)
}
callback(routeTest)
return routeTest
}
這導致以下路由名稱:
/users/customName
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.