diff --git a/dashboard/src/components/CpuUsage.vue b/dashboard/src/components/CpuUsage.vue index 6c3888794..7e7decf45 100644 --- a/dashboard/src/components/CpuUsage.vue +++ b/dashboard/src/components/CpuUsage.vue @@ -45,7 +45,7 @@ async function liveRefresh() { // stop and clear if (period.value !== 0) return gLiveDataPoints = {}; - const [error, result] = await systemModel.graphs({ fromSecs: 60, intervalSecs: 300 }); + const [error, result] = await systemModel.getMetrics({ fromSecs: 60, intervalSecs: 300 }); if (error) return console.error(error); for (const v of result.cpu) { @@ -70,7 +70,7 @@ async function liveRefresh() { async function refresh() { busy.value = true; - const [error, result] = await systemModel.graphs({ fromSecs: (period.value || 0.1) * 60 * 60, intervalSecs: 300 }); + const [error, result] = await systemModel.getMetrics({ fromSecs: (period.value || 0.1) * 60 * 60, intervalSecs: 300 }); if (error) return console.error(error); const labels = result.cpu.map(v => { diff --git a/dashboard/src/components/MemoryUsage.vue b/dashboard/src/components/MemoryUsage.vue index 121e28de8..a29193681 100644 --- a/dashboard/src/components/MemoryUsage.vue +++ b/dashboard/src/components/MemoryUsage.vue @@ -41,7 +41,7 @@ let gGraph = null; async function refresh() { busy.value = true; - const [error, result] = await systemModel.graphs({ fromSecs: period.value * 60 * 60, intervalSecs: 300 }); + const [error, result] = await systemModel.getMetrics({ fromSecs: period.value * 60 * 60, intervalSecs: 300 }); if (error) return console.error(error); const labels = result.memory.map(v => { diff --git a/dashboard/src/components/app/Graphs.vue b/dashboard/src/components/app/Graphs.vue index eb66244e3..d8f0353ea 100644 --- a/dashboard/src/components/app/Graphs.vue +++ b/dashboard/src/components/app/Graphs.vue @@ -137,7 +137,7 @@ function fillGraph(element, contents, chartPropertyName, divisor, max, format, f async function refresh() { busy.value = true; - const [error,result] = await appsModel.graphs(app.id, { fromSecs: period.value * 60 * 60, intervalSecs: 300 }); + const [error,result] = await appsModel.getMetrics(app.id, { fromSecs: period.value * 60 * 60, intervalSecs: 300 }); if (error) return console.error(error); blockReadTotal.value = (result.blockReadTotal / ioDivisor / 1000).toFixed(2) + ' MB'; diff --git a/dashboard/src/models/AppsModel.js b/dashboard/src/models/AppsModel.js index cd9a9ebda..22b2040dc 100644 --- a/dashboard/src/models/AppsModel.js +++ b/dashboard/src/models/AppsModel.js @@ -391,10 +391,10 @@ function create() { if (result.status !== 202) return [result]; return [null]; }, - async graphs(id, options) { + async getMetrics(id, options) { let result; try { - result = await fetcher.get(`${API_ORIGIN}/api/v1/apps/${id}/graphs`, { fromSecs: options.fromSecs, intervalSecs: options.intervalSecs, access_token: accessToken }); + result = await fetcher.get(`${API_ORIGIN}/api/v1/apps/${id}/metrics`, { fromSecs: options.fromSecs, intervalSecs: options.intervalSecs, access_token: accessToken }); } catch (e) { return [e]; } diff --git a/dashboard/src/models/SystemModel.js b/dashboard/src/models/SystemModel.js index 4f1e891ca..60ee63f4b 100644 --- a/dashboard/src/models/SystemModel.js +++ b/dashboard/src/models/SystemModel.js @@ -83,10 +83,10 @@ function create() { if (error || result.status !== 201) return [error || result]; return [null, result.body.taskId]; }, - async graphs(options) { + async getMetrics(options) { let error, result; try { - result = await fetcher.get(`${API_ORIGIN}/api/v1/system/graphs`, { fromSecs: options.fromSecs, intervalSecs: options.intervalSecs, access_token: accessToken }); + result = await fetcher.get(`${API_ORIGIN}/api/v1/system/metrics`, { fromSecs: options.fromSecs, intervalSecs: options.intervalSecs, access_token: accessToken }); } catch (e) { error = e; } diff --git a/src/graphs.js b/src/metrics.js similarity index 96% rename from src/graphs.js rename to src/metrics.js index 51f9a098d..1b37b2451 100644 --- a/src/graphs.js +++ b/src/metrics.js @@ -2,7 +2,7 @@ exports = module.exports = { getSystem, - getContainerStats + getContainers }; const apps = require('./apps.js'), @@ -27,7 +27,7 @@ async function getGraphiteUrl() { return `http://${ip}:8000/graphite-web/render`; } -async function getContainerStats(name, options) { +async function getContainers(name, options) { assert.strictEqual(typeof name, 'string'); assert.strictEqual(typeof options, 'object'); @@ -129,12 +129,12 @@ async function getSystem(options) { const appStats = {}; for (const app of await apps.list()) { - appStats[app.id] = await getContainerStats(app.id, options); + appStats[app.id] = await getContainers(app.id, options); } const serviceStats = {}; for (const serviceId of await services.listServices()) { - serviceStats[serviceId] = await getContainerStats(serviceId, options); + serviceStats[serviceId] = await getContainers(serviceId, options); } return { diff --git a/src/routes/apps.js b/src/routes/apps.js index a594954f7..a83254b53 100644 --- a/src/routes/apps.js +++ b/src/routes/apps.js @@ -65,7 +65,7 @@ exports = module.exports = { updateBackup, downloadBackup, - getGraphs, + getMetrics, load }; @@ -77,9 +77,9 @@ const apps = require('../apps.js'), BoxError = require('../boxerror.js'), constants = require('../constants.js'), debug = require('debug')('box:routes/apps'), - graphs = require('../graphs.js'), HttpError = require('connect-lastmile').HttpError, HttpSuccess = require('connect-lastmile').HttpSuccess, + metrics = require('../metrics.js'), safe = require('safetydance'), updateChecker = require('../updatechecker.js'), users = require('../users.js'), @@ -1061,7 +1061,7 @@ async function getTask(req, res, next) { next(new HttpSuccess(200, result)); } -async function getGraphs(req, res, next) { +async function getMetrics(req, res, next) { assert.strictEqual(typeof req.app, 'object'); if (!req.query.fromSecs || !parseInt(req.query.fromSecs)) return next(new HttpError(400, 'fromSecs must be a number')); @@ -1070,7 +1070,7 @@ async function getGraphs(req, res, next) { const fromSecs = parseInt(req.query.fromSecs); const intervalSecs = parseInt(req.query.intervalSecs); const noNullPoints = !!req.query.noNullPoints; - const [error, result] = await safe(graphs.getContainerStats(req.app.id, { fromSecs, noNullPoints, intervalSecs })); + const [error, result] = await safe(metrics.getContainers(req.app.id, { fromSecs, noNullPoints, intervalSecs })); if (error) return next(new HttpError(500, error)); next(new HttpSuccess(200, result)); diff --git a/src/routes/services.js b/src/routes/services.js index a3d06bbab..5f66a28b1 100644 --- a/src/routes/services.js +++ b/src/routes/services.js @@ -8,16 +8,16 @@ exports = module.exports = { getLogStream, restart, rebuild, - getGraphs, + getMetrics, getPlatformStatus }; const assert = require('assert'), AuditSource = require('../auditsource.js'), BoxError = require('../boxerror.js'), - graphs = require('../graphs.js'), HttpError = require('connect-lastmile').HttpError, HttpSuccess = require('connect-lastmile').HttpSuccess, + metrics = require('../metrics.js'), platform = require('../platform.js'), safe = require('safetydance'), services = require('../services.js'); @@ -136,14 +136,16 @@ async function rebuild(req, res, next) { next(new HttpSuccess(202, {})); } -async function getGraphs(req, res, next) { +async function getMetrics(req, res, next) { assert.strictEqual(typeof req.params.service, 'string'); - if (!req.query.fromMinutes || !parseInt(req.query.fromMinutes)) return next(new HttpError(400, 'fromMinutes must be a number')); + if (!req.query.fromSecs || !parseInt(req.query.fromSecs)) return next(new HttpError(400, 'fromSecs must be a number')); + if (!req.query.intervalSecs || !parseInt(req.query.intervalSecs)) return next(new HttpError(400, 'intervalSecs must be a number')); - const fromMinutes = parseInt(req.query.fromMinutes); + const fromSecs = parseInt(req.query.fromSecs); + const intervalSecs = parseInt(req.query.intervalSecs); const noNullPoints = !!req.query.noNullPoints; - const [error, result] = await safe(graphs.getContainerStats(req.params.service, fromMinutes, noNullPoints)); + const [error, result] = await safe(metrics.getContainers(req.params.service, { fromSecs, intervalSecs, noNullPoints })); if (error) return next(new HttpError(500, error)); next(new HttpSuccess(200, result)); diff --git a/src/routes/system.js b/src/routes/system.js index ac6a19614..b7bf70825 100644 --- a/src/routes/system.js +++ b/src/routes/system.js @@ -8,16 +8,16 @@ exports = module.exports = { getMemory, getLogs, getLogStream, - getSystemGraphs, + getMetrics, getBlockDevices, getCpus, }; const assert = require('assert'), BoxError = require('../boxerror.js'), - graphs = require('../graphs.js'), HttpError = require('connect-lastmile').HttpError, HttpSuccess = require('connect-lastmile').HttpSuccess, + metrics = require('../metrics.js'), safe = require('safetydance'), system = require('../system.js'); @@ -117,14 +117,14 @@ async function getLogStream(req, res, next) { logStream.on('error', res.end.bind(res, null)); } -async function getSystemGraphs(req, res, next) { +async function getMetrics(req, res, next) { if (!req.query.fromSecs || !parseInt(req.query.fromSecs)) return next(new HttpError(400, 'fromSecs must be a number')); if (!req.query.intervalSecs || !parseInt(req.query.intervalSecs)) return next(new HttpError(400, 'intervalSecs must be a number')); const fromSecs = parseInt(req.query.fromSecs); const intervalSecs = parseInt(req.query.intervalSecs); const noNullPoints = !!req.query.noNullPoints; - const [error, result] = await safe(graphs.getSystem({ fromSecs, intervalSecs, noNullPoints })); + const [error, result] = await safe(metrics.getSystem({ fromSecs, intervalSecs, noNullPoints })); if (error) return next(new HttpError(500, error)); next(new HttpSuccess(200, result)); diff --git a/src/server.js b/src/server.js index c7724e626..bf40da66b 100644 --- a/src/server.js +++ b/src/server.js @@ -113,7 +113,7 @@ async function initializeExpressSync() { // system (vm/server) router.get ('/api/v1/system/info', token, authorizeAdmin, routes.system.getInfo); // vendor, product name etc router.post('/api/v1/system/reboot', json, token, authorizeAdmin, routes.system.reboot); - router.get ('/api/v1/system/graphs', token, authorizeAdmin, routes.system.getSystemGraphs); + router.get ('/api/v1/system/metrics', token, authorizeAdmin, routes.system.getMetrics); router.get ('/api/v1/system/disk_usage', token, authorizeAdmin, routes.system.getDiskUsage); router.post('/api/v1/system/disk_usage', token, authorizeAdmin, routes.system.updateDiskUsage); router.get ('/api/v1/system/block_devices', token, authorizeAdmin, routes.system.getBlockDevices); @@ -291,7 +291,7 @@ async function initializeExpressSync() { router.get ('/api/v1/apps/:id/logs', token, routes.apps.load, authorizeOperator, routes.apps.getLogs); router.get ('/api/v1/apps/:id/eventlog', token, routes.apps.load, authorizeOperator, routes.apps.listEventlog); router.get ('/api/v1/apps/:id/task', token, routes.apps.load, authorizeOperator, routes.apps.getTask); - router.get ('/api/v1/apps/:id/graphs', token, routes.apps.load, authorizeOperator, routes.apps.getGraphs); + router.get ('/api/v1/apps/:id/metrics', token, routes.apps.load, authorizeOperator, routes.apps.getMetrics); router.post('/api/v1/apps/:id/clone', json, token, routes.apps.load, authorizeAdmin, routes.apps.clone); router.use ('/api/v1/apps/:id/files/*', token, routes.apps.load, authorizeOperator, routes.filemanager.proxy('app')); router.post('/api/v1/apps/:id/exec', json, token, routes.apps.load, authorizeOperator, routes.apps.createExec); @@ -422,7 +422,7 @@ async function initializeExpressSync() { router.get ('/api/v1/services/platform_status', token, authorizeUser, routes.services.getPlatformStatus); router.get ('/api/v1/services/:service', token, authorizeAdmin, routes.services.get); router.post('/api/v1/services/:service', json, token, authorizeAdmin, routes.services.configure); - router.get ('/api/v1/services/:service/graphs', token, authorizeAdmin, routes.services.getGraphs); + router.get ('/api/v1/services/:service/metrics', token, authorizeAdmin, routes.services.getMetrics); router.get ('/api/v1/services/:service/logs', token, authorizeAdmin, routes.services.getLogs); router.get ('/api/v1/services/:service/logstream', token, authorizeAdmin, routes.services.getLogStream); router.post('/api/v1/services/:service/restart', json, token, authorizeAdmin, routes.services.restart);