/graphite-statsd-ansible-vagrant

Provision a complete Graphite & StatsD install using Ansible and (optionally) Vagrant

MIT LicenseMIT

Graphite & StatsD with Ansible

NOTE: If you want an even more complete monitoring solution that includes Sentry, the error logging tool, take a look at Statserver

This playbook makes it really easy to setup Graphite and StatsD on a server (VPS or Dedicated). You can also optionally install it on a Virtual Machine using Vagrant so you can play around with it. It uses Ansible, a great configuration management tool written in Python, to automatically install the applications and all dependencies and configure everything to work optimally.

What gets installed:

  • PostgreSQL database
  • NginX webserver/reverse proxy
  • Python, Pip & VirtualEnv
  • NodeJS
  • Memcached
  • The 3 core Graphite components:
  • StatsD

Let's do this!

If you want to install Graphite on a VM using Vagrant, you first need to install Vagrant and a Virtual Machine provider of choice (VirtualBox is free and works out of the box with Vagrant).

You can configure your install by modifying the variables in the graphite.yml file before provisioning.

Then:

$ git clone https://github.com/DandyDev/graphite-statsd-ansible-vagrant
$ cd /path/to/graphite-statsd-ansible-vagrant
$ vagrant up

Different OSes

By default, the Vagrant box runs Ubuntu 12.04, but the playbook supports Debian 7 and CentOS 6.4 as well! To try those out, uncomment the appropriate lines in the Vagrantfile and comment out the Debian lines.

Using the playbook standalone

You can of course also use the playbook without Vagrant. In that case you must provide your own inventory file specifying the host on which to install Sentry. The playbook has been tested on Ubuntu 12.04, Debian 7 and CentOS 6.4. Other flavors of Linux might work as well.

Secret key

On production environments you will want to set the secret_key setting under the graphite namespace to a unique key that acts as a signing token. Generate a secret key for here

Superuser

To create a superuser, log in as root, or turn to root on your server, and issue the following command:

export PYTHONPATH=/opt/graphite/webapp/; /opt/graphite/bin/python /opt/graphite/bin/django-admin.py createsuperuser --settings=graphite.settings

Known issues / TODO

  • This hasn't been tested on other Providers than VirtualBox yet
  • On CentOS, the firewall is completely closed by default (at least on the box I tried it with). So you have to manually open the relevant port (80) using iptables, or if you're not concerned about security (because you're running it locally through Vagrant), you can always flush the firewall with iptables -F.

Contribute

If you have any suggestions, feel free to create an issue here on Github and/or fork this repo, make changes and submit a pull request!