diff --git a/public/app/plugins/datasource/opentsdb/config_ctrl.ts b/public/app/plugins/datasource/opentsdb/config_ctrl.ts
index 55fa14d7493..e4d69c40b4d 100644
--- a/public/app/plugins/datasource/opentsdb/config_ctrl.ts
+++ b/public/app/plugins/datasource/opentsdb/config_ctrl.ts
@@ -11,6 +11,7 @@ export class OpenTsConfigCtrl {
constructor($scope) {
this.current.jsonData = this.current.jsonData || {};
this.current.jsonData.tsdbVersion = this.current.jsonData.tsdbVersion || 1;
+ this.current.jsonData.tsdbResolution = this.current.jsonData.tsdbResolution || 1;
}
tsdbVersions = [
@@ -18,4 +19,9 @@ export class OpenTsConfigCtrl {
{name: '2.2', value: 2},
];
+ tsdbResolutions = [
+ {name: 'second', value: 1},
+ {name: 'millisecond', value: 2},
+ ];
+
}
diff --git a/public/app/plugins/datasource/opentsdb/datasource.js b/public/app/plugins/datasource/opentsdb/datasource.js
index e9662f8f289..fd5cca93bc9 100644
--- a/public/app/plugins/datasource/opentsdb/datasource.js
+++ b/public/app/plugins/datasource/opentsdb/datasource.js
@@ -16,6 +16,7 @@ function (angular, _, dateMath) {
this.basicAuth = instanceSettings.basicAuth;
instanceSettings.jsonData = instanceSettings.jsonData || {};
this.tsdbVersion = instanceSettings.jsonData.tsdbVersion || 1;
+ this.tsdbResolution = instanceSettings.jsonData.tsdbResolution || 1;
this.supportMetrics = true;
this.tagKeys = {};
@@ -62,16 +63,21 @@ function (angular, _, dateMath) {
this._saveTagKeys(metricData);
- return transformMetricData(metricData, groupByTags, options.targets[index], options);
+ return transformMetricData(metricData, groupByTags, options.targets[index], options, this.tsdbResolution);
}.bind(this));
return { data: result };
}.bind(this));
};
this.performTimeSeriesQuery = function(queries, start, end) {
+ var msResolution = false;
+ if (this.tsdbResolution === 2) {
+ msResolution = true;
+ }
var reqBody = {
start: start,
- queries: queries
+ queries: queries,
+ msResolution: msResolution
};
// Relative queries (e.g. last hour) don't include an end time
@@ -246,14 +252,18 @@ function (angular, _, dateMath) {
return filterTypesPromise;
};
- function transformMetricData(md, groupByTags, target, options) {
+ function transformMetricData(md, groupByTags, target, options, tsdbResolution) {
var metricLabel = createMetricLabel(md, target, groupByTags, options);
var dps = [];
// TSDB returns datapoints has a hash of ts => value.
// Can't use _.pairs(invert()) because it stringifies keys/values
_.each(md.dps, function (v, k) {
- dps.push([v, k * 1000]);
+ if (tsdbResolution === 2) {
+ dps.push([v, k * 1]);
+ } else {
+ dps.push([v, k * 1000]);
+ }
});
return { target: metricLabel, datapoints: dps };
diff --git a/public/app/plugins/datasource/opentsdb/partials/config.html b/public/app/plugins/datasource/opentsdb/partials/config.html
index f4f0bedfc19..1006ef97d32 100644
--- a/public/app/plugins/datasource/opentsdb/partials/config.html
+++ b/public/app/plugins/datasource/opentsdb/partials/config.html
@@ -1,6 +1,5 @@