Chore: Update prometheus, loki, graphite and influx plugins to support contextual logs. (#57708)
This commit is contained in:
@@ -9,28 +9,30 @@ import (
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||
"github.com/grafana/grafana-plugin-sdk-go/data"
|
||||
"github.com/influxdata/influxdb-client-go/v2/api"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
)
|
||||
|
||||
const maxPointsEnforceFactor float64 = 10
|
||||
|
||||
// executeQuery runs a flux query using the queryModel to interpolate the query and the runner to execute it.
|
||||
// maxSeries somehow limits the response.
|
||||
func executeQuery(ctx context.Context, query queryModel, runner queryRunner, maxSeries int) (dr backend.DataResponse) {
|
||||
func executeQuery(ctx context.Context, logger log.Logger, query queryModel, runner queryRunner, maxSeries int) (dr backend.DataResponse) {
|
||||
dr = backend.DataResponse{}
|
||||
|
||||
flux := interpolate(query)
|
||||
|
||||
glog.Debug("Executing Flux query", "flux", flux)
|
||||
logger.Debug("Executing Flux query", "flux", flux)
|
||||
|
||||
tables, err := runner.runQuery(ctx, flux)
|
||||
if err != nil {
|
||||
glog.Warn("Flux query failed", "err", err, "query", flux)
|
||||
logger.Warn("Flux query failed", "err", err, "query", flux)
|
||||
dr.Error = err
|
||||
} else {
|
||||
// we only enforce a larger number than maxDataPoints
|
||||
maxPointsEnforced := int(float64(query.MaxDataPoints) * maxPointsEnforceFactor)
|
||||
|
||||
dr = readDataFrames(tables, maxPointsEnforced, maxSeries)
|
||||
dr = readDataFrames(logger, tables, maxPointsEnforced, maxSeries)
|
||||
|
||||
if dr.Error != nil {
|
||||
// we check if a too-many-data-points error happened, and if it is so,
|
||||
@@ -62,8 +64,8 @@ func executeQuery(ctx context.Context, query queryModel, runner queryRunner, max
|
||||
return dr
|
||||
}
|
||||
|
||||
func readDataFrames(result *api.QueryTableResult, maxPoints int, maxSeries int) (dr backend.DataResponse) {
|
||||
glog.Debug("Reading data frames from query result", "maxPoints", maxPoints, "maxSeries", maxSeries)
|
||||
func readDataFrames(logger log.Logger, result *api.QueryTableResult, maxPoints int, maxSeries int) (dr backend.DataResponse) {
|
||||
logger.Debug("Reading data frames from query result", "maxPoints", maxPoints, "maxSeries", maxSeries)
|
||||
dr = backend.DataResponse{}
|
||||
|
||||
builder := &frameBuilder{
|
||||
|
||||
@@ -14,12 +14,13 @@ import (
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||
"github.com/grafana/grafana-plugin-sdk-go/data"
|
||||
"github.com/grafana/grafana-plugin-sdk-go/experimental"
|
||||
"github.com/grafana/grafana/pkg/components/simplejson"
|
||||
"github.com/grafana/grafana/pkg/tsdb/influxdb/models"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
"github.com/xorcare/pointer"
|
||||
|
||||
"github.com/grafana/grafana/pkg/components/simplejson"
|
||||
"github.com/grafana/grafana/pkg/tsdb/influxdb/models"
|
||||
|
||||
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
|
||||
"github.com/influxdata/influxdb-client-go/v2/api"
|
||||
)
|
||||
@@ -62,7 +63,7 @@ func executeMockedQuery(t *testing.T, name string, query queryModel) *backend.Da
|
||||
testDataPath: name + ".csv",
|
||||
}
|
||||
|
||||
dr := executeQuery(context.Background(), query, runner, 50)
|
||||
dr := executeQuery(context.Background(), glog, query, runner, 50)
|
||||
return &dr
|
||||
}
|
||||
|
||||
@@ -226,7 +227,7 @@ func TestRealQuery(t *testing.T) {
|
||||
runner, err := runnerFromDataSource(dsInfo)
|
||||
require.NoError(t, err)
|
||||
|
||||
dr := executeQuery(context.Background(), queryModel{
|
||||
dr := executeQuery(context.Background(), glog, queryModel{
|
||||
MaxDataPoints: 100,
|
||||
RawQuery: "buckets()",
|
||||
}, runner, 50)
|
||||
|
||||
@@ -5,10 +5,11 @@ import (
|
||||
"fmt"
|
||||
|
||||
"github.com/grafana/grafana-plugin-sdk-go/backend"
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/tsdb/influxdb/models"
|
||||
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
|
||||
"github.com/influxdata/influxdb-client-go/v2/api"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/tsdb/influxdb/models"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -18,8 +19,9 @@ var (
|
||||
// Query builds flux queries, executes them, and returns the results.
|
||||
func Query(ctx context.Context, dsInfo *models.DatasourceInfo, tsdbQuery backend.QueryDataRequest) (
|
||||
*backend.QueryDataResponse, error) {
|
||||
logger := glog.FromContext(ctx)
|
||||
tRes := backend.NewQueryDataResponse()
|
||||
glog.Debug("Received a query", "query", tsdbQuery)
|
||||
logger.Debug("Received a query", "query", tsdbQuery)
|
||||
r, err := runnerFromDataSource(dsInfo)
|
||||
if err != nil {
|
||||
return &backend.QueryDataResponse{}, err
|
||||
@@ -36,7 +38,7 @@ func Query(ctx context.Context, dsInfo *models.DatasourceInfo, tsdbQuery backend
|
||||
|
||||
// If the default changes also update labels/placeholder in config page.
|
||||
maxSeries := dsInfo.MaxSeries
|
||||
res := executeQuery(ctx, *qm, r, maxSeries)
|
||||
res := executeQuery(ctx, logger, *qm, r, maxSeries)
|
||||
|
||||
tRes.Responses[query.RefID] = res
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user