diff --git a/pkg/tsdb/azuremonitor/azuremonitor-datasource.go b/pkg/tsdb/azuremonitor/azuremonitor-datasource.go index 527313b0260..e9027c5fc43 100644 --- a/pkg/tsdb/azuremonitor/azuremonitor-datasource.go +++ b/pkg/tsdb/azuremonitor/azuremonitor-datasource.go @@ -125,6 +125,7 @@ func (e *AzureMonitorDatasource) buildQueries(queries []*tsdb.Query, timeRange * dimensionFilter := strings.TrimSpace(fmt.Sprintf("%v", azureMonitorTarget["dimensionFilter"])) if azureMonitorTarget["dimension"] != nil && azureMonitorTarget["dimensionFilter"] != nil && len(dimension) > 0 && len(dimensionFilter) > 0 && dimension != "None" { params.Add("$filter", fmt.Sprintf("%s eq '%s'", dimension, dimensionFilter)) + params.Add("top", fmt.Sprintf("%v", azureMonitorTarget["top"])) } target = params.Encode() diff --git a/pkg/tsdb/azuremonitor/azuremonitor-datasource_test.go b/pkg/tsdb/azuremonitor/azuremonitor-datasource_test.go index ada82190d11..f2fd7b1b4de 100644 --- a/pkg/tsdb/azuremonitor/azuremonitor-datasource_test.go +++ b/pkg/tsdb/azuremonitor/azuremonitor-datasource_test.go @@ -43,6 +43,7 @@ func TestAzureMonitorDatasource(t *testing.T) { "metricDefinition": "Microsoft.Compute/virtualMachines", "metricNamespace": "Microsoft.Compute-virtualMachines", "metricName": "Percentage CPU", + "top": "10", "alias": "testalias", "queryType": "Azure Monitor", }, @@ -127,13 +128,14 @@ func TestAzureMonitorDatasource(t *testing.T) { "queryType": "Azure Monitor", "dimension": "blob", "dimensionFilter": "*", + "top": "30", }, }) queries, err := datasource.buildQueries(tsdbQuery.Queries, tsdbQuery.TimeRange) So(err, ShouldBeNil) - So(queries[0].Target, ShouldEqual, "%24filter=blob+eq+%27%2A%27&aggregation=Average&api-version=2018-01-01&interval=PT1M&metricnames=Percentage+CPU&metricnamespace=Microsoft.Compute-virtualMachines×pan=2018-03-15T13%3A00%3A00Z%2F2018-03-15T13%3A34%3A00Z") + So(queries[0].Target, ShouldEqual, "%24filter=blob+eq+%27%2A%27&aggregation=Average&api-version=2018-01-01&interval=PT1M&metricnames=Percentage+CPU&metricnamespace=Microsoft.Compute-virtualMachines×pan=2018-03-15T13%3A00%3A00Z%2F2018-03-15T13%3A34%3A00Z&top=30") }) @@ -151,6 +153,7 @@ func TestAzureMonitorDatasource(t *testing.T) { "queryType": "Azure Monitor", "dimension": "None", "dimensionFilter": "*", + "top": "10", }, }) diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_monitor/azure_monitor_datasource.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_monitor/azure_monitor_datasource.ts index 921955b0a8e..a1317680159 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_monitor/azure_monitor_datasource.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/azure_monitor/azure_monitor_datasource.ts @@ -75,6 +75,7 @@ export default class AzureMonitorDatasource { const metricDefinition = this.templateSrv.replace(item.metricDefinition, options.scopedVars); const timeGrain = this.templateSrv.replace((item.timeGrain || '').toString(), options.scopedVars); const aggregation = this.templateSrv.replace(item.aggregation, options.scopedVars); + const top = this.templateSrv.replace(item.top || '', options.scopedVars); return { refId: target.refId, @@ -95,6 +96,7 @@ export default class AzureMonitorDatasource { metricNamespace && metricNamespace !== this.defaultDropdownValue ? metricNamespace : metricDefinition, aggregation: aggregation, dimension: this.templateSrv.replace(item.dimension, options.scopedVars), + top: top || '10', dimensionFilter: this.templateSrv.replace(item.dimensionFilter, options.scopedVars), alias: item.alias, format: target.format, diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/partials/query.editor.html b/public/app/plugins/datasource/grafana-azure-monitor-datasource/partials/query.editor.html index a5bed66c9df..65995e66c79 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/partials/query.editor.html +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/partials/query.editor.html @@ -91,6 +91,11 @@ +
+ + +
diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/query_ctrl.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/query_ctrl.ts index 545e77f4cd9..42b32358779 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/query_ctrl.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/query_ctrl.ts @@ -36,6 +36,7 @@ export class AzureMonitorQueryCtrl extends QueryCtrl { allowedTimeGrainsMs: number[]; dimensions: any[]; dimension: any; + top: string; aggregation: string; aggOptions: string[]; }; @@ -71,6 +72,7 @@ export class AzureMonitorQueryCtrl extends QueryCtrl { metricName: this.defaultDropdownValue, dimensionFilter: '*', timeGrain: 'auto', + top: '10', }, azureLogAnalytics: { query: [ diff --git a/public/app/plugins/datasource/grafana-azure-monitor-datasource/types.ts b/public/app/plugins/datasource/grafana-azure-monitor-datasource/types.ts index 7be4bad2c86..c0f47bded4a 100644 --- a/public/app/plugins/datasource/grafana-azure-monitor-datasource/types.ts +++ b/public/app/plugins/datasource/grafana-azure-monitor-datasource/types.ts @@ -41,6 +41,7 @@ export interface AzureMetricQuery { dimension: string; dimensionFilter: string; alias: string; + top: string; } export interface AzureLogsQuery {