#!/bin/bash # node.js using PPA (for statsd) sudo apt-get install python-software-properties sudo apt-add-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs npm # Install git to get statsd sudo apt-get install git # System level dependencies for Graphite sudo apt-get install memcached python-dev python-pip sqlite3 libcairo2 \ libcairo2-dev python-cairo pkg-config # Get latest pip sudo pip install --upgrade pip # Install carbon and graphite deps cat >> /tmp/graphite_reqs.txt << EOF django==1.3 python-memcached django-tagging==0.3.1 twisted whisper==0.9.9 carbon==0.9.9 graphite-web==0.9.9 EOF sudo pip install -r /tmp/graphite_reqs.txt # # Configure carbon # cd /opt/graphite/conf/ sudo cp carbon.conf.example carbon.conf # Create storage schema and copy it over # Using the sample as provided in the statsd README # https://github.com/etsy/statsd#graphite-schema cat >> /tmp/storage-schemas.conf << EOF # Schema definitions for Whisper files. Entries are scanned in order, # and first match wins. This file is scanned for changes every 60 seconds. # # [name] # pattern = regex # retentions = timePerPoint:timeToStore, timePerPoint:timeToStore, ... [stats] priority = 110 pattern = ^stats\..* retentions = 10s:6h,1m:7d,10m:1y EOF sudo cp /tmp/storage-schemas.conf storage-schemas.conf # Make sure log dir exists for webapp sudo mkdir -p /opt/graphite/storage/log/webapp # Copy over the local settings file and initialize database cd /opt/graphite/webapp/graphite/ sudo cp local_settings.py.example local_settings.py sudo python manage.py syncdb # Follow the prompts, creating a superuser is optional # statsd cd /opt && sudo git clone git://github.com/etsy/statsd.git # StatsD configuration cat >> /tmp/localConfig.js << EOF { graphitePort: 2003 , graphiteHost: "127.0.0.1" , port: 8125 } EOF sudo cp /tmp/localConfig.js /opt/statsd/localConfig.js cat >> /etc/init/graphite.conf << EOF #!upstart description "Graphite Web Daemon" start on runlevel [2345] stop on runlevel [!2345] start on started carbon-cache stop on stopped carbon-cache console output env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin env PYTHONPATH=/opt/graphite/whisper exec /opt/graphite/bin/run-graphite-devel-server.py --libs=/opt/graphite/webapp/ /opt/graphite/ respawn EOF cat >> /etc/init/statsd.conf << EOF #!upstart # /etc/init/statsd.conf description "Statsd node.js server" author "statsd install gist" start on startup stop on shutdown script export HOME="/root" echo $$ > /var/run/statsd.pid exec sudo -u www-data /usr/bin/nodejs /opt/statsd/stats.js /opt/statsd/localConfig.js >> /var/log/statsd.log 2> /var/log/statsd.error.log end script pre-start script # Date format same as (new Date()).toISOString() for consistency echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/log/statsd.log end script pre-stop script rm /var/run/statsd.pid echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/log/statsd.log end script EOF