浏览代码

Add min time interval to mysql and mssql

Sven Klemm 7 年之前
父节点
当前提交
cb526d4557

+ 1 - 1
docs/sources/administration/provisioning.md

@@ -154,7 +154,7 @@ Since not all datasources have the same configuration settings we only have the
 | tlsAuthWithCACert | boolean | *All* | Enable TLS authentication using CA cert |
 | tlsAuthWithCACert | boolean | *All* | Enable TLS authentication using CA cert |
 | tlsSkipVerify | boolean | *All* | Controls whether a client verifies the server's certificate chain and host name. |
 | tlsSkipVerify | boolean | *All* | Controls whether a client verifies the server's certificate chain and host name. |
 | graphiteVersion | string | Graphite |  Graphite version  |
 | graphiteVersion | string | Graphite |  Graphite version  |
-| timeInterval | string | Elastic, InfluxDB, PostgreSQL & Prometheus | Lowest interval/step value that should be used for this data source |
+| timeInterval | string | Elastic, InfluxDB, MSSQL, MySQL, PostgreSQL & Prometheus | Lowest interval/step value that should be used for this data source |
 | esVersion | number | Elastic | Elasticsearch version as a number (2/5/56) |
 | esVersion | number | Elastic | Elasticsearch version as a number (2/5/56) |
 | timeField | string | Elastic | Which field that should be used as timestamp |
 | timeField | string | Elastic | Which field that should be used as timestamp |
 | interval | string | Elastic | Index date time format |
 | interval | string | Elastic | Index date time format |

+ 16 - 0
docs/sources/features/datasources/mssql.md

@@ -33,6 +33,22 @@ Name | Description
 *User* | Database user's login/username
 *User* | Database user's login/username
 *Password* | Database user's password
 *Password* | Database user's password
 
 
+### Min time interval
+A lower limit for the `$__interval` variable. Recommended to be set to write frequency, for example `1m` if your data is written every minute.
+This option can also be overridden/configured in a dashboard panel under data source options. It's important to note that this value **needs** to be formatted as a
+number followed by a valid time identifier, e.g. `1m` (1 minute) or `30s` (30 seconds). The following time identifiers are supported:
+
+Identifier | Description
+------------ | -------------
+`y`   | year
+`M`   | month
+`w`   | week
+`d`   | day
+`h`   | hour
+`m`   | minute
+`s`   | second
+`ms`  | millisecond
+
 ### Database User Permissions (Important!)
 ### Database User Permissions (Important!)
 
 
 The database user you specify when you add the data source should only be granted SELECT permissions on
 The database user you specify when you add the data source should only be granted SELECT permissions on

+ 16 - 0
docs/sources/features/datasources/mysql.md

@@ -36,6 +36,22 @@ Name | Description
 *User* | Database user's login/username
 *User* | Database user's login/username
 *Password* | Database user's password
 *Password* | Database user's password
 
 
+### Min time interval
+A lower limit for the `$__interval` variable. Recommended to be set to write frequency, for example `1m` if your data is written every minute.
+This option can also be overridden/configured in a dashboard panel under data source options. It's important to note that this value **needs** to be formatted as a
+number followed by a valid time identifier, e.g. `1m` (1 minute) or `30s` (30 seconds). The following time identifiers are supported:
+
+Identifier | Description
+------------ | -------------
+`y`   | year
+`M`   | month
+`w`   | week
+`d`   | day
+`h`   | hour
+`m`   | minute
+`s`   | second
+`ms`  | millisecond
+
 ### Database User Permissions (Important!)
 ### Database User Permissions (Important!)
 
 
 The database user you specify when you add the data source should only be granted SELECT permissions on
 The database user you specify when you add the data source should only be granted SELECT permissions on

+ 2 - 0
public/app/plugins/datasource/mssql/datasource.ts

