SQL Expression: Add instrumentation for sql expressions (#103758)
This commit is contained in:
@@ -1,48 +0,0 @@
|
||||
package query
|
||||
|
||||
import (
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
)
|
||||
|
||||
const (
|
||||
metricsSubSystem = "queryservice"
|
||||
metricsNamespace = "grafana"
|
||||
)
|
||||
|
||||
type queryMetrics struct {
|
||||
dsRequests *prometheus.CounterVec
|
||||
|
||||
// older metric
|
||||
expressionsQuerySummary *prometheus.SummaryVec
|
||||
}
|
||||
|
||||
func newQueryMetrics(reg prometheus.Registerer) *queryMetrics {
|
||||
m := &queryMetrics{
|
||||
dsRequests: prometheus.NewCounterVec(prometheus.CounterOpts{
|
||||
Namespace: metricsNamespace,
|
||||
Subsystem: metricsSubSystem,
|
||||
Name: "ds_queries_total",
|
||||
Help: "Number of datasource queries made from the query service",
|
||||
}, []string{"error", "dataplane", "datasource_type"}),
|
||||
|
||||
expressionsQuerySummary: prometheus.NewSummaryVec(
|
||||
prometheus.SummaryOpts{
|
||||
Namespace: metricsNamespace,
|
||||
Subsystem: metricsSubSystem,
|
||||
Name: "expressions_queries_duration_milliseconds",
|
||||
Help: "Expressions query summary",
|
||||
Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001},
|
||||
},
|
||||
[]string{"status"},
|
||||
),
|
||||
}
|
||||
|
||||
if reg != nil {
|
||||
reg.MustRegister(
|
||||
m.dsRequests,
|
||||
m.expressionsQuerySummary,
|
||||
)
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
@@ -360,7 +360,7 @@ func (b *QueryAPIBuilder) handleExpressions(ctx context.Context, req parsedReque
|
||||
respStatus = "failure"
|
||||
}
|
||||
duration := float64(time.Since(start).Nanoseconds()) / float64(time.Millisecond)
|
||||
b.metrics.expressionsQuerySummary.WithLabelValues(respStatus).Observe(duration)
|
||||
b.metrics.ExpressionsQuerySummary.WithLabelValues(respStatus).Observe(duration)
|
||||
|
||||
span.End()
|
||||
}()
|
||||
@@ -403,7 +403,7 @@ func (b *QueryAPIBuilder) handleExpressions(ctx context.Context, req parsedReque
|
||||
}
|
||||
|
||||
refId := expression.RefID
|
||||
results, err := expression.Command.Execute(ctx, now, vars, b.tracer)
|
||||
results, err := expression.Command.Execute(ctx, now, vars, b.tracer, b.metrics)
|
||||
if err != nil {
|
||||
expressionsLogger.Error("error executing expression", "error", err)
|
||||
results.Error = err
|
||||
|
||||
@@ -17,6 +17,7 @@ import (
|
||||
claims "github.com/grafana/authlib/types"
|
||||
query "github.com/grafana/grafana/pkg/apis/query/v0alpha1"
|
||||
"github.com/grafana/grafana/pkg/expr"
|
||||
"github.com/grafana/grafana/pkg/expr/metrics"
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||
"github.com/grafana/grafana/pkg/plugins"
|
||||
@@ -43,7 +44,7 @@ type QueryAPIBuilder struct {
|
||||
authorizer authorizer.Authorizer
|
||||
|
||||
tracer tracing.Tracer
|
||||
metrics *queryMetrics
|
||||
metrics *metrics.ExprMetrics
|
||||
parser *queryParser
|
||||
client clientapi.DataSourceClientSupplier
|
||||
registry query.DataSourceApiServerRegistry
|
||||
@@ -83,7 +84,7 @@ func NewQueryAPIBuilder(features featuremgmt.FeatureToggles,
|
||||
authorizer: ar,
|
||||
registry: registry,
|
||||
parser: newQueryParser(reader, legacy, tracer, log.New("query_parser")),
|
||||
metrics: newQueryMetrics(registerer),
|
||||
metrics: metrics.NewQueryServiceExpressionsMetrics(registerer),
|
||||
tracer: tracer,
|
||||
features: features,
|
||||
queryTypes: queryTypes,
|
||||
|
||||
Reference in New Issue
Block a user