Status Dashboard
Status Dashboard is status page for your configured services or applications.
Demo:
- @ Heroku demo: http://statusdashboard-node.herokuapp.com
- @ Nodester demo: http://statusdashboard.nodester.com
- @ No.de demo: http://statusdashboard.no.de
Screenshots



Installation
- npm install statusdashboard or
- npm install git+https://github.com/iobazoud/statusdashboard#master
Optionally, you can install as a global package
Roadmap
- 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);
``
Code
dashboard.api.addService(serviceObject)
Add a new service to be checked
dashboard.api.removeService(ServiceName)
Remove a service to be checked
dashboard.api.startChecking
Start the scheduled checks. Automatically is started by default when instanciating dashboard
dashboard.api.stopChecking
Stop the scheduled checks
dashboard.api.getStatus()
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
Service
Daemon init script for node.js: https://gist.github.com/1123553
Plugins
Some plugins are available out-of-the-box:
- Console
- IRC bot
- History, save service state in Redis (Thanks to sreeix initial pull request) and graph it!


REST API
- List services
$ curl http://127.0.0.1:8080/api/services {"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 http://127.0.0.1:8080/api/services/couchdb {"name":"couchdb","label":"Couchdb server @ local","status":"up","statusCode":200,"message":""}
- Retrieve a summary
$ curl http://127.0.0.1:8080/api/summarize {"up":4,"critical":0,"down":1,"unknown":1}
- Version of application
$ curl -iX GET http://127.0.0.1:8080/api/version {"commit":"641b97cbcfdc53b1b2b825d588afe08e412471d4","author":"obazoud","committer":"obazoud","date":"Fri, 12 Aug 2011 10:15:27 GMT"}
- And plugin can contribute to statusdashboard REST API
$ curl http://127.0.0.1:8080/api/history/service/couchdb ["{\"time\":1310024374699,\"status\":\"up\",\"message\":\"\",\"code\":200}","{\"time\":1310024379591,\"status\":\"up\",\"message\":\"\",\"code\":200}", ...]
Early adopters



- IRC Plugin screenshot @ exoplatform

In the news
- IT Wars: StatusDashboard monitoring avec Node.js
- William Durand blog: Services Status Dashboard