diff --git a/CHANGELOG.md b/CHANGELOG.md index 89c49411a..7f201836a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +* Renamed `ydb_go_sdk_ydb_table_pool_node_hint_miss` and `ydb_go_sdk_ydb_query_pool_node_hint_miss` metrics to +`ydb_go_sdk_ydb_table_pool_node_hint` and `ydb_go_sdk_ydb_query_pool_node_hint`. Added `hit` label for them to +distinguish between hits and misses + + ## v3.124.0 * Fixed UUID scanning with `database/sql` when using types implementing `sql.Scanner` interface (like `uuid.UUID`) diff --git a/metrics/query.go b/metrics/query.go index fd83ad742..5d9cfa77a 100644 --- a/metrics/query.go +++ b/metrics/query.go @@ -6,6 +6,11 @@ import ( "github.com/ydb-platform/ydb-go-sdk/v3/trace" ) +const ( + trueStr = "true" + falseStr = "false" +) + //nolint:funlen func query(config Config) (t trace.Query) { queryConfig := config.WithSystem("query") @@ -34,14 +39,21 @@ func query(config Config) (t trace.Query) { } } { - nodeHintMiss := poolConfig.CounterVec("node_hint_miss", "preferred_node_id", "session_node_id") + nodeHint := poolConfig.CounterVec("node_hint", "preferred_node_id", "session_node_id", "hit") t.OnPoolGet = func(info trace.QueryPoolGetStartInfo) func(trace.QueryPoolGetDoneInfo) { return func(info trace.QueryPoolGetDoneInfo) { if poolConfig.Details()&trace.QueryPoolEvents != 0 { if info.NodeHintInfo != nil { - nodeHintMiss.With(map[string]string{ - "preferred_node_id": idToString(info.NodeHintInfo.PreferredNodeID), - "session_node_id": idToString(info.NodeHintInfo.SessionNodeID), + preferred := idToString(info.NodeHintInfo.PreferredNodeID) + actual := idToString(info.NodeHintInfo.SessionNodeID) + hit := falseStr + if preferred == actual { + hit = trueStr + } + nodeHint.With(map[string]string{ + "preferred_node_id": preferred, + "session_node_id": actual, + "hit": hit, }).Inc() } } diff --git a/metrics/table.go b/metrics/table.go index 6fa351076..a94fcdf1b 100644 --- a/metrics/table.go +++ b/metrics/table.go @@ -20,7 +20,7 @@ func table(config Config) (t trace.Table) { get := config.CounterVec("get") put := config.CounterVec("put") with := config.GaugeVec("with") - nodeHintMiss := config.CounterVec("node_hint_miss", "preferred_node_id", "session_node_id") + nodeHint := config.CounterVec("node_hint", "preferred_node_id", "session_node_id", "hit") t.OnInit = func(info trace.TableInitStartInfo) func(trace.TableInitDoneInfo) { return func(info trace.TableInitDoneInfo) { if config.Details()&trace.TableEvents != 0 { @@ -64,9 +64,16 @@ func table(config Config) (t trace.Table) { get.With(nil).Inc() } if info.NodeHintInfo != nil { - nodeHintMiss.With(map[string]string{ - "preferred_node_id": idToString(info.NodeHintInfo.PreferredNodeID), - "session_node_id": idToString(info.NodeHintInfo.SessionNodeID), + preferred := idToString(info.NodeHintInfo.PreferredNodeID) + actual := idToString(info.NodeHintInfo.SessionNodeID) + hit := falseStr + if preferred == actual { + hit = trueStr + } + nodeHint.With(map[string]string{ + "preferred_node_id": preferred, + "session_node_id": actual, + "hit": hit, }).Inc() } }