mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Prometheus: Make Prometheus streaming parser as default client (#58365)
* Introduce a new feature flag for prometheus buffered client * Use querydata client as default and put buffered client behind the feature flag * Remove prometheusStreamingJSONParser feature flag as it is not needed anymore * Update tests * Fix unit tests * Update feature flag description
This commit is contained in:
parent
500cf16142
commit
1c5039085b
@ -52,7 +52,7 @@ export interface FeatureToggles {
|
||||
cloudWatchDynamicLabels?: boolean;
|
||||
datasourceQueryMultiStatus?: boolean;
|
||||
traceToMetrics?: boolean;
|
||||
prometheusStreamingJSONParser?: boolean;
|
||||
prometheusBufferedClient?: boolean;
|
||||
newDBLibrary?: boolean;
|
||||
validateDashboardsOnSave?: boolean;
|
||||
autoMigrateGraphPanels?: boolean;
|
||||
|
@ -210,9 +210,9 @@ var (
|
||||
FrontendOnly: true,
|
||||
},
|
||||
{
|
||||
Name: "prometheusStreamingJSONParser",
|
||||
Description: "Enable streaming JSON parser for Prometheus datasource",
|
||||
State: FeatureStateBeta,
|
||||
Name: "prometheusBufferedClient",
|
||||
Description: "Enable buffered (old) client for Prometheus datasource as default instead of streaming JSON parser client (new)",
|
||||
State: FeatureStateStable,
|
||||
},
|
||||
{
|
||||
Name: "newDBLibrary",
|
||||
|
@ -151,9 +151,9 @@ const (
|
||||
// Enable trace to metrics links
|
||||
FlagTraceToMetrics = "traceToMetrics"
|
||||
|
||||
// FlagPrometheusStreamingJSONParser
|
||||
// Enable streaming JSON parser for Prometheus datasource
|
||||
FlagPrometheusStreamingJSONParser = "prometheusStreamingJSONParser"
|
||||
// FlagPrometheusBufferedClient
|
||||
// Enable buffered (old) client for Prometheus datasource as default instead of streaming JSON parser client (new)
|
||||
FlagPrometheusBufferedClient = "prometheusBufferedClient"
|
||||
|
||||
// FlagNewDBLibrary
|
||||
// Use jmoiron/sqlx rather than xorm for a few backend services
|
||||
|
@ -79,8 +79,8 @@ func TestIntegrationPrometheusBuffered(t *testing.T) {
|
||||
})
|
||||
buf1 := &bytes.Buffer{}
|
||||
err = json.NewEncoder(buf1).Encode(dtos.MetricRequest{
|
||||
From: "now-1h",
|
||||
To: "now",
|
||||
From: "1668078080000",
|
||||
To: "1668081680000",
|
||||
Queries: []*simplejson.Json{query},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
@ -88,7 +88,7 @@ func TestIntegrationPrometheusBuffered(t *testing.T) {
|
||||
// nolint:gosec
|
||||
resp, err := http.Post(u, "application/json", buf1)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, http.StatusBadRequest, resp.StatusCode)
|
||||
require.Equal(t, http.StatusInternalServerError, resp.StatusCode)
|
||||
t.Cleanup(func() {
|
||||
err := resp.Body.Close()
|
||||
require.NoError(t, err)
|
||||
@ -97,7 +97,8 @@ func TestIntegrationPrometheusBuffered(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
require.NotNil(t, outgoingRequest)
|
||||
require.Equal(t, "/api/v1/query_range?q1=1&q2=2", outgoingRequest.URL.String())
|
||||
require.Equal(t, "/api/v1/query_range?end=1668081660&q1=1&q2=2&query=up&start=1668078060&step=30",
|
||||
outgoingRequest.URL.String())
|
||||
require.Equal(t, "custom-header-value", outgoingRequest.Header.Get("X-CUSTOM-HEADER"))
|
||||
username, pwd, ok := outgoingRequest.BasicAuth()
|
||||
require.True(t, ok)
|
||||
@ -110,9 +111,7 @@ func TestIntegrationPrometheusClient(t *testing.T) {
|
||||
if testing.Short() {
|
||||
t.Skip("skipping integration test")
|
||||
}
|
||||
dir, path := testinfra.CreateGrafDir(t, testinfra.GrafanaOpts{
|
||||
EnableFeatureToggles: []string{"prometheusStreamingJSONParser"},
|
||||
})
|
||||
dir, path := testinfra.CreateGrafDir(t, testinfra.GrafanaOpts{})
|
||||
|
||||
grafanaListeningAddr, testEnv := testinfra.StartGrafanaEnv(t, dir, path)
|
||||
ctx := context.Background()
|
||||
|
@ -93,11 +93,11 @@ func (s *Service) QueryData(ctx context.Context, req *backend.QueryDataRequest)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if s.features.IsEnabled(featuremgmt.FlagPrometheusStreamingJSONParser) || s.features.IsEnabled(featuremgmt.FlagPrometheusWideSeries) {
|
||||
return i.queryData.Execute(ctx, req)
|
||||
if s.features.IsEnabled(featuremgmt.FlagPrometheusBufferedClient) {
|
||||
return i.buffered.ExecuteTimeSeriesQuery(ctx, req)
|
||||
}
|
||||
|
||||
return i.buffered.ExecuteTimeSeriesQuery(ctx, req)
|
||||
return i.queryData.Execute(ctx, req)
|
||||
}
|
||||
|
||||
func (s *Service) CallResource(ctx context.Context, req *backend.CallResourceRequest, sender backend.CallResourceResponseSender) error {
|
||||
|
@ -415,7 +415,8 @@ func setup(wideFrames bool) (*testContext, error) {
|
||||
JSONData: json.RawMessage(`{"timeInterval": "15s"}`),
|
||||
}
|
||||
|
||||
features := &fakeFeatureToggles{flags: map[string]bool{"prometheusStreamingJSONParser": true, "prometheusWideSeries": wideFrames}}
|
||||
features := &fakeFeatureToggles{flags: map[string]bool{"prometheusBufferedClient": false,
|
||||
"prometheusWideSeries": wideFrames}}
|
||||
|
||||
opts, err := client.CreateTransportOptions(settings, &setting.Cfg{}, &logtest.Fake{})
|
||||
if err != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user