Add scripts to create myops-getqueryview:
[myops.git] / web / setup.sh
diff --git a/web/setup.sh b/web/setup.sh
new file mode 100644 (file)
index 0000000..6dadeb4
--- /dev/null
@@ -0,0 +1,149 @@
+#/bin/bash
+
+if ! rpm -q bzr &> /dev/null ;  then 
+       echo "bzr is not installed"
+       exit    
+fi
+
+if [ ! -d graphite ] ; then 
+       # just picked latest revno on 6/27/2011 for a static config
+       echo "bzr branch -r revno:409 lp:graphite"
+       bzr branch -r revno:409 lp:graphite
+       cd graphite/
+       ./check-dependencies.py 
+fi
+
+if [ ! -d deps ] ; then
+       mkdir deps
+       pushd deps/
+
+       wget http://launchpad.net/graphite/1.0/0.9.8/+download/graphite-web-0.9.8.tar.gz
+       wget http://launchpad.net/graphite/1.0/0.9.8/+download/carbon-0.9.8.tar.gz
+       wget http://launchpad.net/graphite/1.0/0.9.8/+download/whisper-0.9.8.tar.gz
+       wget http://launchpad.net/txamqp/trunk/0.3/+download/python-txamqp_0.3.orig.tar.gz
+
+       tar -xvf python-txamqp_0.3.orig.tar.gz 
+       tar -zxvf whisper-0.9.8.tar.gz 
+       tar -zxvf carbon-0.9.8.tar.gz 
+       tar -zxvf graphite-web-0.9.8.tar.gz 
+
+       pushd python-txamqp-0.3/
+       python setup.py install
+       popd
+
+       pushd whisper-0.9.8
+       python setup.py install
+       popd
+
+       pushd carbon-0.9.8
+       python setup.py install
+       popd
+
+       pushd graphite-web-0.9.8
+       python setup.py install
+       cp examples/example-graphite-vhost.conf /etc/httpd/conf.d/graphite-vhost.conf
+
+       sed -i -e 's|WSGIScriptAlias / /opt/graphite/conf/graphite.wsgi|WSGIScriptAlias /graphite /opt/graphite/conf/graphite.wsgi|g' /etc/httpd/conf.d/graphite-vhost.conf
+       echo "WSGISocketPrefix /var/run/" >> /etc/httpd/conf.d/graphite-vhost.conf
+       echo "RedirectMatch ^/graphite$ /graphite/" >> /etc/httpd/conf.d/graphite-vhost.conf
+
+       # move /opt/graphite/webapp refs to /var/www/html
+       ln -s /opt/graphite/webapp/content/ /var/www/html/
+       ln -s /opt/graphite/webapp/graphite/ /var/www/html/
+       ln -s /opt/graphite/webapp/graphite_web-0.9.8-py2.6.egg-info /var/www/html/
+       sed -i -e 's|DocumentRoot ".*|DocumentRoot "/var/www/html"|g' /etc/httpd/conf.d/graphite-vhost.conf
+       sed -i -e 's|Alias /content/ .*|Alias /content/ /var/www/html/content/|g' /etc/httpd/conf.d/graphite-vhost.conf
+       cp /opt/graphite/conf/graphite.wsgi.example /opt/graphite/conf/graphite.wsgi
+       cp /opt/graphite/conf/carbon.conf.example /opt/graphite/conf/carbon.conf
+       cp /usr/share/myops/web/view/storage-schemas.conf /opt/graphite/conf/
+
+       popd
+
+       popd # deps
+       ./check-dependencies.py 
+
+fi
+
+
+# NOTE: TEMP hack for testing...
+sed -i -e 's/2003/3003/g' -e 's/2004/3004/g' -e 's/7002/6002/g' /opt/graphite/conf/carbon.conf
+sed -i -e 's/2003/3003/g' /usr/bin/sar2graphite.py
+sed -i -e 's/2003/3003/g' /usr/share/myops/web/collect/server/*.py
+
+
+# setup db for graphite application
+cd /opt/graphite/webapp/graphite
+/usr/bin/yes "no" | python manage.py syncdb
+
+# start carbon cache
+cd /opt/graphite/bin
+chown -R apache.apache  /opt/graphite/storage/
+./carbon-cache.py start
+
+# restart on reboot
+if ! grep carbon-cache /etc/rc.local ; then
+
+       cat <<EOF >> /etc/rc.local
+cd /opt/graphite/bin
+./carbon-cache.py start
+EOF
+
+fi
+
+
+export HOST=`hostname`
+sed -i -e 's/HOSTNAME/'$HOST'/g' /var/www/html/PlanetLabConf/sysstat.cron
+sed -i -e 's/HOSTNAME/'$HOST'/g' /etc/cron.d/sysstat.cron
+sed -i -e 's/HOSTNAME/'$HOST'/g' /usr/share/myops/web/collect/server/load-graphite.py
+sed -i -e 's/HOSTNAME/'$HOST'/g' /var/www/html/view/urllist.txt
+sed -i -e 's/HOSTNAME/'$HOST'/g' /etc/cron.hourly/load_all_couchdb.sh
+
+# QUERY/COUCHAPP
+
+wget http://python-distribute.org/distribute_setup.py
+python distribute_setup.py
+easy_install pip
+
+#OMFG, couchapp install requires gcc...
+yum groupinstall -y Development\ Tools
+# for ONE .c file!
+
+pip install couchapp
+
+export IP=`ip addr show eth0 | grep -E "eth0$" | tr '/' ' ' | awk '{print $2}'`
+sed -i -e 's/;bind_address = 127.0.0.1/bind_address = '$IP'/g' /etc/couchdb/local.ini
+export PASSWORD=makethisrandom1
+sed -i -e 's/;admin = .*/admin = '$PASSWORD'/g' /etc/couchdb/local.ini
+
+service couchdb restart
+chkconfig couchdb on
+
+sleep 10
+pushd /usr/share/myops/web/query
+echo "couchapp push . http://admin:$PASSWORD@$HOST:5984/myops"
+couchapp push . http://admin:$PASSWORD@$HOST:5984/myops
+
+# COLLECT; probably need a better way to set IPADDR...
+sed -i -e 's/IPADDR/'$IP'/g' /usr/share/myops/web/collect/client/collect.sh
+sed -i -e 's/IPADDR/'$IP'/g' /usr/share/myops/web/collect/client/upload.sh
+
+if [ ! -f /etc/httpd/conf.d/php.conf ] ; then
+       # enable php scripts
+       cp /usr/share/myops/web/collect/server/php.conf /etc/httpd/conf.d/php.conf
+fi
+
+mkdir -p /var/www/html/uploadlogs/raw
+chown -R apache.apache /var/www/html/uploadlogs
+
+sed -i -e 's/IPADDR/'$IP'/g' /usr/share/myops/web/collect/server/load_couch.py
+
+
+chkconfig crond on
+service crond start
+
+chkconfig httpd on
+service httpd start
+
+# NOTE: there are other logging servers...  :-/
+chkconfig sysklogd on
+service sysklogd start