A service status dashboard powered by Node.js
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bin * Bugfix: Ftp methods were note prototype methods Jan 24, 2013
lib Inject http/https options - #54 Nov 7, 2013
plugins XMPP plugin Jan 13, 2014
public Cherry pick e9b64e0 (credits to stelcheck PR 39) Jan 29, 2013
samples Create HTTP Server in order to be able to test status dashboard easil… Jan 13, 2014
.gitignore Update .gitignore with nodester stuff Aug 12, 2011
Procfile Fix procfile - fix #61 Jan 22, 2014
api.js External plugins feature Jan 14, 2014
package.json Update hiredis to 0.1.17 Dec 8, 2014
plugins.json External plugins feature Jan 14, 2014
server.js Merge branch 'master' into feature/better-logging Jan 24, 2013


Status Dashboard

Status Dashboard is status page for your configured services or applications.

Demo @ Heroku : http://statusdashboard-node.herokuapp.com



Optionally, you can install as a global package


  • Improve UI: scrollbars, filters, check type column, ...
  • Add network services like SMTP, POP3, ...
  • Improve REST API to get / push data ...

How To Use

As an application

Add your entry in settings.js.

settings['xxx'] = {
  • export APP_ENV=demo
  • ./bin/statusdashboard

You can override settings with an external settings for private information like passwords, ..

  • vi ~/.statusdashboard/settings.js
exports.create = function() {
  var appSettings = {
    port: 8081,
    services: [{
      name: 'FTP Local',
      password: 'xxx'
  return appSettings;
  • export APP_SETTINGS=~/.statusdashboard/settings.js

As a node module

var dashboard = require('statusdashboard').dashboard(settings);



Add a new service to be checked


Remove a service to be checked


Start the scheduled checks. Automatically is started by default when instanciating dashboard


Stop the scheduled checks


Return the current status of checked services

All other calls available in api.js are to be used at your own risk. You have been warned


Daemon init script for node.js: https://gist.github.com/1123553


Some plugins are available out-of-the-box:

  • Console
  • Graphite, send service state in Graphite
  • Heartbeat
  • History, save service state in Redis (Thanks to sreeix initial pull request) and graph it!
  • IRC bot
  • Mail
  • Twitter
  • Webhook
  • XMPP

External Plugins

You can develop independent plugins and load them into Status Dashboard by using the external plugin feature. A plugin example is available at http://github.com/chamerling/sd-plugin-sample.

Plugins can be installed using npm CLI (from the status-dashboard directory):

npm install sd-plugin-sample

Or by adding them as dependency in the status-dashboard package.json descriptor.

In order to activate plugins, you have to add them to the plugins.json file (["sd-plugin-sample"], ["my_plugin"]) and turn on the external plugins feature in settings.js:

plugins : {
  external: {
    enable : true,
    file : __dirname + '/plugins.json'


  • List services
$ curl
{"last":"Fri, 17 Jun 2011 22:33:03 GMT","services":[{"name":"couchdb","label":"Couchdb server @ local","status":"up","statusCode":200,"message":""},{"name":"bazoud.free.fr","label":"Olivier Bazoud blog","status":"up","statusCode":200,"message":""},{"name":"bazoud.free.fr","label":"Olivier Bazoud blog test.php","status":"up","statusCode":200,"message":""},{"name":"redis","label":"Redis server @ local","status":"up","statusCode":0,"message":""},{"name":"FTP Local","label":"Ftp @ local","status":"down","statusCode":0,"message":"ECONNREFUSED, Connection refused"},{"name":"PID file","label":"Pid @ local","status":"unknown","statusCode":9,"message":"EBADF, Bad file descriptor '/tmp/terminal.pid'"}],"lastupdate":"Fri, 17 Jun 2011 22:33:08 GMT","summarize":{"lastupdate":"Fri, 17 Jun 2011 22:33:08 GMT","up":3,"critical":0,"down":1,"unknown":2}}
  • Retrieve a specific service
$ curl
{"name":"couchdb","label":"Couchdb server @ local","status":"up","statusCode":200,"message":""}
  • Retrieve a summary
$ curl
  • Version of application
$ curl -iX GET
{"commit":"641b97cbcfdc53b1b2b825d588afe08e412471d4","author":"obazoud","committer":"obazoud","date":"Fri, 12 Aug 2011 10:15:27 GMT"}
  • And plugin can contribute to statusdashboard REST API
$ curl
["{\"time\":1310024374699,\"status\":\"up\",\"message\":\"\",\"code\":200}","{\"time\":1310024379591,\"status\":\"up\",\"message\":\"\",\"code\":200}", ...]

Early adopters


  • IRC Plugin screenshot @ exoplatform


Here's the most direct way to get your work merged into the project.

  1. Fork the project
  2. Clone down your fork
  3. Create a feature branch
  4. Hack away and add tests, not necessarily in that order
  5. Make sure everything still passes by running tests
  6. If necessary, rebase your commits into logical chunks without errors
  7. Push the branch up to your fork
  8. Send a pull request for your branch

In the news


Statusdashboard is provided under Apache Software Licence 2.0.