diff --git a/internal/metrics/metrics.go b/internal/metrics/metrics.go index e7d6cc800f..2fa3fc50b1 100644 --- a/internal/metrics/metrics.go +++ b/internal/metrics/metrics.go @@ -54,6 +54,9 @@ const ( FlushingSegmentLabel = "Flushing" DropedSegmentLabel = "Dropped" + Leader = "OnLeader" + FromLeader = "FromLeader" + nodeIDLabelName = "node_id" statusLabelName = "status" indexTaskStatusLabelName = "index_task_status" @@ -68,6 +71,7 @@ const ( roleNameLabelName = "role_name" cacheNameLabelName = "cache_name" cacheStateLabelName = "cache_state" + requestScope = "scope" ) var ( diff --git a/internal/metrics/querynode_metrics.go b/internal/metrics/querynode_metrics.go index 1931ec6e09..60fd1caa7b 100644 --- a/internal/metrics/querynode_metrics.go +++ b/internal/metrics/querynode_metrics.go @@ -104,6 +104,7 @@ var ( }, []string{ nodeIDLabelName, queryTypeLabelName, + requestScope, }) QueryNodeSQLatencyInQueue = prometheus.NewHistogramVec( diff --git a/internal/querynode/impl.go b/internal/querynode/impl.go index f778b44cc7..1340c064a2 100644 --- a/internal/querynode/impl.go +++ b/internal/querynode/impl.go @@ -837,7 +837,7 @@ func (node *QueryNode) searchWithDmlChannel(ctx context.Context, req *querypb.Se metrics.QueryNodeReduceLatency.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID()), metrics.SearchLabel).Observe(float64(historicalTask.reduceDur.Milliseconds())) latency := tr.ElapseSpan() - metrics.QueryNodeSQReqLatency.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID()), metrics.SearchLabel).Observe(float64(latency.Milliseconds())) + metrics.QueryNodeSQReqLatency.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID()), metrics.SearchLabel, metrics.FromLeader).Observe(float64(latency.Milliseconds())) metrics.QueryNodeSQCount.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID()), metrics.SearchLabel, metrics.SuccessLabel).Inc() return historicalTask.Ret, nil } @@ -903,7 +903,7 @@ func (node *QueryNode) searchWithDmlChannel(ctx context.Context, req *querypb.Se failRet.Status.ErrorCode = commonpb.ErrorCode_Success latency := tr.ElapseSpan() - metrics.QueryNodeSQReqLatency.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID()), metrics.SearchLabel).Observe(float64(latency.Milliseconds())) + metrics.QueryNodeSQReqLatency.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID()), metrics.SearchLabel, metrics.Leader).Observe(float64(latency.Milliseconds())) metrics.QueryNodeSQCount.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID()), metrics.SearchLabel, metrics.SuccessLabel).Inc() metrics.QueryNodeSearchNQ.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID())).Observe(float64(req.Req.GetNq())) metrics.QueryNodeSearchTopK.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID())).Observe(float64(req.Req.GetTopk())) @@ -983,7 +983,7 @@ func (node *QueryNode) queryWithDmlChannel(ctx context.Context, req *querypb.Que metrics.QueryNodeReduceLatency.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID()), metrics.QueryLabel).Observe(float64(queryTask.reduceDur.Milliseconds())) latency := tr.ElapseSpan() - metrics.QueryNodeSQReqLatency.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID()), metrics.QueryLabel).Observe(float64(latency.Milliseconds())) + metrics.QueryNodeSQReqLatency.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID()), metrics.QueryLabel, metrics.FromLeader).Observe(float64(latency.Milliseconds())) metrics.QueryNodeSQCount.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID()), metrics.QueryLabel, metrics.SuccessLabel).Inc() return queryTask.Ret, nil } @@ -1047,7 +1047,7 @@ func (node *QueryNode) queryWithDmlChannel(ctx context.Context, req *querypb.Que failRet.Status.ErrorCode = commonpb.ErrorCode_Success latency := tr.ElapseSpan() - metrics.QueryNodeSQReqLatency.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID()), metrics.QueryLabel).Observe(float64(latency.Milliseconds())) + metrics.QueryNodeSQReqLatency.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID()), metrics.QueryLabel, metrics.Leader).Observe(float64(latency.Milliseconds())) metrics.QueryNodeSQCount.WithLabelValues(fmt.Sprint(Params.QueryNodeCfg.GetNodeID()), metrics.QueryLabel, metrics.SuccessLabel).Inc() return ret, nil }