diff --git a/CHANGELOG.md b/CHANGELOG.md index 89c49411a..e6323ccb2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +* 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/node_id.go b/metrics/node_id.go index 176eace55..adbc027ca 100644 --- a/metrics/node_id.go +++ b/metrics/node_id.go @@ -4,6 +4,19 @@ import ( "strconv" ) +const ( + trueStr = "true" + falseStr = "false" +) + func idToString(id uint32) string { return strconv.FormatUint(uint64(id), 10) } + +func nodeHintHitString(preferred, actual string) string { + if preferred == actual { + return trueStr + } + + return falseStr +} diff --git a/metrics/query.go b/metrics/query.go index fd83ad742..4890fe543 100644 --- a/metrics/query.go +++ b/metrics/query.go @@ -34,14 +34,17 @@ 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) + nodeHint.With(map[string]string{ + "preferred_node_id": preferred, + "session_node_id": actual, + "hit": nodeHintHitString(preferred, actual), }).Inc() } } diff --git a/metrics/table.go b/metrics/table.go index 6fa351076..0aac5cfde 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,12 @@ 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) + nodeHint.With(map[string]string{ + "preferred_node_id": preferred, + "session_node_id": actual, + "hit": nodeHintHitString(preferred, actual), }).Inc() } }