Status Dashboard
Status Dashboard is status page for your configured services or applications.
Demo:
- @ Nodester demo: http://statusdashboard.nodester.com
- @ No.de demo: http://statusdashboard.no.de
Screenshots
Dependencies
- See package.json
- run the following command to install the dependencies
$ npm install
Roadmap
- Improve UI: scrollbars, filters, check type column, ...
- Add network services like SMTP, POP3, ...
- Improve REST API to get / push data ...
How To Use
- git clone git@github.com:obazoud/statusdashboard.git or fork it
- node server.js
Add your entry in settings.js.
settings['xxx'] = { ... };
- export APP_ENV=xxx
- node server.js
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
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