@@ -5,12 +5,14 @@ export class MssqlDatasource {
   id: any;
   id: any;
   name: any;
   name: any;
   responseParser: ResponseParser;
   responseParser: ResponseParser;
+  interval: string;
 
 
   /** @ngInject */
   /** @ngInject */
   constructor(instanceSettings, private backendSrv, private $q, private templateSrv) {
   constructor(instanceSettings, private backendSrv, private $q, private templateSrv) {
     this.name = instanceSettings.name;
     this.name = instanceSettings.name;
     this.id = instanceSettings.id;
     this.id = instanceSettings.id;
     this.responseParser = new ResponseParser(this.$q);
     this.responseParser = new ResponseParser(this.$q);
+    this.interval = (instanceSettings.jsonData || {}).timeInterval;
   }
   }
 
 
   interpolateVariable(value, variable) {
   interpolateVariable(value, variable) {

+ 15 - 0
public/app/plugins/datasource/mssql/partials/config.html

@@ -29,6 +29,21 @@
 	</div>
 	</div>
 </div>
 </div>
 
 
+<h3 class="page-heading">MSSQL details</h3>
+
+<div class="gf-form-group">
+	<div class="gf-form-inline">
+		<div class="gf-form">
+			<span class="gf-form-label width-9">Min time interval</span>
+			<input type="text" class="gf-form-input width-6" ng-model="ctrl.current.jsonData.timeInterval" spellcheck='false' placeholder="1m"></input>
+			<info-popover mode="right-absolute">
+				A lower limit for the auto group by time interval. Recommended to be set to write frequency,
+				for example <code>1m</code> if your data is written every minute.
+			</info-popover>
+		</div>
+	</div>
+</div>
+
 <div class="gf-form-group">
 <div class="gf-form-group">
 	<div class="grafana-info-box">
 	<div class="grafana-info-box">
 		<h5>User Permission</h5>
 		<h5>User Permission</h5>

+ 6 - 1
public/app/plugins/datasource/mssql/plugin.json

@@ -17,5 +17,10 @@
 
 
   "alerting": true,
   "alerting": true,
   "annotations": true,
   "annotations": true,
-  "metrics": true
+  "metrics": true,
+
+  "queryOptions": {
+    "minInterval": true
+  }
+
 }
 }

+ 2 - 0
public/app/plugins/datasource/mysql/datasource.ts

@@ -5,12 +5,14 @@ export class MysqlDatasource {
   id: any;
   id: any;
   name: any;
   name: any;
   responseParser: ResponseParser;
   responseParser: ResponseParser;
+  interval: string;
 
 
   /** @ngInject */
   /** @ngInject */
   constructor(instanceSettings, private backendSrv, private $q, private templateSrv) {
   constructor(instanceSettings, private backendSrv, private $q, private templateSrv) {
     this.name = instanceSettings.name;
     this.name = instanceSettings.name;
     this.id = instanceSettings.id;
     this.id = instanceSettings.id;
     this.responseParser = new ResponseParser(this.$q);
     this.responseParser = new ResponseParser(this.$q);
+    this.interval = (instanceSettings.jsonData || {}).timeInterval;
   }
   }
 
 
   interpolateVariable(value, variable) {
   interpolateVariable(value, variable) {

+ 15 - 0
public/app/plugins/datasource/mysql/partials/config.html

@@ -24,6 +24,21 @@
 	</div>
 	</div>
 </div>
 </div>
 
 
+<h3 class="page-heading">MySQL details</h3>
+
+<div class="gf-form-group">
+	<div class="gf-form-inline">
+		<div class="gf-form">
+			<span class="gf-form-label width-9">Min time interval</span>
+			<input type="text" class="gf-form-input width-6" ng-model="ctrl.current.jsonData.timeInterval" spellcheck='false' placeholder="1m"></input>
+			<info-popover mode="right-absolute">
+				A lower limit for the auto group by time interval. Recommended to be set to write frequency,
+				for example <code>1m</code> if your data is written every minute.
+			</info-popover>
+		</div>
+	</div>
+</div>
+
 <div class="gf-form-group">
 <div class="gf-form-group">
 	<div class="grafana-info-box">
 	<div class="grafana-info-box">
 		<h5>User Permission</h5>
 		<h5>User Permission</h5>

+ 6 - 1
public/app/plugins/datasource/mysql/plugin.json

@@ -18,5 +18,10 @@
 
 
   "alerting": true,
   "alerting": true,
   "annotations": true,
   "annotations": true,
-  "metrics": true
+  "metrics": true,
+
+  "queryOptions": {
+    "minInterval": true
+  }
+
 }
 }