diff --git a/lib/router.js b/lib/router.js index bf12d8b5c..2b1de87cf 100644 --- a/lib/router.js +++ b/lib/router.js @@ -1,90 +1,10 @@ const Router = require('koa-router'); const router = new Router(); -const art = require('art-template'); -const path = require('path'); const config = require('./config'); const logger = require('./utils/logger'); -const pidusage = require('pidusage'); -let gitHash; -try { - gitHash = require('git-rev-sync').short(); -} catch (e) { - gitHash = (process.env.HEROKU_SLUG_COMMIT && process.env.HEROKU_SLUG_COMMIT.slice(0, 7)) || 'unknown'; -} -router.get('/', async (ctx) => { - ctx.set({ - 'Content-Type': 'text/html; charset=UTF-8', - }); - - const routes = Object.keys(ctx.debug.routes).sort((a, b) => ctx.debug.routes[b] - ctx.debug.routes[a]); - const hotRoutes = routes.slice(0, 50); - let hotRoutesValue = ''; - hotRoutes.forEach((item) => { - hotRoutesValue += `${ctx.debug.routes[item]}  ${item}
`; - }); - - const ips = Object.keys(ctx.debug.ips).sort((a, b) => ctx.debug.ips[b] - ctx.debug.ips[a]); - const hotIPs = ips.slice(0, 50); - let hotIPsValue = ''; - hotIPs.forEach((item) => { - hotIPsValue += `${ctx.debug.ips[item]}  ${item}
`; - }); - - let showDebug; - if (!config.debugInfo || config.debugInfo === 'false') { - showDebug = false; - } else { - showDebug = config.debugInfo === true || config.debugInfo === ctx.query.debug; - } - - const stats = await pidusage(process.pid); - - ctx.set({ - 'Cache-Control': 'no-cache', - }); - ctx.body = art(path.resolve(__dirname, './views/welcome.art'), { - showDebug, - debug: [ - { - name: 'git hash', - value: gitHash, - }, - { - name: '请求数', - value: ctx.debug.request, - }, - { - name: '请求频率', - value: ((ctx.debug.request / (stats.elapsed / 1000)) * 60).toFixed(3) + ' 次/分钟', - }, - { - name: '缓存命中率', - value: ctx.debug.request ? (ctx.debug.hitCache / ctx.debug.request).toFixed(3) : 0, - }, - { - name: '内存占用', - value: stats.memory / 1000000 + ' MB', - }, - { - name: 'CPU 占用', - value: stats.cpu + '%', - }, - { - name: '运行时间', - value: (stats.elapsed / 3600000).toFixed(2) + ' 小时', - }, - { - name: '热门路由', - value: hotRoutesValue, - }, - { - name: '热门IP', - value: hotIPsValue, - }, - ], - }); -}); +// index +router.get('/', require('./routes/index')); // test router.get('/test/:id', require('./routes/test')); diff --git a/lib/routes/index.js b/lib/routes/index.js new file mode 100644 index 000000000..f266a8f11 --- /dev/null +++ b/lib/routes/index.js @@ -0,0 +1,85 @@ +const config = require('@/config'); +const art = require('art-template'); +const path = require('path'); +const pidusage = require('pidusage'); + +let gitHash; +try { + gitHash = require('git-rev-sync').short(); +} catch (e) { + gitHash = (process.env.HEROKU_SLUG_COMMIT && process.env.HEROKU_SLUG_COMMIT.slice(0, 7)) || 'unknown'; +} + +module.exports = async (ctx) => { + ctx.set({ + 'Content-Type': 'text/html; charset=UTF-8', + }); + + const routes = Object.keys(ctx.debug.routes).sort((a, b) => ctx.debug.routes[b] - ctx.debug.routes[a]); + const hotRoutes = routes.slice(0, 50); + let hotRoutesValue = ''; + hotRoutes.forEach((item) => { + hotRoutesValue += `${ctx.debug.routes[item]}  ${item}
`; + }); + + const ips = Object.keys(ctx.debug.ips).sort((a, b) => ctx.debug.ips[b] - ctx.debug.ips[a]); + const hotIPs = ips.slice(0, 50); + let hotIPsValue = ''; + hotIPs.forEach((item) => { + hotIPsValue += `${ctx.debug.ips[item]}  ${item}
`; + }); + + let showDebug; + if (!config.debugInfo || config.debugInfo === 'false') { + showDebug = false; + } else { + showDebug = config.debugInfo === true || config.debugInfo === ctx.query.debug; + } + + const stats = await pidusage(process.pid); + + ctx.set({ + 'Cache-Control': 'no-cache', + }); + ctx.body = art(path.resolve(__dirname, '../views/welcome.art'), { + showDebug, + debug: [ + { + name: 'git hash', + value: gitHash, + }, + { + name: '请求数', + value: ctx.debug.request, + }, + { + name: '请求频率', + value: ((ctx.debug.request / (stats.elapsed / 1000)) * 60).toFixed(3) + ' 次/分钟', + }, + { + name: '缓存命中率', + value: ctx.debug.request ? (ctx.debug.hitCache / ctx.debug.request).toFixed(3) : 0, + }, + { + name: '内存占用', + value: stats.memory / 1000000 + ' MB', + }, + { + name: 'CPU 占用', + value: stats.cpu + '%', + }, + { + name: '运行时间', + value: (stats.elapsed / 3600000).toFixed(2) + ' 小时', + }, + { + name: '热门路由', + value: hotRoutesValue, + }, + { + name: '热门IP', + value: hotIPsValue, + }, + ], + }); +};