Explorar el Código

Grafana supports ms resolution for Opentsdb

utkarshcmu hace 9 años
padre
commit
48f5a61564

+ 6 - 0
public/app/plugins/datasource/opentsdb/config_ctrl.ts

@@ -11,6 +11,7 @@ export class OpenTsConfigCtrl {
   constructor($scope) {
   constructor($scope) {
     this.current.jsonData = this.current.jsonData || {};
     this.current.jsonData = this.current.jsonData || {};
     this.current.jsonData.tsdbVersion = this.current.jsonData.tsdbVersion || 1;
     this.current.jsonData.tsdbVersion = this.current.jsonData.tsdbVersion || 1;
+    this.current.jsonData.tsdbResolution = this.current.jsonData.tsdbResolution || 1;
   }
   }
 
 
   tsdbVersions = [
   tsdbVersions = [
@@ -18,4 +19,9 @@ export class OpenTsConfigCtrl {
     {name: '2.2', value: 2},
     {name: '2.2', value: 2},
   ];
   ];
 
 
+  tsdbResolutions = [
+    {name: 'second', value: 1},
+    {name: 'millisecond', value: 2},
+  ];
+
 }
 }

+ 14 - 4
public/app/plugins/datasource/opentsdb/datasource.js

@@ -16,6 +16,7 @@ function (angular, _, dateMath) {
     this.basicAuth = instanceSettings.basicAuth;
     this.basicAuth = instanceSettings.basicAuth;
     instanceSettings.jsonData = instanceSettings.jsonData || {};
     instanceSettings.jsonData = instanceSettings.jsonData || {};
     this.tsdbVersion = instanceSettings.jsonData.tsdbVersion || 1;
     this.tsdbVersion = instanceSettings.jsonData.tsdbVersion || 1;
+    this.tsdbResolution = instanceSettings.jsonData.tsdbResolution || 1;
     this.supportMetrics = true;
     this.supportMetrics = true;
     this.tagKeys = {};
     this.tagKeys = {};
 
 
@@ -62,16 +63,21 @@ function (angular, _, dateMath) {
 
 
           this._saveTagKeys(metricData);
           this._saveTagKeys(metricData);
 
 
-          return transformMetricData(metricData, groupByTags, options.targets[index], options);
+          return transformMetricData(metricData, groupByTags, options.targets[index], options, this.tsdbResolution);
         }.bind(this));
         }.bind(this));
         return { data: result };
         return { data: result };
       }.bind(this));
       }.bind(this));
     };
     };
 
 
     this.performTimeSeriesQuery = function(queries, start, end) {
     this.performTimeSeriesQuery = function(queries, start, end) {
+      var msResolution = false;
+      if (this.tsdbResolution === 2) {
+        msResolution = true;
+      }
       var reqBody = {
       var reqBody = {
         start: start,
         start: start,
-        queries: queries
+        queries: queries,
+        msResolution: msResolution
       };
       };
 
 
       // Relative queries (e.g. last hour) don't include an end time
       // Relative queries (e.g. last hour) don't include an end time
@@ -246,14 +252,18 @@ function (angular, _, dateMath) {
       return filterTypesPromise;
       return filterTypesPromise;
     };
     };
 
 
-    function transformMetricData(md, groupByTags, target, options) {
+    function transformMetricData(md, groupByTags, target, options, tsdbResolution) {
       var metricLabel = createMetricLabel(md, target, groupByTags, options);
       var metricLabel = createMetricLabel(md, target, groupByTags, options);
       var dps = [];
       var dps = [];
 
 
       // TSDB returns datapoints has a hash of ts => value.
       // TSDB returns datapoints has a hash of ts => value.
       // Can't use _.pairs(invert()) because it stringifies keys/values
       // Can't use _.pairs(invert()) because it stringifies keys/values
       _.each(md.dps, function (v, k) {
       _.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 };
       return { target: metricLabel, datapoints: dps };

+ 8 - 2
public/app/plugins/datasource/opentsdb/partials/config.html

@@ -1,6 +1,5 @@
 <datasource-http-settings current="ctrl.current"></datasource-http-settings>
 <datasource-http-settings current="ctrl.current"></datasource-http-settings>
 
 
-<br>
 <h5>Opentsdb settings</h5>
 <h5>Opentsdb settings</h5>
 <div class="gf-form">
 <div class="gf-form">
   <span class="gf-form-label width-7">
   <span class="gf-form-label width-7">
@@ -9,5 +8,12 @@
   <span class="gf-form-select-wrapper">
   <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>
     <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>
   </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>
 </div>