diff --git a/dist/datasource-zabbix/dataProcessor.js b/dist/datasource-zabbix/dataProcessor.js index 73ddd46..ecc305f 100644 --- a/dist/datasource-zabbix/dataProcessor.js +++ b/dist/datasource-zabbix/dataProcessor.js @@ -3,7 +3,7 @@ System.register(['lodash', './utils', './timeseries'], function (_export, _context) { "use strict"; - var _, utils, ts, downsampleSeries, groupBy, sumSeries, delta, scale, SUM, COUNT, AVERAGE, MIN, MAX, MEDIAN, metricFunctions, aggregationFunctions; + var _, utils, ts, downsampleSeries, groupBy, groupBy_exported, sumSeries, delta, scale, SUM, COUNT, AVERAGE, MIN, MAX, MEDIAN, metricFunctions, aggregationFunctions; function limit(order, n, orderByFunc, timeseries) { var orderByCallback = aggregationFunctions[orderByFunc]; @@ -93,6 +93,11 @@ System.register(['lodash', './utils', './timeseries'], function (_export, _conte execute: function () { downsampleSeries = ts.downsample; groupBy = ts.groupBy_perf; + + groupBy_exported = function groupBy_exported(interval, groupFunc, datapoints) { + return groupBy(datapoints, interval, groupFunc); + }; + sumSeries = ts.sumSeries; delta = ts.delta; @@ -136,7 +141,7 @@ System.register(['lodash', './utils', './timeseries'], function (_export, _conte _export('default', { downsampleSeries: downsampleSeries, - groupBy: groupBy, + groupBy: groupBy_exported, AVERAGE: AVERAGE, MIN: MIN, MAX: MAX, diff --git a/dist/datasource-zabbix/dataProcessor.js.map b/dist/datasource-zabbix/dataProcessor.js.map index 00034f2..0c894c9 100644 --- a/dist/datasource-zabbix/dataProcessor.js.map +++ b/dist/datasource-zabbix/dataProcessor.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/datasource-zabbix/dataProcessor.js"],"names":["limit","order","n","orderByFunc","timeseries","orderByCallback","aggregationFunctions","sortByIteratee","ts","values","_","map","datapoints","point","sortedTimeseries","sortBy","slice","setAlias","alias","target","replaceAlias","regexp","newAlias","pattern","utils","isRegex","buildRegex","replace","setAliasByRegex","extractText","str","extractPattern","RegExp","extractedValue","exec","groupByWrapper","interval","groupFunc","groupByCallback","groupBy","aggregateByWrapper","aggregateFunc","flattenedPoints","flatten","aggregateWrapper","timeShift","range","shift","parseTimeShiftInterval","time","unShiftTimeSeries","unshift","dp","downsampleSeries","downsample","groupBy_perf","sumSeries","delta","scale","factor","SUM","COUNT","AVERAGE","MIN","MAX","MEDIAN","metricFunctions","aggregateBy","average","partial","min","max","median","sum","count","top","bottom","avg"],"mappings":"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","file":"dataProcessor.js","sourcesContent":["import _ from 'lodash';\nimport * as utils from './utils';\nimport ts from './timeseries';\n\nlet downsampleSeries = ts.downsample;\nlet groupBy = ts.groupBy_perf;\nlet sumSeries = ts.sumSeries;\nlet delta = ts.delta;\nlet scale = (factor, datapoints) => ts.scale(datapoints, factor);\n\nlet SUM = ts.SUM;\nlet COUNT = ts.COUNT;\nlet AVERAGE = ts.AVERAGE;\nlet MIN = ts.MIN;\nlet MAX = ts.MAX;\nlet MEDIAN = ts.MEDIAN;\n\nfunction limit(order, n, orderByFunc, timeseries) {\n let orderByCallback = aggregationFunctions[orderByFunc];\n let sortByIteratee = (ts) => {\n let values = _.map(ts.datapoints, (point) => {\n return point[0];\n });\n return orderByCallback(values);\n };\n let sortedTimeseries = _.sortBy(timeseries, sortByIteratee);\n if (order === 'bottom') {\n return sortedTimeseries.slice(0, n);\n } else {\n return sortedTimeseries.slice(-n);\n }\n}\n\nfunction setAlias(alias, timeseries) {\n timeseries.target = alias;\n return timeseries;\n}\n\nfunction replaceAlias(regexp, newAlias, timeseries) {\n let pattern;\n if (utils.isRegex(regexp)) {\n pattern = utils.buildRegex(regexp);\n } else {\n pattern = regexp;\n }\n\n let alias = timeseries.target.replace(pattern, newAlias);\n timeseries.target = alias;\n return timeseries;\n}\n\nfunction setAliasByRegex(alias, timeseries) {\n timeseries.target = extractText(timeseries.target, alias);\n return timeseries;\n}\n\nfunction extractText(str, pattern) {\n var extractPattern = new RegExp(pattern);\n var extractedValue = extractPattern.exec(str);\n extractedValue = extractedValue[0];\n return extractedValue;\n}\n\nfunction groupByWrapper(interval, groupFunc, datapoints) {\n var groupByCallback = aggregationFunctions[groupFunc];\n return groupBy(datapoints, interval, groupByCallback);\n}\n\nfunction aggregateByWrapper(interval, aggregateFunc, datapoints) {\n // Flatten all points in frame and then just use groupBy()\n var flattenedPoints = _.flatten(datapoints, true);\n var groupByCallback = aggregationFunctions[aggregateFunc];\n return groupBy(flattenedPoints, interval, groupByCallback);\n}\n\nfunction aggregateWrapper(groupByCallback, interval, datapoints) {\n var flattenedPoints = _.flatten(datapoints, true);\n return groupBy(flattenedPoints, interval, groupByCallback);\n}\n\nfunction timeShift(interval, range) {\n let shift = utils.parseTimeShiftInterval(interval) / 1000;\n return _.map(range, time => {\n return time - shift;\n });\n}\n\nfunction unShiftTimeSeries(interval, datapoints) {\n let unshift = utils.parseTimeShiftInterval(interval);\n return _.map(datapoints, dp => {\n return [\n dp[0],\n dp[1] + unshift\n ];\n });\n}\n\nlet metricFunctions = {\n groupBy: groupByWrapper,\n scale: scale,\n delta: delta,\n aggregateBy: aggregateByWrapper,\n average: _.partial(aggregateWrapper, AVERAGE),\n min: _.partial(aggregateWrapper, MIN),\n max: _.partial(aggregateWrapper, MAX),\n median: _.partial(aggregateWrapper, MEDIAN),\n sum: _.partial(aggregateWrapper, SUM),\n count: _.partial(aggregateWrapper, COUNT),\n sumSeries: sumSeries,\n top: _.partial(limit, 'top'),\n bottom: _.partial(limit, 'bottom'),\n timeShift: timeShift,\n setAlias: setAlias,\n setAliasByRegex: setAliasByRegex,\n replaceAlias: replaceAlias\n};\n\nlet aggregationFunctions = {\n avg: AVERAGE,\n min: MIN,\n max: MAX,\n median: MEDIAN,\n sum: SUM,\n count: COUNT\n};\n\nexport default {\n downsampleSeries: downsampleSeries,\n groupBy: groupBy,\n AVERAGE: AVERAGE,\n MIN: MIN,\n MAX: MAX,\n MEDIAN: MEDIAN,\n SUM: SUM,\n COUNT: COUNT,\n unShiftTimeSeries: unShiftTimeSeries,\n\n get aggregationFunctions() {\n return aggregationFunctions;\n },\n\n get metricFunctions() {\n return metricFunctions;\n }\n};\n"]} \ No newline at end of file +{"version":3,"sources":["../../src/datasource-zabbix/dataProcessor.js"],"names":["limit","order","n","orderByFunc","timeseries","orderByCallback","aggregationFunctions","sortByIteratee","ts","values","_","map","datapoints","point","sortedTimeseries","sortBy","slice","setAlias","alias","target","replaceAlias","regexp","newAlias","pattern","utils","isRegex","buildRegex","replace","setAliasByRegex","extractText","str","extractPattern","RegExp","extractedValue","exec","groupByWrapper","interval","groupFunc","groupByCallback","groupBy","aggregateByWrapper","aggregateFunc","flattenedPoints","flatten","aggregateWrapper","timeShift","range","shift","parseTimeShiftInterval","time","unShiftTimeSeries","unshift","dp","downsampleSeries","downsample","groupBy_perf","groupBy_exported","sumSeries","delta","scale","factor","SUM","COUNT","AVERAGE","MIN","MAX","MEDIAN","metricFunctions","aggregateBy","average","partial","min","max","median","sum","count","top","bottom","avg"],"mappings":"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","file":"dataProcessor.js","sourcesContent":["import _ from 'lodash';\nimport * as utils from './utils';\nimport ts from './timeseries';\n\nlet downsampleSeries = ts.downsample;\nlet groupBy = ts.groupBy_perf;\nlet groupBy_exported = (interval, groupFunc, datapoints) => groupBy(datapoints, interval, groupFunc);\nlet sumSeries = ts.sumSeries;\nlet delta = ts.delta;\nlet scale = (factor, datapoints) => ts.scale(datapoints, factor);\n\nlet SUM = ts.SUM;\nlet COUNT = ts.COUNT;\nlet AVERAGE = ts.AVERAGE;\nlet MIN = ts.MIN;\nlet MAX = ts.MAX;\nlet MEDIAN = ts.MEDIAN;\n\nfunction limit(order, n, orderByFunc, timeseries) {\n let orderByCallback = aggregationFunctions[orderByFunc];\n let sortByIteratee = (ts) => {\n let values = _.map(ts.datapoints, (point) => {\n return point[0];\n });\n return orderByCallback(values);\n };\n let sortedTimeseries = _.sortBy(timeseries, sortByIteratee);\n if (order === 'bottom') {\n return sortedTimeseries.slice(0, n);\n } else {\n return sortedTimeseries.slice(-n);\n }\n}\n\nfunction setAlias(alias, timeseries) {\n timeseries.target = alias;\n return timeseries;\n}\n\nfunction replaceAlias(regexp, newAlias, timeseries) {\n let pattern;\n if (utils.isRegex(regexp)) {\n pattern = utils.buildRegex(regexp);\n } else {\n pattern = regexp;\n }\n\n let alias = timeseries.target.replace(pattern, newAlias);\n timeseries.target = alias;\n return timeseries;\n}\n\nfunction setAliasByRegex(alias, timeseries) {\n timeseries.target = extractText(timeseries.target, alias);\n return timeseries;\n}\n\nfunction extractText(str, pattern) {\n var extractPattern = new RegExp(pattern);\n var extractedValue = extractPattern.exec(str);\n extractedValue = extractedValue[0];\n return extractedValue;\n}\n\nfunction groupByWrapper(interval, groupFunc, datapoints) {\n var groupByCallback = aggregationFunctions[groupFunc];\n return groupBy(datapoints, interval, groupByCallback);\n}\n\nfunction aggregateByWrapper(interval, aggregateFunc, datapoints) {\n // Flatten all points in frame and then just use groupBy()\n var flattenedPoints = _.flatten(datapoints, true);\n var groupByCallback = aggregationFunctions[aggregateFunc];\n return groupBy(flattenedPoints, interval, groupByCallback);\n}\n\nfunction aggregateWrapper(groupByCallback, interval, datapoints) {\n var flattenedPoints = _.flatten(datapoints, true);\n return groupBy(flattenedPoints, interval, groupByCallback);\n}\n\nfunction timeShift(interval, range) {\n let shift = utils.parseTimeShiftInterval(interval) / 1000;\n return _.map(range, time => {\n return time - shift;\n });\n}\n\nfunction unShiftTimeSeries(interval, datapoints) {\n let unshift = utils.parseTimeShiftInterval(interval);\n return _.map(datapoints, dp => {\n return [\n dp[0],\n dp[1] + unshift\n ];\n });\n}\n\nlet metricFunctions = {\n groupBy: groupByWrapper,\n scale: scale,\n delta: delta,\n aggregateBy: aggregateByWrapper,\n average: _.partial(aggregateWrapper, AVERAGE),\n min: _.partial(aggregateWrapper, MIN),\n max: _.partial(aggregateWrapper, MAX),\n median: _.partial(aggregateWrapper, MEDIAN),\n sum: _.partial(aggregateWrapper, SUM),\n count: _.partial(aggregateWrapper, COUNT),\n sumSeries: sumSeries,\n top: _.partial(limit, 'top'),\n bottom: _.partial(limit, 'bottom'),\n timeShift: timeShift,\n setAlias: setAlias,\n setAliasByRegex: setAliasByRegex,\n replaceAlias: replaceAlias\n};\n\nlet aggregationFunctions = {\n avg: AVERAGE,\n min: MIN,\n max: MAX,\n median: MEDIAN,\n sum: SUM,\n count: COUNT\n};\n\nexport default {\n downsampleSeries: downsampleSeries,\n groupBy: groupBy_exported,\n AVERAGE: AVERAGE,\n MIN: MIN,\n MAX: MAX,\n MEDIAN: MEDIAN,\n SUM: SUM,\n COUNT: COUNT,\n unShiftTimeSeries: unShiftTimeSeries,\n\n get aggregationFunctions() {\n return aggregationFunctions;\n },\n\n get metricFunctions() {\n return metricFunctions;\n }\n};\n"]} \ No newline at end of file diff --git a/dist/test/benchmarks/timeseries_bench.js b/dist/test/benchmarks/timeseries_bench.js new file mode 100644 index 0000000..732b18d --- /dev/null +++ b/dist/test/benchmarks/timeseries_bench.js @@ -0,0 +1,50 @@ +'use strict'; + +var _lodash = require('lodash'); + +var _lodash2 = _interopRequireDefault(_lodash); + +var _timeseries = require('../timeseries'); + +var _timeseries2 = _interopRequireDefault(_timeseries); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var datapoints = [[10.7104, 1498409636085], [10.578, 1498409651011], [10.5985, 1498409666628], [10.6877, 1498409681525], [10.5495, 1498409696586], [10.5981, 1498409711009], [10.5076, 1498409726949], [11.4807, 1498409741853], [11.6165, 1498409756165], [11.8575, 1498409771018], [11.9936, 1498409786056], [10.7566, 1498409801942], [10.7484, 1498409816010], [10.6038, 1498409831018], [10.2932, 1498409846010], [10.4912, 1498409861946], [10.4151, 1498409876871], [10.2401, 1498409891710], [10.4921, 1498409906143], [10.4413, 1498409921477], [10.6318, 1498409936147], [10.5277, 1498409951915], [10.6333, 1498409966052], [10.6417, 1498409981944], [10.4505, 1498409996867], [10.5812, 1498410011770], [10.4934, 1498410026573], [10.5731, 1498410041317], [10.5, 1498410056213], [10.6505, 1498410071013], [9.4035, 1498410086387]]; + +var series_set = [[[1.0247, 1498409631773], [0.9988, 1498409646697], [0.9817, 1498409661239], [0.9569, 1498409676045], [1.0331, 1498409691922], [1.0755, 1498409706546], [1.1862, 1498409721525], [1.2984, 1498409736175], [1.2389, 1498409751817], [1.1452, 1498409766783], [1.102, 1498409781699], [0.9647, 1498409796664], [1.0063, 1498409811627], [1.0318, 1498409826887], [1.065, 1498409841645], [1.0907, 1498409856647], [1.0229, 1498409871521], [1.0654, 1498409886031], [1.0568, 1498409901544], [1.0818, 1498409916194], [1.1335, 1498409931672], [1.057, 1498409946673], [1.0243, 1498409961669], [1.0329, 1498409976637], [1.1428, 1498409991563], [1.2198, 1498410006441], [1.2192, 1498410021230], [1.2615, 1498410036027], [1.1765, 1498410051907], [1.2352, 1498410066109], [1.0557, 1498410081043]], [[10.7104, 1498409636085], [10.578, 1498409651011], [10.5985, 1498409666628], [10.6877, 1498409681525], [10.5495, 1498409696586], [10.5981, 1498409711009], [10.5076, 1498409726949], [11.4807, 1498409741853], [11.6165, 1498409756165], [11.8575, 1498409771018], [11.9936, 1498409786056], [10.7566, 1498409801942], [10.7484, 1498409816010], [10.6038, 1498409831018], [10.2932, 1498409846010], [10.4912, 1498409861946], [10.4151, 1498409876871], [10.2401, 1498409891710], [10.4921, 1498409906143], [10.4413, 1498409921477], [10.6318, 1498409936147], [10.5277, 1498409951915], [10.6333, 1498409966052], [10.6417, 1498409981944], [10.4505, 1498409996867], [10.5812, 1498410011770], [10.4934, 1498410026573], [10.5731, 1498410041317], [10.5, 1498410056213], [10.6505, 1498410071013], [9.4035, 1498410086387]]]; + +module.exports = [{ + name: 'groupBy', + tests: { + 'groupBy(AVERAGE)': function groupByAVERAGE() { + _timeseries2.default.groupBy(datapoints, '5m', _timeseries2.default.AVERAGE); + }, + 'groupBy(MAX)': function groupByMAX() { + _timeseries2.default.groupBy(datapoints, '5m', _timeseries2.default.COUNT); + } + } +}, { + name: 'sumSeries', + tests: { + 'sumSeries()': function sumSeries() { + _timeseries2.default.sumSeries(series_set); + }, + 'groupBy(MAX)->sumSeries()': function groupByMAXSumSeries() { + var prepeared_series = _lodash2.default.map(series_set, function (datapoints) { + return _timeseries2.default.groupBy(datapoints, '5m', _timeseries2.default.MAX); + }); + _timeseries2.default.sumSeries(prepeared_series); + } + } +}, { + name: 'groupBy vs groupBy_perf', + tests: { + 'groupBy()': function groupBy() { + _timeseries2.default.groupBy(datapoints, '5m', _timeseries2.default.AVERAGE); + }, + 'groupBy_perf()': function groupBy_perf() { + _timeseries2.default.groupBy_perf(datapoints, '5m', _timeseries2.default.AVERAGE); + } + } +}]; diff --git a/dist/test/datasource-zabbix/dataProcessor.js b/dist/test/datasource-zabbix/dataProcessor.js index 934bbbc..a5ef8c7 100644 --- a/dist/test/datasource-zabbix/dataProcessor.js +++ b/dist/test/datasource-zabbix/dataProcessor.js @@ -22,6 +22,9 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var downsampleSeries = _timeseries2.default.downsample; var groupBy = _timeseries2.default.groupBy_perf; +var groupBy_exported = function groupBy_exported(interval, groupFunc, datapoints) { + return groupBy(datapoints, interval, groupFunc); +}; var sumSeries = _timeseries2.default.sumSeries; var delta = _timeseries2.default.delta; var scale = function scale(factor, datapoints) { @@ -143,7 +146,7 @@ var aggregationFunctions = { exports.default = { downsampleSeries: downsampleSeries, - groupBy: groupBy, + groupBy: groupBy_exported, AVERAGE: AVERAGE, MIN: MIN, MAX: MAX, diff --git a/src/datasource-zabbix/dataProcessor.js b/src/datasource-zabbix/dataProcessor.js index 621ca67..624b588 100644 --- a/src/datasource-zabbix/dataProcessor.js +++ b/src/datasource-zabbix/dataProcessor.js @@ -4,6 +4,7 @@ import ts from './timeseries'; let downsampleSeries = ts.downsample; let groupBy = ts.groupBy_perf; +let groupBy_exported = (interval, groupFunc, datapoints) => groupBy(datapoints, interval, groupFunc); let sumSeries = ts.sumSeries; let delta = ts.delta; let scale = (factor, datapoints) => ts.scale(datapoints, factor); @@ -126,7 +127,7 @@ let aggregationFunctions = { export default { downsampleSeries: downsampleSeries, - groupBy: groupBy, + groupBy: groupBy_exported, AVERAGE: AVERAGE, MIN: MIN, MAX: MAX,