diff --git a/src/Monitoring/Stat.ts b/src/Monitoring/Stat.ts index e9a266a2..a611a721 100755 --- a/src/Monitoring/Stat.ts +++ b/src/Monitoring/Stat.ts @@ -67,14 +67,14 @@ export abstract class Stat { // Called once a second to do any gathering operation abstract Gather(): void; // Return an object containing the values in this stat - Report(): any { + Report(pReturnHistogram: boolean = true): any { const report: VKeyedCollection = { 'name': this.name, 'category': this.category, 'unit': this.unit, 'value': this.value }; - if (this._histograms.size > 0) { + if (pReturnHistogram && this._histograms.size > 0) { const history: any = {}; this._histograms.forEach( (histo, name) => { history[name] = histo.GetHistogram(); diff --git a/src/Monitoring/StatsOs.ts b/src/Monitoring/StatsOs.ts index b323ab4c..b5e83cc3 100755 --- a/src/Monitoring/StatsOs.ts +++ b/src/Monitoring/StatsOs.ts @@ -64,15 +64,15 @@ export class StatsOs extends Stat { Gather(): void { return; } - Report() { + Report(pReturnHistogram: boolean = true) { return { 'cpus': os.cpus(), 'freemem': os.freemem(), 'totalmem': os.totalmem(), 'loadavg': os.loadavg(), 'uptime': os.uptime(), - 'cpuBusy': Monitoring.getStat('cpuBusy')?.Report(), - 'memUsage': Monitoring.getStat('memUsage')?.Report() + 'cpuBusy': Monitoring.getStat('cpuBusy')?.Report(pReturnHistogram), + 'memUsage': Monitoring.getStat('memUsage')?.Report(pReturnHistogram) }; } }; diff --git a/src/Monitoring/StatsServer.ts b/src/Monitoring/StatsServer.ts index a36909e9..97505d45 100755 --- a/src/Monitoring/StatsServer.ts +++ b/src/Monitoring/StatsServer.ts @@ -53,10 +53,10 @@ export class StatsServer extends Stat { Gather(): void { return; } - Report() { + Report(pReturnHistogram: boolean = true) { return { - 'apiRequests': Monitoring.getStat('apiRequests').Report(), - 'apiErrors': Monitoring.getStat('apiErrors').Report(), + 'apiRequests': Monitoring.getStat('apiRequests')?.Report(pReturnHistogram), + 'apiErrors': Monitoring.getStat('apiErrors')?.Report(pReturnHistogram), }; } }; \ No newline at end of file diff --git a/src/routes/api/v1/requests.ts b/src/routes/api/v1/requests.ts index ad1abee2..961302a5 100755 --- a/src/routes/api/v1/requests.ts +++ b/src/routes/api/v1/requests.ts @@ -68,7 +68,7 @@ export const name = '/api/v1/requests'; export const router = Router(); -router.get( '/api/v1/requests', [ setupMetaverseAPI, - accountFromAuthToken, // vRestResp.vAuthAccount - procGetRequests, - finishMetaverseAPI ] ); \ No newline at end of file +router.get( '/api/v1/requests', [ setupMetaverseAPI, // req.vRestResp + accountFromAuthToken, // req.vAuthAccount + procGetRequests, + finishMetaverseAPI ] ); \ No newline at end of file diff --git a/src/routes/api/v1/stats/category/category.ts b/src/routes/api/v1/stats/category/category.ts index 35ea5c06..8040d239 100755 --- a/src/routes/api/v1/stats/category/category.ts +++ b/src/routes/api/v1/stats/category/category.ts @@ -20,15 +20,21 @@ import { Router, RequestHandler, Request, Response, NextFunction } from 'express import { setupMetaverseAPI, finishMetaverseAPI, param1FromParams } from '@Route-Tools/middleware'; import { accountFromAuthToken } from '@Route-Tools/middleware'; -import { Logger } from '@Tools/Logging'; import { Monitoring } from '@Monitoring/Monitoring'; +import { Logger } from '@Tools/Logging'; + const procGetCategoryStats: RequestHandler = async (req: Request, resp: Response, next: NextFunction) => { if (req.vAuthAccount) { if (req.vParam1) { + let includeHistory = true; + if (req.params.history) { + includeHistory = [ 'false', 'no' ].includes(req.params.history) ? false : true; + }; + if (['os', 'server', 'metaverse'].includes(req.vParam1)) { const data:any = {}; - data[req.vParam1] = Monitoring.getStat(req.vParam1)?.Report() + data[req.vParam1] = Monitoring.getStat(req.vParam1)?.Report(includeHistory); req.vRestResp.Data = data; } @@ -51,7 +57,7 @@ export const name = '/api/v1/stats/category/:category'; export const router = Router(); router.get('/api/v1/stats/category/:param1', [ setupMetaverseAPI, // req.vRestResp - accountFromAuthToken, // req.vAuthAccount - param1FromParams, // req.vParam1 - procGetCategoryStats, - finishMetaverseAPI ] ); + accountFromAuthToken, // req.vAuthAccount + param1FromParams, // req.vParam1 + procGetCategoryStats, + finishMetaverseAPI ] ); diff --git a/src/routes/api/v1/stats/stat.ts b/src/routes/api/v1/stats/stat.ts index 24b2cae9..99f8ab24 100755 --- a/src/routes/api/v1/stats/stat.ts +++ b/src/routes/api/v1/stats/stat.ts @@ -20,16 +20,21 @@ import { Router, RequestHandler, Request, Response, NextFunction } from 'express import { setupMetaverseAPI, finishMetaverseAPI, param1FromParams } from '@Route-Tools/middleware'; import { accountFromAuthToken } from '@Route-Tools/middleware'; -import { Logger } from '@Tools/Logging'; import { Monitoring } from '@Monitoring/Monitoring'; +import { Logger } from '@Tools/Logging'; + const procGetStat: RequestHandler = async (req: Request, resp: Response, next: NextFunction) => { if (req.vAuthAccount) { if (req.vParam1) { + let includeHistory = true; + if (req.params.history) { + includeHistory = [ 'false', 'no' ].includes(req.params.history) ? false : true; + }; const stat = Monitoring.getStat(req.vParam1); if (stat) { req.vRestResp.Data = { - 'stat': stat.Report() + 'stat': stat.Report(includeHistory) }; } else {