From 866b2ef0fbc322b8dfb485707b1d80d9ecae11d5 Mon Sep 17 00:00:00 2001 From: Evgenii Guguchkin Date: Wed, 28 Oct 2026 23:43:35 +0300 Subject: [PATCH] feat(proxy): include time range in search stats logging --- proxy/search/ingestor.go | 4 ++++ proxyapi/grpc_v1.go | 7 ++++++- proxyapi/request_observation.go | 2 ++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/proxy/search/ingestor.go b/proxy/search/ingestor.go index 967c6fc0c..581f8ce55 100644 --- a/proxy/search/ingestor.go +++ b/proxy/search/ingestor.go @@ -49,6 +49,8 @@ const ( // SearchStats carries observability data collected while executing a search. type SearchStats struct { Query string + From seq.MID + To seq.MID Size int HasHist bool HasAgg bool @@ -113,6 +115,8 @@ func (si *Ingestor) Search( stats = &SearchStats{ Query: string(sr.Q), + From: sr.From, + To: sr.To, Size: sr.Size + sr.Offset, HasHist: sr.Interval > 0, HasAgg: len(sr.AggQ) > 0, diff --git a/proxyapi/grpc_v1.go b/proxyapi/grpc_v1.go index d1e55190b..493a59994 100644 --- a/proxyapi/grpc_v1.go +++ b/proxyapi/grpc_v1.go @@ -197,7 +197,9 @@ func (g *grpcV1) doSearch( obs := requestObservation{ start: time.Now(), - stats: &search.SearchStats{}, + stats: &search.SearchStats{ + Size: int(req.Size) + int(req.Offset), + }, } span := trace.FromContext(ctx) @@ -206,9 +208,12 @@ func (g *grpcV1) doSearch( if req.Query == nil { return nil, obs, status.Error(codes.InvalidArgument, "search query must be provided") } + obs.stats.Query = req.Query.Query if req.Query.From == nil || req.Query.To == nil { return nil, obs, status.Error(codes.InvalidArgument, `search query "from" and "to" fields must be provided`) } + obs.stats.From = seq.MID(req.Query.From.AsTime().UnixNano()) + obs.stats.To = seq.MID(req.Query.To.AsTime().UnixNano()) if req.Offset != 0 && req.OffsetId != "" { return nil, obs, status.Error(codes.InvalidArgument, `only one of "offset" and "offset_id" must be provided`) } diff --git a/proxyapi/request_observation.go b/proxyapi/request_observation.go index ae9ecb0d8..30feda9f8 100644 --- a/proxyapi/request_observation.go +++ b/proxyapi/request_observation.go @@ -44,6 +44,8 @@ func (o *requestObservation) finish(method string, retErr error) { fields := []zap.Field{ zap.String("method", method), zap.String("query", o.stats.Query), + zap.String("from", o.stats.From.String()), + zap.String("to", o.stats.To.String()), zap.Bool("agg", o.stats.HasAgg), zap.Bool("hist", o.stats.HasHist), zap.Int("size", o.stats.Size),