From 7f257786711cb97ece0e88046f63afbd0ef13d48 Mon Sep 17 00:00:00 2001 From: undefined Date: Wed, 15 Sep 2021 18:11:43 +0800 Subject: [PATCH] core: export metrics with tx2 --- packages/hydrooj/package.json | 5 +++-- packages/hydrooj/src/loader.ts | 9 +++++---- packages/hydrooj/src/service/server.ts | 10 ++++++++++ packages/ui-default/handler.ts | 4 ++-- packages/ui-default/package.json | 2 +- 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index abe9f5b24..e050b7d87 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.35.0", + "version": "2.35.1", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", @@ -41,7 +41,8 @@ "serialize-javascript": "^6.0.0", "sockjs": "^0.3.21", "source-map-support": "^0.5.20", - "superagent": "^6.1.0" + "superagent": "^6.1.0", + "tx2": "^1.0.4" }, "devDependencies": { "@types/adm-zip": "^0.4.34", diff --git a/packages/hydrooj/src/loader.ts b/packages/hydrooj/src/loader.ts index fd91ba164..4e3dae106 100644 --- a/packages/hydrooj/src/loader.ts +++ b/packages/hydrooj/src/loader.ts @@ -34,16 +34,17 @@ export function addon(addonPath: string, prepend = false) { global.publicDirs[prepend ? 'push' : 'unshift'](publicPath); const targets = fs.readdirSync(publicPath); for (const target of targets) { - if (global.ui.manifest[target] && !prepend) { - global.ui.manifest[target] = publicPath; - } else if (!global.staticFiles[target]) { - global.ui.manifest[target] = publicPath; + if (global.Hydro.ui.manifest[target] && !prepend) { + global.Hydro.ui.manifest[target] = publicPath; + } else if (!global.Hydro.ui.manifest[target]) { + global.Hydro.ui.manifest[target] = publicPath; } } } global.addons[prepend ? 'unshift' : 'push'](modulePath); } catch (e) { logger.error(`Addon not found: ${addonPath}`); + logger.error(e); } } else logger.error(`Addon not found: ${addonPath}`); } diff --git a/packages/hydrooj/src/service/server.ts b/packages/hydrooj/src/service/server.ts index ead01b042..cea512be4 100644 --- a/packages/hydrooj/src/service/server.ts +++ b/packages/hydrooj/src/service/server.ts @@ -16,6 +16,7 @@ import { import moment from 'moment-timezone'; import { ObjectID } from 'mongodb'; import sockjs from 'sockjs'; +import tx2 from 'tx2'; import { parseMemoryMB } from '@hydrooj/utils/lib/utils'; import { BlacklistedError, CsrfTokenError, HydroError, @@ -39,6 +40,12 @@ import * as bus from './bus'; const argv = cac().parse(); const logger = new Logger('server'); +const reqCount = tx2.meter({ + name: 'req/sec', + samples: 1, + timeframe: 60, +}); +const connCount = tx2.counter({ name: 'connections' }); export const app = new Koa(); export const server = http.createServer(app.callback()); export const router = new Router(); @@ -664,6 +671,7 @@ async function bail(name: string, ...args: any[]) { } async function handle(ctx, HandlerClass, checker) { + reqCount.mark(); const args = { domainId: 'system', ...ctx.params, ...ctx.query, ...ctx.request.body, __start: Date.now(), }; @@ -862,9 +870,11 @@ export function Connection( h.message(JSON.parse(data)); }); } + connCount.inc(); conn.on('close', async () => { if (h.cleanup) await h.cleanup(args); if (h.finish) await h.finish(args); + connCount.dec(); }); } catch (e) { logger.warn('%o', e); diff --git a/packages/ui-default/handler.ts b/packages/ui-default/handler.ts index fc6d78d2f..336ca55f5 100644 --- a/packages/ui-default/handler.ts +++ b/packages/ui-default/handler.ts @@ -30,9 +30,9 @@ declare module 'hydrooj/src/interface' { const cache = {}; const coll = db.collection('cache'); -const pages = Object.keys(global.ui.manifest) +const pages = Object.keys(global.Hydro.ui.manifest) .filter((file) => file.endsWith('.page.js')) - .map((i) => readFileSync(join(global.ui.manifest[i], i), 'utf-8')); + .map((i) => readFileSync(join(global.Hydro.ui.manifest[i], i), 'utf-8')); async function constant(args: ConstantArgs) { // CompileLangs diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index 69c57093b..596ecc50c 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.21.0", + "version": "4.21.1", "author": "undefined ", "license": "AGPL-3.0", "main": "hydro.js",