Merge pull request #4227 from utkarshcmu/tsdb-ms

Grafana supports ms resolution for Opentsdb
This commit is contained in:
Torkel Ödegaard 2016-03-02 11:24:14 +01:00
commit 7df326083d
3 changed files with 28 additions and 6 deletions

View File

@ -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},
];
}

View File

@ -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 };

View File

@ -1,6 +1,5 @@
<datasource-http-settings current="ctrl.current"></datasource-http-settings>
<br>
<h5>Opentsdb settings</h5>
<div class="gf-form">
<span class="gf-form-label width-7">
@ -9,5 +8,12 @@
<span class="gf-form-select-wrapper">
<select class="gf-form-input gf-size-auto" ng-model="ctrl.current.jsonData.tsdbVersion" ng-options="v.value as v.name for v in ctrl.tsdbVersions"></select>
</span>
<div class="clearfix"></div>
</div>
<div class="gf-form">
<span class="gf-form-label width-7">
Resolution
</span>
<span class="gf-form-select-wrapper">
<select class="gf-form-input gf-size-auto" ng-model="ctrl.current.jsonData.tsdbResolution" ng-options="v.value as v.name for v in ctrl.tsdbResolutions"></select>
</span>
</div>