簡體   English   中英

如何從發送到 Cloudwatch 的指標中刪除子節點名稱?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM