
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
node-uptime
Advanced tools
A remote monitoring application using Node.js, MongoDB, and Twitter Bootstrap.
You can watch a demo screencast on Vimeo.
Uptime 3.0 requires Node.js 0.8 (if you're stuck with Node 0.6, try Uptime v1.4, available as a tag and on npm).
One line install:
> npm install node-uptime
Alternatively, clone the repository from GitHub and install dependencies using npm:
> git clone git://github.com/fzaninotto/uptime.git
> npm install
Lastly, start the application with:
> node app.js
If you have been using uptime 1.0 or 2.0, you have to execute the migration script before using the new release.
> node models/migrations/upgrade2to3
By default, the web UI runs on port 8082, so just browse to
http://localhost:8082/
And you're ready to begin. Create your first check by entering an URL, wait for the first ping, and you'll soon see data flowing through your charts!
Uptime uses node-config to allow YAML configuration and environment support. Here is the default configuration, taken from config/default.yaml:
mongodb:
server: localhost
database: uptime
user: root
password:
connectionString: # alternative to setting server, database, user and password separately
monitor:
name: origin
apiUrl: 'http://localhost:8082/api'
pollingInterval: 10000 # ten seconds
timeout: 5000 # five seconds
userAgent: NodeUptime/1.3 (https://github.com/fzaninotto/uptime)
analyzer:
updateInterval: 60000 # one minute
qosAggregationInterval: 600000 # ten minutes
pingHistory: 8035200000 # three months
autoStartMonitor: true
server:
port: 8082
To modify this configuration, create a development.yaml or a production.yaml file in the same directory, and override just the settings you need. For instance, to run Uptime on port 80 in production, create a production.yaml file as follows:
server:
port: 80
Node that Uptime works great behind a proxy - it uses the http_proxy environment variable transparently.
Heavily browsing the web dashboard may slow down the server - including the polling monitor. In other terms, using the application can influence the uptime measurements. To avoid this effect, it is recommended to run the polling monitor in a separate process.
To that extent, set the autoStartMonitor setting to false in the production.yaml, and launch the monitor by hand:
> node monitor.js &
> node app.js
You can also run the monitor in a different server. This second server must be able to reach the API of the dashboard server: set the monitor.apiUrl setting accordingly in the production.yaml file of the monitor server.
You can even run several monitor servers in several datacenters to get average response time. In that case, make sure you set a different monitor.name setting for all monitor servers to be able to tell which server make a particular ping.
Uptime provides plugins that you can enable to add more functionality.
To enable plugins, create a plugins/index.js module. This module must offer a public init() method, where you will require and initialize plugin modules. For instance, to enable only the console plugin:
// in plugins/index.js
exports.init = function() {
require('./console').init();
}
Currently supported plugins:
console: log pings and events in the console in real timeYou can add your own plugins under the plugins directory. A plugin is simply a module with a public init() method. For instance, if you had to recreate a simple version of the console plugin, you could write it as follows:
// in plugins/console/index.js
var CheckEvent = require('../../models/checkEvent');
exports.init = function() {
CheckEvent.on('afterInsert', function(checkEvent) {
checkEvent.findCheck(function(err, check) {
console.log(new Date() + check.name + checkEvent.isGoDown ? ' goes down' : ' goes back up');
});
});
}
All Uptime entities emit lifecycle events that you can listen to on the Model class. These events are beforeInsert, afterInsert, beforeUpdate, afterUpdate, beforeSave (called for both inserts and updates), afterSave (called for both inserts and updates), beforeRemove, and afterRemove. For more information about these events, check the mongoose-lifecycle plugin.
The Uptime code is free to use and distribute, under the MIT license.
Uptime uses third-party libraries:
If you like the software, please help improving it by contributing PRs on the GitHub project!
FAQs
Remote monitoring for HTTP applications
We found that node-uptime demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.