mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Query Service: Add trace ids to logs in expressions (#95203)
This commit is contained in:
parent
b8b7c7901c
commit
59f5c1edfb
@ -109,6 +109,7 @@ func (r *queryREST) Connect(connectCtx context.Context, name string, _ runtime.O
|
||||
raw := &query.QueryDataRequest{}
|
||||
err := web.Bind(httpreq, raw)
|
||||
if err != nil {
|
||||
b.log.Error("Hit unexpected error when reading query", "err", err)
|
||||
err = errorsK8s.NewBadRequest("error reading query")
|
||||
// TODO: can we wrap the error so details are not lost?!
|
||||
// errutil.BadRequest(
|
||||
@ -170,17 +171,22 @@ func (r *queryREST) Connect(connectCtx context.Context, name string, _ runtime.O
|
||||
func (b *QueryAPIBuilder) execute(ctx context.Context, req parsedRequestInfo) (qdr *backend.QueryDataResponse, err error) {
|
||||
switch len(req.Requests) {
|
||||
case 0:
|
||||
b.log.Debug("executing empty query")
|
||||
qdr = &backend.QueryDataResponse{}
|
||||
case 1:
|
||||
b.log.Debug("executing single query")
|
||||
qdr, err = b.handleQuerySingleDatasource(ctx, req.Requests[0])
|
||||
if alertQueryWithoutExpression(req) {
|
||||
b.log.Debug("handling alert query without expression")
|
||||
qdr, err = b.convertQueryWithoutExpression(ctx, req.Requests[0], qdr)
|
||||
}
|
||||
default:
|
||||
b.log.Debug("executing concurrent queries")
|
||||
qdr, err = b.executeConcurrentQueries(ctx, req.Requests)
|
||||
}
|
||||
|
||||
if len(req.Expressions) > 0 {
|
||||
b.log.Debug("executing expressions")
|
||||
qdr, err = b.handleExpressions(ctx, req, qdr)
|
||||
}
|
||||
|
||||
@ -330,6 +336,9 @@ func (b *QueryAPIBuilder) executeConcurrentQueries(ctx context.Context, requests
|
||||
func (b *QueryAPIBuilder) handleExpressions(ctx context.Context, req parsedRequestInfo, data *backend.QueryDataResponse) (qdr *backend.QueryDataResponse, err error) {
|
||||
start := time.Now()
|
||||
ctx, span := b.tracer.Start(ctx, "Query.handleExpressions")
|
||||
traceId := span.SpanContext().TraceID()
|
||||
expressionsLogger := b.log.New("traceId", traceId.String())
|
||||
expressionsLogger.Debug("handling expressions")
|
||||
defer func() {
|
||||
var respStatus string
|
||||
switch {
|
||||
@ -363,10 +372,12 @@ func (b *QueryAPIBuilder) handleExpressions(ctx context.Context, req parsedReque
|
||||
allowLongFrames := false // TODO -- depends on input type and only if SQL?
|
||||
_, res, err := b.converter.Convert(ctx, req.RefIDTypes[refId], dr.Frames, allowLongFrames)
|
||||
if err != nil {
|
||||
expressionsLogger.Error("error converting frames for expressions", "error", err)
|
||||
res.Error = err
|
||||
}
|
||||
vars[refId] = res
|
||||
} else {
|
||||
expressionsLogger.Error("missing variable in handle expressions", "refId", refId, "expressionRefId", expression.RefID)
|
||||
// This should error in the parsing phase
|
||||
err := fmt.Errorf("missing variable %s for %s", refId, expression.RefID)
|
||||
qdr.Responses[refId] = backend.DataResponse{
|
||||
@ -380,6 +391,7 @@ func (b *QueryAPIBuilder) handleExpressions(ctx context.Context, req parsedReque
|
||||
refId := expression.RefID
|
||||
results, err := expression.Command.Execute(ctx, now, vars, b.tracer)
|
||||
if err != nil {
|
||||
expressionsLogger.Error("error executing expression", "error", err)
|
||||
results.Error = err
|
||||
}
|
||||
qdr.Responses[refId] = backend.DataResponse{
|
||||
|
Loading…
Reference in New Issue
Block a user