diff --git a/dist/datasource-zabbix/zabbixDBConnector.js b/dist/datasource-zabbix/zabbixDBConnector.js index 53450bf..026c557 100644 --- a/dist/datasource-zabbix/zabbixDBConnector.js +++ b/dist/datasource-zabbix/zabbixDBConnector.js @@ -52,7 +52,7 @@ System.register(['angular', 'lodash'], function (_export, _context) { var itemids = _.map(items, 'itemid').join(', '); var table = HISTORY_TO_TABLE_MAP[value_type]; - var query = '\n SELECT itemid AS metric, clock AS time_sec, ns, value\n FROM ' + table + '\n WHERE itemid IN (' + itemids + ')\n AND clock > ' + timeFrom + ' AND clock < ' + timeTill + '\n '; + var query = '\n SELECT itemid AS metric, clock AS time_sec, value\n FROM ' + table + '\n WHERE itemid IN (' + itemids + ')\n AND clock > ' + timeFrom + ' AND clock < ' + timeTill + '\n '; return _this.invokeSQLQuery(query); }); diff --git a/dist/datasource-zabbix/zabbixDBConnector.js.map b/dist/datasource-zabbix/zabbixDBConnector.js.map index f3c9ebd..876c598 100644 --- a/dist/datasource-zabbix/zabbixDBConnector.js.map +++ b/dist/datasource-zabbix/zabbixDBConnector.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/datasource-zabbix/zabbixDBConnector.js"],"names":["ZabbixDBConnectorFactory","datasourceSrv","backendSrv","ZabbixDBConnector","sqlDataSourceId","options","limit","DEFAULT_QUERY_LIMIT","loadSQLDataSource","datasourceId","ds","_","find","getAll","loadDatasource","name","then","console","log","Promise","reject","items","timeFrom","timeTill","grouped_items","groupBy","promises","map","value_type","itemids","join","table","HISTORY_TO_TABLE_MAP","query","invokeSQLQuery","all","flatten","results","history","addHostName","convertHistory","queryDef","refId","format","rawSql","maxDataPoints","datasourceRequest","url","method","data","queries","response","series","time_series","hosts","uniqBy","grafanaSeries","itemid","datapoints","points","item","alias","keys","length","host","hostid","target","sortBy","angular","module","factory"],"mappings":";;;;;;;;;;;;;AAYA;AACA,WAASA,wBAAT,CAAkCC,aAAlC,EAAiDC,UAAjD,EAA6D;AAAA,QAErDC,iBAFqD;AAIzD,iCAAYC,eAAZ,EAA2C;AAAA,YAAdC,OAAc,uEAAJ,EAAI;;AAAA;;AAAA,YACpCC,KADoC,GAC3BD,OAD2B,CACpCC,KADoC;;;AAGzC,aAAKF,eAAL,GAAuBA,eAAvB;AACA,aAAKE,KAAL,GAAaA,SAASC,mBAAtB;;AAEA;AACA,aAAKC,iBAAL,CAAuBJ,eAAvB;AACD;;AAZwD;AAAA;AAAA,0CAcvCK,YAduC,EAczB;AAC9B,cAAIC,KAAKC,EAAEC,IAAF,CAAOX,cAAcY,MAAd,EAAP,EAA+B,EAAC,MAAMJ,YAAP,EAA/B,CAAT;AACA,cAAIC,EAAJ,EAAQ;AACN,mBAAOT,cAAca,cAAd,CAA6BJ,GAAGK,IAAhC,EACNC,IADM,CACD,cAAM;AACVC,sBAAQC,GAAR,CAAY,wBAAZ,EAAsCR,EAAtC;AACD,aAHM,CAAP;AAID,WALD,MAKO;AACL,mBAAOS,QAAQC,MAAR,8BAA0CX,YAA1C,gBAAP;AACD;AACF;AAxBwD;AAAA;AAAA,mCA0B9CY,KA1B8C,EA0BvCC,QA1BuC,EA0B7BC,QA1B6B,EA0BnB;AAAA;;AACpC;AACA,cAAIC,gBAAgBb,EAAEc,OAAF,CAAUJ,KAAV,EAAiB,YAAjB,CAApB;AACA,cAAIK,WAAWf,EAAEgB,GAAF,CAAMH,aAAN,EAAqB,UAACH,KAAD,EAAQO,UAAR,EAAuB;AACzD,gBAAIC,UAAUlB,EAAEgB,GAAF,CAAMN,KAAN,EAAa,QAAb,EAAuBS,IAAvB,CAA4B,IAA5B,CAAd;AACA,gBAAIC,QAAQC,qBAAqBJ,UAArB,CAAZ;;AAEA,gBAAIK,iGAEOF,KAFP,uCAGmBF,OAHnB,qCAIgBP,QAJhB,qBAIwCC,QAJxC,eAAJ;;AAOA,mBAAO,MAAKW,cAAL,CAAoBD,KAApB,CAAP;AACD,WAZc,CAAf;;AAcA,iBAAOd,QAAQgB,GAAR,CAAYT,QAAZ,EAAsBV,IAAtB,CAA2B,mBAAW;AAC3C,mBAAOL,EAAEyB,OAAF,CAAUC,OAAV,CAAP;AACD,WAFM,CAAP;AAGD;AA9CwD;AAAA;AAAA,sCAgD3CC,OAhD2C,EAgDlCjB,KAhDkC,EAgDP;AAAA,cAApBkB,WAAoB,uEAAN,IAAM;;AAChD,iBAAOC,eAAeF,OAAf,EAAwBjB,KAAxB,EAA+BkB,WAA/B,CAAP;AACD;AAlDwD;AAAA;AAAA,uCAoD1CN,KApD0C,EAoDnC;AACpB,cAAIQ,WAAW;AACbC,mBAAO,GADM;AAEbC,oBAAQ,aAFK;AAGblC,0BAAc,KAAKL,eAHN;AAIbwC,oBAAQX,KAJK;AAKbY,2BAAe,KAAKvC;AALP,WAAf;;AAQA,iBAAOJ,WAAW4C,iBAAX,CAA6B;AAClCC,iBAAK,iBAD6B;AAElCC,oBAAQ,MAF0B;AAGlCC,kBAAM;AACJC,uBAAS,CAACT,QAAD;AADL;AAH4B,WAA7B,EAONzB,IAPM,CAOD,oBAAY;AAChB,gBAAIqB,UAAUc,SAASF,IAAT,CAAcZ,OAA5B;AACA,gBAAIA,QAAQ,GAAR,CAAJ,EAAkB;AAChB,qBAAOA,QAAQ,GAAR,EAAae,MAApB;AACD,aAFD,MAEO;AACL,qBAAO,IAAP;AACD;AACF,WAdM,CAAP;AAeD;AA5EwD;;AAAA;AAAA;;AA+E3D,WAAOjD,iBAAP;AACD;;AAMD;;AAEA,WAASqC,cAAT,CAAwBa,WAAxB,EAAqChC,KAArC,EAA4CkB,WAA5C,EAAyD;AACvD,QAAIe,QAAQ3C,EAAE4C,MAAF,CAAS5C,EAAEyB,OAAF,CAAUzB,EAAEgB,GAAF,CAAMN,KAAN,EAAa,OAAb,CAAV,CAAT,EAA2C,QAA3C,CAAZ,CADuD,CACW;AAClE,QAAImC,gBAAgB7C,EAAEgB,GAAF,CAAM0B,WAAN,EAAmB,kBAAU;AAC/C,UAAII,SAASL,OAAOrC,IAApB;AACA,UAAI2C,aAAaN,OAAOO,MAAxB;AACA,UAAIC,OAAOjD,EAAEC,IAAF,CAAOS,KAAP,EAAc,EAAC,UAAUoC,MAAX,EAAd,CAAX;AACA,UAAII,QAAQD,KAAK7C,IAAjB;AACA,UAAIJ,EAAEmD,IAAF,CAAOR,KAAP,EAAcS,MAAd,GAAuB,CAAvB,IAA4BxB,WAAhC,EAA6C;AAAE;AAC7C,YAAIyB,OAAOrD,EAAEC,IAAF,CAAO0C,KAAP,EAAc,EAAC,UAAUM,KAAKK,MAAhB,EAAd,CAAX;AACAJ,gBAAQG,KAAKjD,IAAL,GAAY,IAAZ,GAAmB8C,KAA3B;AACD;AACD,aAAO;AACLK,gBAAQL,KADH;AAELH,oBAAYA;AAFP,OAAP;AAID,KAbmB,CAApB;;AAeA,WAAO/C,EAAEwD,MAAF,CAASX,aAAT,EAAwB,QAAxB,CAAP;AACD;;;AAvHMY,a;;AACAzD,O;;;;;;;;;;;;;;;;;;;;;AAEDJ,yB,GAAsB,K;AACtByB,0B,GAAuB;AAC3B,aAAK,SADsB;AAE3B,aAAK,aAFsB;AAG3B,aAAK,aAHsB;AAI3B,aAAK,cAJsB;AAK3B,aAAK;AALsB,O;AA2F7BoC,cACGC,MADH,CACU,kBADV,EAEGC,OAFH,CAEW,mBAFX,EAEgCtE,wBAFhC","file":"zabbixDBConnector.js","sourcesContent":["import angular from 'angular';\nimport _ from 'lodash';\n\nconst DEFAULT_QUERY_LIMIT = 10000;\nconst HISTORY_TO_TABLE_MAP = {\n '0': 'history',\n '1': 'history_str',\n '2': 'history_log',\n '3': 'history_uint',\n '4': 'history_text'\n};\n\n/** @ngInject */\nfunction ZabbixDBConnectorFactory(datasourceSrv, backendSrv) {\n\n class ZabbixDBConnector {\n\n constructor(sqlDataSourceId, options = {}) {\n let {limit} = options;\n\n this.sqlDataSourceId = sqlDataSourceId;\n this.limit = limit || DEFAULT_QUERY_LIMIT;\n\n // Try to load DS with given id to check it's exist\n this.loadSQLDataSource(sqlDataSourceId);\n }\n\n loadSQLDataSource(datasourceId) {\n let ds = _.find(datasourceSrv.getAll(), {'id': datasourceId});\n if (ds) {\n return datasourceSrv.loadDatasource(ds.name)\n .then(ds => {\n console.log('SQL data source loaded', ds);\n });\n } else {\n return Promise.reject(`SQL Data Source with ID ${datasourceId} not found`);\n }\n }\n\n getHistory(items, timeFrom, timeTill) {\n // Group items by value type and perform request for each value type\n let grouped_items = _.groupBy(items, 'value_type');\n let promises = _.map(grouped_items, (items, value_type) => {\n let itemids = _.map(items, 'itemid').join(', ');\n let table = HISTORY_TO_TABLE_MAP[value_type];\n\n let query = `\n SELECT itemid AS metric, clock AS time_sec, ns, value\n FROM ${table}\n WHERE itemid IN (${itemids})\n AND clock > ${timeFrom} AND clock < ${timeTill}\n `;\n\n return this.invokeSQLQuery(query);\n });\n\n return Promise.all(promises).then(results => {\n return _.flatten(results);\n });\n }\n\n handleHistory(history, items, addHostName = true) {\n return convertHistory(history, items, addHostName);\n }\n\n invokeSQLQuery(query) {\n let queryDef = {\n refId: 'A',\n format: 'time_series',\n datasourceId: this.sqlDataSourceId,\n rawSql: query,\n maxDataPoints: this.limit\n };\n\n return backendSrv.datasourceRequest({\n url: '/api/tsdb/query',\n method: 'POST',\n data: {\n queries: [queryDef],\n }\n })\n .then(response => {\n let results = response.data.results;\n if (results['A']) {\n return results['A'].series;\n } else {\n return null;\n }\n });\n }\n }\n\n return ZabbixDBConnector;\n}\n\nangular\n .module('grafana.services')\n .factory('ZabbixDBConnector', ZabbixDBConnectorFactory);\n\n///////////////////////////////////////////////////////////////////////////////\n\nfunction convertHistory(time_series, items, addHostName) {\n var hosts = _.uniqBy(_.flatten(_.map(items, 'hosts')), 'hostid'); //uniqBy is needed to deduplicate\n let grafanaSeries = _.map(time_series, series => {\n let itemid = series.name;\n let datapoints = series.points;\n var item = _.find(items, {'itemid': itemid});\n var alias = item.name;\n if (_.keys(hosts).length > 1 && addHostName) { //only when actual multi hosts selected\n var host = _.find(hosts, {'hostid': item.hostid});\n alias = host.name + \": \" + alias;\n }\n return {\n target: alias,\n datapoints: datapoints\n };\n });\n\n return _.sortBy(grafanaSeries, 'target');\n}\n"]} \ No newline at end of file +{"version":3,"sources":["../../src/datasource-zabbix/zabbixDBConnector.js"],"names":["ZabbixDBConnectorFactory","datasourceSrv","backendSrv","ZabbixDBConnector","sqlDataSourceId","options","limit","DEFAULT_QUERY_LIMIT","loadSQLDataSource","datasourceId","ds","_","find","getAll","loadDatasource","name","then","console","log","Promise","reject","items","timeFrom","timeTill","grouped_items","groupBy","promises","map","value_type","itemids","join","table","HISTORY_TO_TABLE_MAP","query","invokeSQLQuery","all","flatten","results","history","addHostName","convertHistory","queryDef","refId","format","rawSql","maxDataPoints","datasourceRequest","url","method","data","queries","response","series","time_series","hosts","uniqBy","grafanaSeries","itemid","datapoints","points","item","alias","keys","length","host","hostid","target","sortBy","angular","module","factory"],"mappings":"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","file":"zabbixDBConnector.js","sourcesContent":["import angular from 'angular';\nimport _ from 'lodash';\n\nconst DEFAULT_QUERY_LIMIT = 10000;\nconst HISTORY_TO_TABLE_MAP = {\n '0': 'history',\n '1': 'history_str',\n '2': 'history_log',\n '3': 'history_uint',\n '4': 'history_text'\n};\n\n/** @ngInject */\nfunction ZabbixDBConnectorFactory(datasourceSrv, backendSrv) {\n\n class ZabbixDBConnector {\n\n constructor(sqlDataSourceId, options = {}) {\n let {limit} = options;\n\n this.sqlDataSourceId = sqlDataSourceId;\n this.limit = limit || DEFAULT_QUERY_LIMIT;\n\n // Try to load DS with given id to check it's exist\n this.loadSQLDataSource(sqlDataSourceId);\n }\n\n loadSQLDataSource(datasourceId) {\n let ds = _.find(datasourceSrv.getAll(), {'id': datasourceId});\n if (ds) {\n return datasourceSrv.loadDatasource(ds.name)\n .then(ds => {\n console.log('SQL data source loaded', ds);\n });\n } else {\n return Promise.reject(`SQL Data Source with ID ${datasourceId} not found`);\n }\n }\n\n getHistory(items, timeFrom, timeTill) {\n // Group items by value type and perform request for each value type\n let grouped_items = _.groupBy(items, 'value_type');\n let promises = _.map(grouped_items, (items, value_type) => {\n let itemids = _.map(items, 'itemid').join(', ');\n let table = HISTORY_TO_TABLE_MAP[value_type];\n\n let query = `\n SELECT itemid AS metric, clock AS time_sec, value\n FROM ${table}\n WHERE itemid IN (${itemids})\n AND clock > ${timeFrom} AND clock < ${timeTill}\n `;\n\n return this.invokeSQLQuery(query);\n });\n\n return Promise.all(promises).then(results => {\n return _.flatten(results);\n });\n }\n\n handleHistory(history, items, addHostName = true) {\n return convertHistory(history, items, addHostName);\n }\n\n invokeSQLQuery(query) {\n let queryDef = {\n refId: 'A',\n format: 'time_series',\n datasourceId: this.sqlDataSourceId,\n rawSql: query,\n maxDataPoints: this.limit\n };\n\n return backendSrv.datasourceRequest({\n url: '/api/tsdb/query',\n method: 'POST',\n data: {\n queries: [queryDef],\n }\n })\n .then(response => {\n let results = response.data.results;\n if (results['A']) {\n return results['A'].series;\n } else {\n return null;\n }\n });\n }\n }\n\n return ZabbixDBConnector;\n}\n\nangular\n .module('grafana.services')\n .factory('ZabbixDBConnector', ZabbixDBConnectorFactory);\n\n///////////////////////////////////////////////////////////////////////////////\n\nfunction convertHistory(time_series, items, addHostName) {\n var hosts = _.uniqBy(_.flatten(_.map(items, 'hosts')), 'hostid'); //uniqBy is needed to deduplicate\n let grafanaSeries = _.map(time_series, series => {\n let itemid = series.name;\n let datapoints = series.points;\n var item = _.find(items, {'itemid': itemid});\n var alias = item.name;\n if (_.keys(hosts).length > 1 && addHostName) { //only when actual multi hosts selected\n var host = _.find(hosts, {'hostid': item.hostid});\n alias = host.name + \": \" + alias;\n }\n return {\n target: alias,\n datapoints: datapoints\n };\n });\n\n return _.sortBy(grafanaSeries, 'target');\n}\n"]} \ No newline at end of file diff --git a/dist/test/datasource-zabbix/zabbixDBConnector.js b/dist/test/datasource-zabbix/zabbixDBConnector.js index 95b80db..c081a1c 100644 --- a/dist/test/datasource-zabbix/zabbixDBConnector.js +++ b/dist/test/datasource-zabbix/zabbixDBConnector.js @@ -64,7 +64,7 @@ function ZabbixDBConnectorFactory(datasourceSrv, backendSrv) { var itemids = _lodash2.default.map(items, 'itemid').join(', '); var table = HISTORY_TO_TABLE_MAP[value_type]; - var query = '\n SELECT itemid AS metric, clock AS time_sec, ns, value\n FROM ' + table + '\n WHERE itemid IN (' + itemids + ')\n AND clock > ' + timeFrom + ' AND clock < ' + timeTill + '\n '; + var query = '\n SELECT itemid AS metric, clock AS time_sec, value\n FROM ' + table + '\n WHERE itemid IN (' + itemids + ')\n AND clock > ' + timeFrom + ' AND clock < ' + timeTill + '\n '; return _this.invokeSQLQuery(query); }); diff --git a/src/datasource-zabbix/zabbixDBConnector.js b/src/datasource-zabbix/zabbixDBConnector.js index 4033775..80042e5 100644 --- a/src/datasource-zabbix/zabbixDBConnector.js +++ b/src/datasource-zabbix/zabbixDBConnector.js @@ -45,7 +45,7 @@ function ZabbixDBConnectorFactory(datasourceSrv, backendSrv) { let table = HISTORY_TO_TABLE_MAP[value_type]; let query = ` - SELECT itemid AS metric, clock AS time_sec, ns, value + SELECT itemid AS metric, clock AS time_sec, value FROM ${table} WHERE itemid IN (${itemids}) AND clock > ${timeFrom} AND clock < ${timeTill}