Commit d4411f572f11b119afebc3723baa4c8b3dd1ab59

Authored by Adhidarma Hadiwinoto
1 parent 86b3b9fa1f
Exists in master

runtime-info

Showing 3 changed files with 56 additions and 1 deletions Side-by-side Diff

... ... @@ -11,6 +11,7 @@ var querystring = require('querystring');
11 11 var morgan = require('morgan');
12 12 var FileStreamRotator = require('file-stream-rotator');
13 13 var fs = require('fs');
  14 +var os = require('os');
14 15 var monitorUtil = require('./monitor-util');
15 16  
16 17 var config = require('./config.json');
... ... @@ -303,11 +304,39 @@ function logout(req, res, next) {
303 304 res.redirect('/signin');
304 305 }
305 306  
  307 +function pageRuntimeInfo(req, res, next) {
  308 + var os_info = {
  309 + uptime: os.uptime(),
  310 + loadavg: os.loadavg(),
  311 + hostname: os.hostname(),
  312 + type: os.type(),
  313 + platform: os.platform(),
  314 + arch: os.arch(),
  315 + release: os.release(),
  316 + totalmem: os.totalmem(),
  317 + }
  318 +
  319 + res.render(
  320 + 'runtime-info.html',
  321 + {
  322 + title: 'Runtime Info',
  323 + config: JSON.stringify(config, null, 2),
  324 + nodejs_versions: JSON.stringify(process.versions, null, 2),
  325 + memory_usage: JSON.stringify(process.memoryUsage(), null, 2),
  326 + uptime: process.uptime(),
  327 + os_info: JSON.stringify(os_info, null, 2),
  328 + net_ifaces: JSON.stringify(os.networkInterfaces(), null, 2),
  329 + }
  330 + );
  331 +}
  332 +
306 333 app.all('/', authNeeded, pageHome);
307 334 app.get('/signin', pageSigninForm);
308 335 app.post('/signin', pageSigninPost);
309 336 app.get('/logout', logout);
310 337  
  338 +app.get('/runtime-info', authNeeded, adminNeeded, pageRuntimeInfo);
  339 +
311 340 app.get('/trx/view/:id', authNeeded, pageTrxView);
312 341  
313 342 app.get('/users', authNeeded, adminNeeded, usersController.index);
... ... @@ -325,7 +354,6 @@ app.get('/users/:capability/delete/:user_id/', authNeeded, adminNeeded, usersCon
325 354 app.get('/users/:capability/add/:user_id/:user_email', authNeeded, adminNeeded, usersController.addCapabilityForm);
326 355 app.post('/users/:capability/add/:user_id/:user_email', authNeeded, adminNeeded, usersController.addCapability);
327 356  
328   -
329 357 app.listen(config.listen_port, function () {
330 358 console.log('Example app listening on port ' + config.listen_port);
331 359 });
views/runtime-info.html
... ... @@ -0,0 +1,24 @@
  1 +{% extends "starter-template.html" %}
  2 +
  3 +{% block content %}
  4 +
  5 +<p>
  6 + Process uptime: {{ uptime }} seconds
  7 +</p>
  8 +
  9 +<h2 id="config">Config</h2>
  10 +<pre>{{ config }}</pre>
  11 +
  12 +<h2 id="memory">Memory Usage</h2>
  13 +<pre>{{ memory_usage }}</pre>
  14 +
  15 +<h2 id="nodejs_versions">Node.js Versions</h2>
  16 +<pre>{{ nodejs_versions }}</pre>
  17 +
  18 +<h2 id="os_info">OS</h2>
  19 +<pre>{{ os_info }}</pre>
  20 +
  21 +<h2 id="net_iface">Network Interfaces</h2>
  22 +<pre>{{ net_ifaces }}</pre>
  23 +
  24 +{% endblock %}
views/starter-template.html
... ... @@ -48,6 +48,7 @@
48 48 <div id="navbar" class="collapse navbar-collapse">
49 49 <ul class="nav navbar-nav">
50 50 <li><a href="/">Home</a></li>
  51 +
51 52 {% if session.isAdmin %}
52 53 <li class="dropdown">
53 54 <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
... ... @@ -55,9 +56,11 @@
55 56 </a>
56 57 <ul class="dropdown-menu">
57 58 <li><a href="/users">Users</a></li>
  59 + <li><a href="/runtime-info">Runtime info</a></li>
58 60 </ul>
59 61 </li>
60 62 {% endif %}
  63 +
61 64 <li><a href="/logout">Logout</a></li>
62 65 </ul>
63 66 </div><!--/.nav-collapse -->