Services Status Dashboard

Today, I was looking for an Open Source alternative to Pingdom as I needed something free, customizable, and lightweight. I love the GitHub's Status Panel, unfortunately they didn't open source it.

Basically, this kind of application is simple. You just need a crawler, and few rules to know whether an application is alive or not. Additionally, you may want to store results in order to make graphs or to calculate uptime average, and so on. Before to write this kind of application myself, I tried to search existing projects on GitHub.

Good news! I found a really nice project: Status Dashboard created by Olivier Bazoud. This project is easy to configure, you can use provided plugins (Twitter, IRC bot, History, ...) or add your owns, and you can monitor various services (not only HTTP). If you don't want to use the beautiful interface, then you'll find a REST API.

Installation

Run npm install to setup the project and its dependencies, then add your own configuration in settings.js. Mine is:

// ...
settings['william'] = {
  services: [{
    name: 'williamdurand.fr',
    label: 'William DURAND (blog)',
    check: 'http',
    host: 'williamdurand.fr',
    port: '80',
    path: '/',
    headers: {
    'Host': 'williamdurand.fr'
    }
  }],
  plugins: {
    history: {
    enable: true,
    host: "127.0.0.1",
    port: 6379,
    namespace: "statusdashboard",
    options: {
    },
    client: true
    }
  }
};

Then, start the server:

node server.js

Check the server is running by browsing http://127.0.0.1:8080/ or by querying the API:

> curl http://127.0.0.1:8080/api/services
{"lastupdate":"Mon, 16 Jan 2012 13:29:11 GMT","services":[{"name":"williamdurand.fr","label":"William DURAND (blog)","status":"up","statusCode":200,"message":""}],"summarize":{"lastupdate":"Mon, 16 Jan 2012 13:29:11 GMT","up":1,"critical":0,"down":0,"unknown":0}}

The project is available at: https://github.com/obazoud/statusdashboard.

By the way, if you found a typo, please fork and edit this post. Thank you so much!
This post is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

If you like this post, or if you use one of my Open Source projects, don't hesitate to send me an email. Oh, and just in case, here is my Amazon Wish List. Thank you ♥