diff --git a/src/counters.js b/src/counters.js index b72bbb55..13dbada1 100644 --- a/src/counters.js +++ b/src/counters.js @@ -1,5 +1,8 @@ var Logger = require('./logger'); var counterLog = new Logger.Logger('counters.log'); +import os from 'os'; +import io from 'socket.io'; +import Socket from 'socket.io/lib/socket'; var counters = {}; @@ -15,7 +18,20 @@ exports.add = function (counter, value) { } }; +Socket.prototype._packet = Socket.prototype.packet; +Socket.prototype.packet = function () { + this._packet.apply(this, arguments); + exports.add('socket.io:packet'); +}; + setInterval(function () { - counterLog.log(JSON.stringify(counters)); + try { + counters['memory:rss'] = process.memoryUsage().rss / 1048576; + counters['load:1min'] = os.loadavg()[0]; + counters['socket.io:count'] = io.instance.sockets.sockets.length; + counterLog.log(JSON.stringify(counters)); + } catch (e) { + Logger.errlog.log(e.stack); + } counters = {}; }, 60000); diff --git a/src/io/ioserver.js b/src/io/ioserver.js index 9ccf6bdd..a34007bd 100644 --- a/src/io/ioserver.js +++ b/src/io/ioserver.js @@ -14,6 +14,7 @@ var util = require("../utilities"); var crypto = require("crypto"); var isTorExit = require("../tor").isTorExit; var session = require("../session"); +import counters from '../counters'; var CONNECT_RATE = { burst: 5, @@ -77,6 +78,7 @@ function ipLimitReached(sock) { var ip = sock._realip; sock.on("disconnect", function () { + counters.add("socket.io:disconnect", 1); ipCount[ip]--; if (ipCount[ip] === 0) { /* Clear out unnecessary counters to save memory */ @@ -169,6 +171,7 @@ function handleConnection(sock) { } Logger.syslog.log("Accepted socket from " + ip); + counters.add("socket.io:accept", 1); addTypecheckedFunctions(sock); @@ -225,7 +228,6 @@ module.exports = { } else { var server = require("http").createServer().listen(bind.port, bind.ip); server.on("clientError", function (err, socket) { - console.error("clientError on " + id + " - " + err); try { socket.destroy(); } catch (e) { diff --git a/src/server.js b/src/server.js index c387ccd3..91a39322 100644 --- a/src/server.js +++ b/src/server.js @@ -110,7 +110,6 @@ var Server = function () { self.servers[id] = https.createServer(opts, self.express) .listen(bind.port, bind.ip); self.servers[id].on("clientError", function (err, socket) { - console.error("clientError on " + id + " - " + err); try { socket.destroy(); } catch (e) { @@ -119,7 +118,6 @@ var Server = function () { } else if (bind.http) { self.servers[id] = self.express.listen(bind.port, bind.ip); self.servers[id].on("clientError", function (err, socket) { - console.error("clientError on " + id + " - " + err); try { socket.destroy(); } catch (e) { diff --git a/src/web/webserver.js b/src/web/webserver.js index f06d109a..5416feaa 100644 --- a/src/web/webserver.js +++ b/src/web/webserver.js @@ -12,6 +12,7 @@ import morgan from 'morgan'; import csrf from './csrf'; import * as HTTPStatus from './httpstatus'; import { CSRFError, HTTPError } from '../errors'; +import counters from "../counters"; function initializeLog(app) { const logFormat = ':real-address - :remote-user [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent"'; @@ -141,6 +142,11 @@ module.exports = { * Initializes webserver callbacks */ init: function (app, webConfig, ioConfig, clusterClient, channelIndex, session) { + app.use((req, res, next) => { + counters.add("http:request", 1); + req._ip = ipForRequest(req); + next(); + }); require('./middleware/x-forwarded-for')(app, webConfig); app.use(bodyParser.urlencoded({ extended: false, diff --git a/templates/useroptions.jade b/templates/useroptions.jade index 4a427b1d..43feea92 100644 --- a/templates/useroptions.jade +++ b/templates/useroptions.jade @@ -49,9 +49,6 @@ mixin us-general p.text-danger Changing layouts may require refreshing to take effect. mixin rcheckbox("us-no-channelcss", "Ignore Channel CSS") mixin rcheckbox("us-no-channeljs", "Ignore Channel Javascript") - .col-sm-4 - .col-sm-8 - p#us-conninfo.text-info Connection Information: .clear mixin us-scripts diff --git a/www/js/callbacks.js b/www/js/callbacks.js index e598e93b..e89341b2 100644 --- a/www/js/callbacks.js +++ b/www/js/callbacks.js @@ -1138,7 +1138,6 @@ setupCallbacks = function() { } var opts = { - transports: ["websocket", "polling"], secure: chosenServer.secure }; diff --git a/www/js/util.js b/www/js/util.js index 899b5a6c..605c6a71 100644 --- a/www/js/util.js +++ b/www/js/util.js @@ -624,23 +624,6 @@ function showUserOptions() { $("#us-layout").val(USEROPTS.layout); $("#us-no-channelcss").prop("checked", USEROPTS.ignore_channelcss); $("#us-no-channeljs").prop("checked", USEROPTS.ignore_channeljs); - var conninfo = "Connection Information: " + - "Connected to " + IO_URL + " ("; - if (IO_V6) { - conninfo += "IPv6, "; - } else { - conninfo += "IPv4, "; - } - - if (IO_URL === IO_URLS["ipv4-ssl"] || IO_URL === IO_URLS["ipv6-ssl"]) { - conninfo += "SSL)"; - } else { - conninfo += "no SSL)"; - } - - conninfo += ". SSL is enabled by default if it is supported by the server."; - $("#us-conninfo").html(conninfo); - $("#us-synch").prop("checked", USEROPTS.synch); $("#us-synch-accuracy").val(USEROPTS.sync_accuracy);