Skip to content

Instantly share code, notes, and snippets.

@srgrn
Created August 27, 2015 19:21
Show Gist options
  • Select an option

  • Save srgrn/db199e863f5e2ccd0c45 to your computer and use it in GitHub Desktop.

Select an option

Save srgrn/db199e863f5e2ccd0c45 to your computer and use it in GitHub Desktop.
# set enviroment
sudo chown `id -u` /etc/environment
cat <<EOT > /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
LANG=en_US.UTF-8
LANGUAGE=en_US.UTF-8
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
EOT
sudo apt-get update
sudo apt-get upgrade -y
# install python
sudo apt-get install -y git python-cairo gcc-multilib g++-multilib libffi-dev libffi6 libffi6-dbg python-crypto python-mox3 python-pil python-ply libssl-dev zlib1g-dev libbz2-dev libexpat1-dev libbluetooth-dev libgdbm-dev dpkg-dev quilt autotools-dev libreadline-dev libtinfo-dev libncursesw5-dev tk-dev blt-dev libssl-dev zlib1g-dev libbz2-dev libexpat1-dev libbluetooth-dev libsqlite3-dev libgpm2 mime-support netbase net-tools bzip2
wget https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tgz
tar xfz Python-2.7.10.tgz
cd Python-2.7.10/
./configure
make
sudo make install
wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
sudo python get-pip.py
# install graphite
cd /usr/local/src
sudo git clone https://github.com/graphite-project/graphite-web.git
sudo git clone https://github.com/graphite-project/carbon.git
sudo pip install -r /usr/local/src/graphite-web/requirements.txt
cd /usr/local/src/carbon/
sudo python setup.py install
cd /usr/local/src/graphite-web/
sudo python setup.py install
# install nginx and uwsgi
sudo apt-get install nginx
sudo pip install uwsgi
sudo touch /etc/init/uwsgi.conf
sudo chown `id -u` /etc/init/uwsgi.conf
cat <<EOT > /etc/init/uwsgi.conf
# Emperor uWSGI script
description "uWSGI Emperor"
start on runlevel [2345]
stop on runlevel [06]
pre-start script
mkdir -p /var/log/uwsgi
end script
respawn
exec uwsgi --master --die-on-term --emperor /etc/uwsgi/apps-enabled --logto /var/log/uwsgi/emperor.log
EOT
sudo chown root /etc/init/uwsgi.conf
sudo mkdir -p /etc/uwsgi/apps-enabled
sudo mkdir -p /etc/uwsgi/apps-available
sudo touch /etc/uwsgi/apps-available/graphite.ini
sudo chown `id -u` /etc/uwsgi/apps-available/graphite.ini
cat <<EOT > /etc/uwsgi/apps-available/graphite.ini
[uwsgi]
processes = 2
chmod-socket = 664
socket = /opt/graphite/uwsgi.sock
http = 0.0.0.0:8080
http-to = /opt/graphite/uwsgi.sock
gid = www-data
uid = www-data
chdir = /opt/graphite/webapp
mount = /graphite=graphite/wsgi.py
EOT
sudo ln -s /etc/uwsgi/apps-available/graphite.ini /etc/uwsgi/apps-enables/graphite.ini
sudo chown root /etc/uwsgi/apps-available/graphite.ini
sudo touch /etc/nginx/apps-available/graphite
sudo chown `id -u` /etc/nginx/apps-available/graphite
cat <<EOT > /etc/nginx/apps-available/graphite
upstream graphite {
server unix:///opt/graphite/uwsgi.sock;
}
server {
server_name rumble-monitor.eastus.cloudapp.azure.com;
access_log /var/log/nginx/graphite-access.log;
error_log /var/log/nginx/graphite-error.log;
charset utf-8;
location /static {
alias /opt/graphite/static;
}
location /graphite {
uwsgi_pass graphite;
include uwsgi_params;
}
}
EOT
sudo chown root /etc/nginx/apps-available/graphite
sudo ln -s /etc/nginx/apps-available/graphite /etc/nginx/apps-enabled/graphite
sudo touch /etc/uwsgi
sudo chown `id -u` /etc/init/carbon-cache.conf
sudo service nginx restart
sudo service uwsgi start
# setting graphite and carbon
sudo cp /opt/graphite/conf/storage-schemas.conf.example /opt/graphite/conf/storage-schemas.conf
sudo cp /opt/graphite/conf/storage-aggregation.conf.example /opt/graphite/conf/storage-aggregation.conf
sudo cp /opt/graphite/conf/carbon.conf.example /opt/graphite/conf/carbon.conf
sudo touch /etc/init/carbon-cache.conf
sudo chown `id -u` /etc/init/carbon-cache.conf
cat <<EOT > /etc/init/carbon-cache.conf
# carbon-cache-a upstart job
#
# Daniel Beckham
# @dbeckham
# https://github.com/dbeckham
description "Graphite carbon-cache-a instance."
author "Puppet"
start on runlevel [2345]
stop on runlevel [016]
# GRAPHITE_ROOT is required by the Twisted plugin
emv GRAPHITE_ROOT=/opt/graphite
env PYTHONPATH=/opt/graphite/lib
pre-start script
mkdir -p \$GRAPHITE_ROOT/storage/log/carbon-cache/carbon-cache-a
end script
script
exec twistd \
--nodaemon \
--reactor=epoll \
--no_save \
carbon-cache \
--config \$GRAPHITE_ROOT/conf/carbon.conf \
2>&1 >> \$GRAPHITE_ROOT/storage/log/carbon-cache/carbon-cache-a/console.log
end script
EOT
sudo chown root /etc/init/carbon-cache.conf
# setting up graphite web
sudo chown `id -u` /opt/graphite/webapp/graphite
SECRET=`strings /dev/urandom | grep -o '[[:alnum:]]' | head -n 100 | tr -d '\n'; echo`
cat <<EOT > /opt/graphite/webapp/graphite/local_settings.py
URL_PREFIX = '/graphite'
SECRET_KEY = '${SECRET}'
EOT
sudo chown -R www-data:www-data /opt/graphite/
cd /opt/graphite/webapp
sudo -u www-data PYTHONPATH=/opt/graphite/webapp django-admin.py collectstatic --noinput --settings=graphite.settings
sudo -u www-data PYTHONPATH=/opt/graphite/webapp django-admin.py syncdb --settings=graphite.settings
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment