6dadeb41ea1331e4efc46419013e925de2b638e2
[myops.git] / web / setup.sh
1 #/bin/bash
2
3 if ! rpm -q bzr &> /dev/null ;  then 
4         echo "bzr is not installed"
5         exit    
6 fi
7
8 if [ ! -d graphite ] ; then 
9         # just picked latest revno on 6/27/2011 for a static config
10         echo "bzr branch -r revno:409 lp:graphite"
11         bzr branch -r revno:409 lp:graphite
12         cd graphite/
13         ./check-dependencies.py 
14 fi
15
16 if [ ! -d deps ] ; then
17         mkdir deps
18         pushd deps/
19
20         wget http://launchpad.net/graphite/1.0/0.9.8/+download/graphite-web-0.9.8.tar.gz
21         wget http://launchpad.net/graphite/1.0/0.9.8/+download/carbon-0.9.8.tar.gz
22         wget http://launchpad.net/graphite/1.0/0.9.8/+download/whisper-0.9.8.tar.gz
23         wget http://launchpad.net/txamqp/trunk/0.3/+download/python-txamqp_0.3.orig.tar.gz
24
25         tar -xvf python-txamqp_0.3.orig.tar.gz 
26         tar -zxvf whisper-0.9.8.tar.gz 
27         tar -zxvf carbon-0.9.8.tar.gz 
28         tar -zxvf graphite-web-0.9.8.tar.gz 
29
30         pushd python-txamqp-0.3/
31         python setup.py install
32         popd
33
34         pushd whisper-0.9.8
35         python setup.py install
36         popd
37
38         pushd carbon-0.9.8
39         python setup.py install
40         popd
41
42         pushd graphite-web-0.9.8
43         python setup.py install
44         cp examples/example-graphite-vhost.conf /etc/httpd/conf.d/graphite-vhost.conf
45
46         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
47         echo "WSGISocketPrefix /var/run/" >> /etc/httpd/conf.d/graphite-vhost.conf
48         echo "RedirectMatch ^/graphite$ /graphite/" >> /etc/httpd/conf.d/graphite-vhost.conf
49
50         # move /opt/graphite/webapp refs to /var/www/html
51         ln -s /opt/graphite/webapp/content/ /var/www/html/
52         ln -s /opt/graphite/webapp/graphite/ /var/www/html/
53         ln -s /opt/graphite/webapp/graphite_web-0.9.8-py2.6.egg-info /var/www/html/
54         sed -i -e 's|DocumentRoot ".*|DocumentRoot "/var/www/html"|g' /etc/httpd/conf.d/graphite-vhost.conf
55         sed -i -e 's|Alias /content/ .*|Alias /content/ /var/www/html/content/|g' /etc/httpd/conf.d/graphite-vhost.conf
56         cp /opt/graphite/conf/graphite.wsgi.example /opt/graphite/conf/graphite.wsgi
57         cp /opt/graphite/conf/carbon.conf.example /opt/graphite/conf/carbon.conf
58         cp /usr/share/myops/web/view/storage-schemas.conf /opt/graphite/conf/
59
60         popd
61
62         popd # deps
63         ./check-dependencies.py 
64
65 fi
66
67
68 # NOTE: TEMP hack for testing...
69 sed -i -e 's/2003/3003/g' -e 's/2004/3004/g' -e 's/7002/6002/g' /opt/graphite/conf/carbon.conf
70 sed -i -e 's/2003/3003/g' /usr/bin/sar2graphite.py
71 sed -i -e 's/2003/3003/g' /usr/share/myops/web/collect/server/*.py
72
73
74 # setup db for graphite application
75 cd /opt/graphite/webapp/graphite
76 /usr/bin/yes "no" | python manage.py syncdb
77
78 # start carbon cache
79 cd /opt/graphite/bin
80 chown -R apache.apache  /opt/graphite/storage/
81 ./carbon-cache.py start
82
83 # restart on reboot
84 if ! grep carbon-cache /etc/rc.local ; then
85
86         cat <<EOF >> /etc/rc.local
87 cd /opt/graphite/bin
88 ./carbon-cache.py start
89 EOF
90
91 fi
92
93
94 export HOST=`hostname`
95 sed -i -e 's/HOSTNAME/'$HOST'/g' /var/www/html/PlanetLabConf/sysstat.cron
96 sed -i -e 's/HOSTNAME/'$HOST'/g' /etc/cron.d/sysstat.cron
97 sed -i -e 's/HOSTNAME/'$HOST'/g' /usr/share/myops/web/collect/server/load-graphite.py
98 sed -i -e 's/HOSTNAME/'$HOST'/g' /var/www/html/view/urllist.txt
99 sed -i -e 's/HOSTNAME/'$HOST'/g' /etc/cron.hourly/load_all_couchdb.sh
100
101 # QUERY/COUCHAPP
102
103 wget http://python-distribute.org/distribute_setup.py
104 python distribute_setup.py
105 easy_install pip
106
107 #OMFG, couchapp install requires gcc...
108 yum groupinstall -y Development\ Tools
109 # for ONE .c file!
110
111 pip install couchapp
112
113 export IP=`ip addr show eth0 | grep -E "eth0$" | tr '/' ' ' | awk '{print $2}'`
114 sed -i -e 's/;bind_address = 127.0.0.1/bind_address = '$IP'/g' /etc/couchdb/local.ini
115 export PASSWORD=makethisrandom1
116 sed -i -e 's/;admin = .*/admin = '$PASSWORD'/g' /etc/couchdb/local.ini
117
118 service couchdb restart
119 chkconfig couchdb on
120
121 sleep 10
122 pushd /usr/share/myops/web/query
123 echo "couchapp push . http://admin:$PASSWORD@$HOST:5984/myops"
124 couchapp push . http://admin:$PASSWORD@$HOST:5984/myops
125
126 # COLLECT; probably need a better way to set IPADDR...
127 sed -i -e 's/IPADDR/'$IP'/g' /usr/share/myops/web/collect/client/collect.sh
128 sed -i -e 's/IPADDR/'$IP'/g' /usr/share/myops/web/collect/client/upload.sh
129
130 if [ ! -f /etc/httpd/conf.d/php.conf ] ; then
131         # enable php scripts
132         cp /usr/share/myops/web/collect/server/php.conf /etc/httpd/conf.d/php.conf
133 fi
134
135 mkdir -p /var/www/html/uploadlogs/raw
136 chown -R apache.apache /var/www/html/uploadlogs
137
138 sed -i -e 's/IPADDR/'$IP'/g' /usr/share/myops/web/collect/server/load_couch.py
139
140
141 chkconfig crond on
142 service crond start
143
144 chkconfig httpd on
145 service httpd start
146
147 # NOTE: there are other logging servers...  :-/
148 chkconfig sysklogd on
149 service sysklogd start