Skip to content

ukasiu/whiskerboard

 
 

Repository files navigation

Whiskerboard

Whiskerboard is a status board for websites, services and APIs, like Amazon's AWS status page.

It is heavily based on Stashboard. Unlike Stashboard, it uses vanilla Django, so you aren't stuck using Google App Engine.

Have a look at the demo: http://status.lolnet.org/.

Quick start guide

It's quick to get a status board up and running.

$ pip install -r requirements.txt

You might need to install pip. If you haven't got a virtualenv, you'll need to run it as root too.

Back on the admin home page, click on "services" and add the things you want to report the status of (website, API etc). To change the status of a service add an event for it.

Configuration

The configuration files are located in the setting directory. You now need to configure your application. To do so, you can copy the local.py.dist file to local.py, or create a production.py file, depending on what you are doing (development versus production)::

$ cp settings/local.py{.dist,}

and of course edit it with your own settings.

  • DATABASES:
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'whiskerboard',
        'USER': 'whiskerboard',
        'PASSWORD': 'supersekritpassword',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}
  • TIME_ZONE

TIME_ZONE = 'Etc/UTC'

  • ADMINS
ADMINS = (
    ('Your Name', 'your_email@example.com'),
)

First run

On the first run, you need to synchronize the database and run the migrations::

$ python manage.py syncdb
$ python manage.py migrate

Adding services checks

Whiskerboard wasn't originally made to check the availability of the services, but it now supports a way to do so, by using celery checks. If you need it, you'll need to:

  • Install celery and django-celery to your virtual environment: pip install celery django-celery
  • Add djcelery to the INSTALLED_APPS list in your settings;
  • add a connection_string value to your services; it should be of the form protocol://host:port (protocol can be ping, http or https for now);
  • run celeryd (with python manage.py celeryd) in the background;
  • run the check_status task periodically, when you want to check that the services are still up.

Here is the line to put in your crontab (crontab -e) if you want to check things hourly::

@hourly /path/to/venv/bin/python public/manage.py check_status

About

Stashboard, now with less vendor lock-in.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 76.1%
  • CSS 23.9%