diff --git a/public/app/plugins/datasource/graphite/datasource.ts b/public/app/plugins/datasource/graphite/datasource.ts index ea41dc126e1..c1220c9504f 100644 --- a/public/app/plugins/datasource/graphite/datasource.ts +++ b/public/app/plugins/datasource/graphite/datasource.ts @@ -245,10 +245,12 @@ export function GraphiteDatasource(this: any, instanceSettings, $q, backendSrv, } const httpOptions: any = { - method: 'GET', + method: 'POST', url: '/metrics/find', - params: { - query: interpolatedQuery, + params: {}, + data: `query=${interpolatedQuery}`, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', }, // for cancellations requestId: options.requestId, diff --git a/public/app/plugins/datasource/graphite/specs/datasource.test.ts b/public/app/plugins/datasource/graphite/specs/datasource.test.ts index de98f55172b..d0f83ab2717 100644 --- a/public/app/plugins/datasource/graphite/specs/datasource.test.ts +++ b/public/app/plugins/datasource/graphite/specs/datasource.test.ts @@ -303,6 +303,18 @@ describe('graphiteDatasource', () => { expect(requestOptions.params.expr).toEqual(['server=~backend*']); expect(results).not.toBe(null); }); + + it('/metrics/find should be POST', () => { + ctx.templateSrv.setGrafanaVariable('foo', 'bar'); + ctx.ds.metricFindQuery('[[foo]]').then(data => { + results = data; + }); + expect(requestOptions.url).toBe('/api/datasources/proxy/1/metrics/find'); + expect(requestOptions.method).toEqual('POST'); + expect(requestOptions.headers).toHaveProperty('Content-Type', 'application/x-www-form-urlencoded'); + expect(requestOptions.data).toMatch(`query=bar`); + expect(requestOptions).toHaveProperty('params'); + }); }); });