diff --git a/pkg/tsdb/stackdriver/stackdriver.go b/pkg/tsdb/stackdriver/stackdriver.go index 20df58f87d7..d9bc396038e 100644 --- a/pkg/tsdb/stackdriver/stackdriver.go +++ b/pkg/tsdb/stackdriver/stackdriver.go @@ -299,6 +299,9 @@ func (e *StackdriverExecutor) parseResponse(queryRes *tsdb.QueryResult, data Sta Name: metricName, Points: points, }) + + queryRes.Meta.Set("metricKind", series.MetricKind) + queryRes.Meta.Set("valueType", series.ValueType) } queryRes.Meta.Set("resourceLabels", resourceLabels) diff --git a/public/app/plugins/datasource/stackdriver/constants.ts b/public/app/plugins/datasource/stackdriver/constants.ts index eb808d48408..f0d6706c1bd 100644 --- a/public/app/plugins/datasource/stackdriver/constants.ts +++ b/public/app/plugins/datasource/stackdriver/constants.ts @@ -1,37 +1,245 @@ +export enum MetricKind { + METRIC_KIND_UNSPECIFIED = 'METRIC_KIND_UNSPECIFIED', + GAUGE = 'GAUGE', + DELTA = 'DELTA', + CUMULATIVE = 'CUMULATIVE', +} + +export enum ValueTypes { + VALUE_TYPE_UNSPECIFIED = 'VALUE_TYPE_UNSPECIFIED', + BOOL = 'BOOL', + INT64 = 'INT64', + DOUBLE = 'DOUBLE', + STRING = 'STRING', + DISTRIBUTION = 'DISTRIBUTION', + MONEY = 'MONEY', +} + export const alignOptions = [ - { text: 'none', value: 'ALIGN_NONE' }, - { text: 'delta', value: 'ALIGN_DELTA' }, - { text: 'rate', value: 'ALIGN_RATE' }, - { text: 'interpolate', value: 'ALIGN_INTERPOLATE' }, - { text: 'next older', value: 'ALIGN_NEXT_OLDER' }, - { text: 'min', value: 'ALIGN_MIN' }, - { text: 'max', value: 'ALIGN_MAX' }, - { text: 'mean', value: 'ALIGN_MEAN' }, - { text: 'count', value: 'ALIGN_COUNT' }, - { text: 'sum', value: 'ALIGN_SUM' }, - { text: 'stddev', value: 'ALIGN_STDDEV' }, - { text: 'count true', value: 'ALIGN_COUNT_TRUE' }, - { text: 'count false', value: 'ALIGN_COUNT_FALSE' }, - { text: 'fraction true', value: 'ALIGN_FRACTION_TRUE' }, - { text: 'percentile 99', value: 'ALIGN_PERCENTILE_99' }, - { text: 'percentile 95', value: 'ALIGN_PERCENTILE_95' }, - { text: 'percentile 50', value: 'ALIGN_PERCENTILE_50' }, - { text: 'percentile 05', value: 'ALIGN_PERCENTILE_05' }, - { text: 'percent change', value: 'ALIGN_PERCENT_CHANGE' }, + { + text: 'none', + value: 'ALIGN_NONE', + valueTypes: [ + ValueTypes.INT64, + ValueTypes.DOUBLE, + ValueTypes.MONEY, + ValueTypes.DISTRIBUTION, + ValueTypes.BOOL, + ValueTypes.STRING, + ], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED], + }, + { + text: 'delta', + value: 'ALIGN_DELTA', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY], + metricKinds: [MetricKind.CUMULATIVE, MetricKind.DELTA], + }, + { + text: 'rate', + value: 'ALIGN_RATE', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY], + metricKinds: [MetricKind.CUMULATIVE, MetricKind.DELTA], + }, + { + text: 'interpolate', + value: 'ALIGN_INTERPOLATE', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY], + metricKinds: [MetricKind.GAUGE], + }, + { + text: 'next older', + value: 'ALIGN_NEXT_OLDER', + valueTypes: [ + ValueTypes.INT64, + ValueTypes.DOUBLE, + ValueTypes.MONEY, + ValueTypes.DISTRIBUTION, + ValueTypes.STRING, + ValueTypes.VALUE_TYPE_UNSPECIFIED, + ValueTypes.BOOL, + ], + metricKinds: [MetricKind.GAUGE], + }, + { + text: 'min', + value: 'ALIGN_MIN', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'max', + value: 'ALIGN_MAX', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'mean', + value: 'ALIGN_MEAN', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'count', + value: 'ALIGN_COUNT', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.BOOL], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'sum', + value: 'ALIGN_SUM', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'stddev', + value: 'ALIGN_STDDEV', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'count true', + value: 'ALIGN_COUNT_TRUE', + valueTypes: [ValueTypes.BOOL], + metricKinds: [MetricKind.GAUGE], + }, + { + text: 'count false', + value: 'ALIGN_COUNT_FALSE', + valueTypes: [ValueTypes.BOOL], + metricKinds: [MetricKind.GAUGE], + }, + { + text: 'fraction true', + value: 'ALIGN_FRACTION_TRUE', + valueTypes: [ValueTypes.BOOL], + metricKinds: [MetricKind.GAUGE], + }, + { + text: 'percentile 99', + value: 'ALIGN_PERCENTILE_99', + valueTypes: [ValueTypes.DISTRIBUTION], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'percentile 95', + value: 'ALIGN_PERCENTILE_95', + valueTypes: [ValueTypes.DISTRIBUTION], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'percentile 50', + value: 'ALIGN_PERCENTILE_50', + valueTypes: [ValueTypes.DISTRIBUTION], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'percentile 05', + value: 'ALIGN_PERCENTILE_05', + valueTypes: [ValueTypes.DISTRIBUTION], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'percent change', + value: 'ALIGN_PERCENT_CHANGE', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, ]; export const aggOptions = [ - { text: 'none', value: 'REDUCE_NONE' }, - { text: 'mean', value: 'REDUCE_MEAN' }, - { text: 'min', value: 'REDUCE_MIN' }, - { text: 'max', value: 'REDUCE_MAX' }, - { text: 'sum', value: 'REDUCE_SUM' }, - { text: 'std. dev.', value: 'REDUCE_STDDEV' }, - { text: 'count', value: 'REDUCE_COUNT' }, - { text: '99th percentile', value: 'REDUCE_PERCENTILE_99' }, - { text: '95th percentile', value: 'REDUCE_PERCENTILE_95' }, - { text: '50th percentile', value: 'REDUCE_PERCENTILE_50' }, - { text: '5th percentile', value: 'REDUCE_PERCENTILE_05' }, + { + text: 'none', + value: 'REDUCE_NONE', + valueTypes: [ + ValueTypes.INT64, + ValueTypes.DOUBLE, + ValueTypes.MONEY, + ValueTypes.DISTRIBUTION, + ValueTypes.BOOL, + ValueTypes.STRING, + ], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA, MetricKind.CUMULATIVE, MetricKind.METRIC_KIND_UNSPECIFIED], + }, + { + text: 'mean', + value: 'REDUCE_MEAN', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'min', + value: 'REDUCE_MIN', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'max', + value: 'REDUCE_MAX', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'sum', + value: 'REDUCE_SUM', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'std. dev.', + value: 'REDUCE_STDDEV', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'count', + value: 'REDUCE_COUNT', + valueTypes: [ + ValueTypes.INT64, + ValueTypes.DOUBLE, + ValueTypes.MONEY, + ValueTypes.DISTRIBUTION, + ValueTypes.BOOL, + ValueTypes.STRING, + ], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'count', + value: 'REDUCE_COUNT_TRUE', + valueTypes: [ValueTypes.BOOL], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: 'count', + value: 'REDUCE_COUNT_FALSE', + valueTypes: [ValueTypes.BOOL], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: '99th percentile', + value: 'REDUCE_PERCENTILE_99', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: '95th percentile', + value: 'REDUCE_PERCENTILE_95', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: '50th percentile', + value: 'REDUCE_PERCENTILE_50', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, + { + text: '5th percentile', + value: 'REDUCE_PERCENTILE_05', + valueTypes: [ValueTypes.INT64, ValueTypes.DOUBLE, ValueTypes.MONEY, ValueTypes.DISTRIBUTION], + metricKinds: [MetricKind.GAUGE, MetricKind.DELTA], + }, ]; export const alignmentPeriods = [ diff --git a/public/app/plugins/datasource/stackdriver/partials/query.editor.html b/public/app/plugins/datasource/stackdriver/partials/query.editor.html index 5a87f981119..891dab6d93c 100755 --- a/public/app/plugins/datasource/stackdriver/partials/query.editor.html +++ b/public/app/plugins/datasource/stackdriver/partials/query.editor.html @@ -2,8 +2,8 @@