diff --git a/pkg/api/cloudwatch/metrics.go b/pkg/api/cloudwatch/metrics.go index 695158598ef..4721924cff4 100644 --- a/pkg/api/cloudwatch/metrics.go +++ b/pkg/api/cloudwatch/metrics.go @@ -28,6 +28,7 @@ var customMetricsDimensionsMap map[string]map[string]map[string]*CustomMetricsCa func init() { metricsMap = map[string][]string{ + "AWS/ApiGateway": {"4XXError", "5XXError", "CacheHitCount", "CacheMissCount", "Count", "IntegrationLatency", "Latency"}, "AWS/ApplicationELB": {"ActiveConnectionCount", "ClientTLSNegotiationErrorCount", "HealthyHostCount", "HTTPCode_ELB_4XX_Count", "HTTPCode_ELB_5XX_Count", "HTTPCode_Target_2XX_Count", "HTTPCode_Target_3XX_Count", "HTTPCode_Target_4XX_Count", "HTTPCode_Target_5XX_Count", "NewConnectionCount", "ProcessedBytes", "RejectedConnectionCount", "RequestCount", "TargetConnectionErrorCount", "TargetResponseTime", "TargetTLSNegotiationErrorCount", "UnhealthyHostCount"}, "AWS/AutoScaling": {"GroupMinSize", "GroupMaxSize", "GroupDesiredCapacity", "GroupInServiceInstances", "GroupPendingInstances", "GroupStandbyInstances", "GroupTerminatingInstances", "GroupTotalInstances"}, "AWS/Billing": {"EstimatedCharges"}, @@ -87,6 +88,7 @@ func init() { "AWS/WorkSpaces": {"Available", "Unhealthy", "ConnectionAttempt", "ConnectionSuccess", "ConnectionFailure", "SessionLaunchTime", "InSessionLatency", "SessionDisconnect"}, } dimensionsMap = map[string][]string{ + "AWS/ApiGateway": {"ApiName", "Method", "Resource", "Stage"}, "AWS/ApplicationELB": {"LoadBalancer", "TargetGroup", "AvailabilityZone"}, "AWS/AutoScaling": {"AutoScalingGroupName"}, "AWS/Billing": {"ServiceName", "LinkedAccount", "Currency"}, diff --git a/public/app/plugins/datasource/prometheus/datasource.ts b/public/app/plugins/datasource/prometheus/datasource.ts index 89828d14d33..a763b2f92ea 100644 --- a/public/app/plugins/datasource/prometheus/datasource.ts +++ b/public/app/plugins/datasource/prometheus/datasource.ts @@ -62,8 +62,8 @@ export function PrometheusDatasource(instanceSettings, $q, backendSrv, templateS // Called once per panel (graph) this.query = function(options) { var self = this; - var start = getPrometheusTime(options.range.from, false); - var end = getPrometheusTime(options.range.to, true); + var start = this.getPrometheusTime(options.range.from, false); + var end = this.getPrometheusTime(options.range.to, true); var queries = []; var activeTargets = []; @@ -172,8 +172,8 @@ export function PrometheusDatasource(instanceSettings, $q, backendSrv, templateS step: '60s' }; - var start = getPrometheusTime(options.range.from, false); - var end = getPrometheusTime(options.range.to, true); + var start = this.getPrometheusTime(options.range.from, false); + var end = this.getPrometheusTime(options.range.to, true); var self = this; return this.performTimeSeriesQuery(query, start, end).then(function(results) { @@ -279,10 +279,10 @@ export function PrometheusDatasource(instanceSettings, $q, backendSrv, templateS return metricName + '{' + labelPart + '}'; }; - function getPrometheusTime(date, roundUp): number { + this.getPrometheusTime = function(date, roundUp) { if (_.isString(date)) { date = dateMath.parse(date, roundUp); } return Math.ceil(date.valueOf() / 1000); - } + }; } diff --git a/public/app/plugins/datasource/prometheus/metric_find_query.js b/public/app/plugins/datasource/prometheus/metric_find_query.js index f449978be81..04149881d40 100644 --- a/public/app/plugins/datasource/prometheus/metric_find_query.js +++ b/public/app/plugins/datasource/prometheus/metric_find_query.js @@ -51,9 +51,11 @@ function (_) { }); }); } else { + var start = this.datasource.getPrometheusTime(this.range.from, false); + var end = this.datasource.getPrometheusTime(this.range.to, true); url = '/api/v1/series?match[]=' + encodeURIComponent(metric) - + '&start=' + (this.range.from.valueOf() / 1000) - + '&end=' + (this.range.to.valueOf() / 1000); + + '&start=' + start + + '&end=' + end; return this.datasource._request('GET', url) .then(function(result) { @@ -88,7 +90,8 @@ function (_) { }; PrometheusMetricFindQuery.prototype.queryResultQuery = function(query) { - var url = '/api/v1/query?query=' + encodeURIComponent(query) + '&time=' + (this.range.to.valueOf() / 1000); + var end = this.datasource.getPrometheusTime(this.range.to, true); + var url = '/api/v1/query?query=' + encodeURIComponent(query) + '&time=' + end; return this.datasource._request('GET', url) .then(function(result) { @@ -109,9 +112,11 @@ function (_) { }; PrometheusMetricFindQuery.prototype.metricNameAndLabelsQuery = function(query) { + var start = this.datasource.getPrometheusTime(this.range.from, false); + var end = this.datasource.getPrometheusTime(this.range.to, true); var url = '/api/v1/series?match[]=' + encodeURIComponent(query) - + '&start=' + (this.range.from.valueOf() / 1000) - + '&end=' + (this.range.to.valueOf() / 1000); + + '&start=' + start + + '&end=' + end; var self = this; return this.datasource._request('GET', url)