| #!/bin/bash |
| set -x |
| |
| cd |
| |
| # Install all the system level dependencies. |
| sudo apt-get install --assume-yes monit nginx collectd make |
| |
| # Vars to use with 'install'. |
| PARAMS="-D --verbose --backup=none --group=default --owner=default --preserve-timestamps -T" |
| ROOT_PARAMS="-D --verbose --backup=none --group=root --owner=root --preserve-timestamps -T" |
| EXE_FILE="--mode=755" |
| CONFIG_FILE="--mode=666" |
| MONIT_CONFIG_FILE="--mode=600" |
| |
| # Install Go |
| if [ -d go ]; then |
| echo Go already installed. |
| else |
| wget https://storage.googleapis.com/golang/go1.3.3.linux-amd64.tar.gz |
| tar -xzf go1.3.3.linux-amd64.tar.gz |
| fi |
| |
| mkdir=$HOME/golib |
| export GOROOT=$HOME/go |
| export GOPATH=$HOME/golib |
| export PATH=$PATH:$GOROOT/bin |
| |
| # Install Node |
| NODE_VERSION="node-v0.10.33-linux-x64" |
| if [ -d ${NODE_VERSION} ]; then |
| echo Node already installed. |
| else |
| wget http://nodejs.org/dist/v0.10.33/${NODE_VERSION}.tar.gz |
| tar xzf ${NODE_VERSION}.tar.gz |
| fi |
| |
| export PATH=$PATH:$(pwd)/${NODE_VERSION}/bin |
| |
| # Build applications |
| go get -u skia.googlesource.com/buildbot.git/monitoring/go/alertserver |
| |
| # Install InfluxDB. |
| wget http://s3.amazonaws.com/influxdb/influxdb_latest_amd64.deb |
| sudo dpkg -i influxdb_latest_amd64.deb |
| |
| # Install pull. |
| # Temporary step to bootstrap monitoring using Skia Push. |
| gsutil cp gs://skia-push/debs/pull/pull:jcgregorio@jcgregorio.cnc.corp.google.com:2014-12-15T14:12:52Z:6152bc3bcdaa54989c957809e77bed282c35676b.deb pull.deb |
| sudo dpkg -i pull.deb |
| |
| # Install Grafana. |
| cd |
| sudo rm -rf grafana |
| GRAFANA=grafana-1.8.1 |
| wget http://grafanarel.s3.amazonaws.com/${GRAFANA}.tar.gz |
| tar -xzf ${GRAFANA}.tar.gz |
| rm ${GRAFANA}.tar.gz |
| mv $GRAFANA grafana |
| |
| # Build AlertServer. |
| cd $HOME/golib/src/skia.googlesource.com/buildbot.git/monitoring |
| make alertserver |
| |
| # Add the nginx configuration files. |
| cd ~/buildbot/compute_engine_scripts/monitoring/ |
| sudo rm -f /etc/nginx/sites-enabled/default |
| sudo cp monitor_nginx /etc/nginx/sites-available/monitor |
| sudo rm -f /etc/nginx/sites-enabled/monitor |
| sudo ln -s /etc/nginx/sites-available/monitor /etc/nginx/sites-enabled/monitor |
| sudo cp alerts_nginx /etc/nginx/sites-available/alerts |
| sudo rm -f /etc/nginx/sites-enabled/alerts |
| sudo ln -s /etc/nginx/sites-available/alerts /etc/nginx/sites-enabled/alerts |
| |
| # Download the SSL secrets from the metadata store. |
| CURL_CMD='curl -H "Metadata-Flavor: Google"' |
| META_PROJ_URL='http://metadata/computeMetadata/v1/project/attributes' |
| |
| sudo mkdir -p /etc/nginx/ssl/ |
| sudo sh <<CURL_SCRIPT |
| $CURL_CMD $META_PROJ_URL/skiamonitor-com-key -o /etc/nginx/ssl/skiamonitor_com.key |
| $CURL_CMD $META_PROJ_URL/skiamonitor-com-pem -o /etc/nginx/ssl/skiamonitor_com.pem |
| $CURL_CMD $META_PROJ_URL/skiaalerts-com-key -o /etc/nginx/ssl/skiaalerts_com.key |
| $CURL_CMD $META_PROJ_URL/skiaalerts-com-pem -o /etc/nginx/ssl/skiaalerts_com.pem |
| CURL_SCRIPT |
| sudo chmod 700 /etc/nginx/ssl |
| sudo sh -c "chmod 600 /etc/nginx/ssl/*" |
| |
| # Create the directory for www logs if necessary. |
| mkdir -p /mnt/pd0/wwwlogs |
| |
| # Create the alertserver scratch directory if necessary. |
| mkdir -p /mnt/pd0/alertserver_scratch |
| |
| # Now that the default installs are in place, overwrite the installs with our |
| # custom config files. |
| cd ~/buildbot/compute_engine_scripts/monitoring/ |
| sudo install $PARAMS $CONFIG_FILE influxdb-config.toml /opt/influxdb/shared/config.toml |
| sudo install $PARAMS $CONFIG_FILE bashrc /home/default/.bashrc |
| sudo install $PARAMS $CONFIG_FILE grafana-config.js /home/default/grafana/config.js |
| sudo install $ROOT_PARAMS $CONFIG_FILE monitoring_monit /etc/monit/conf.d/monitoring |
| sudo install $ROOT_PARAMS $MONIT_CONFIG_FILE monitrc /etc/monit/monitrc |
| sudo install $ROOT_PARAMS $EXE_FILE alertserver_init /etc/init.d/alertserver |
| sudo install $ROOT_PARAMS $CONFIG_FILE collectd /etc/collectd/collectd.conf |
| |
| # Confirm that monit is happy. |
| sudo monit -t |
| sudo monit reload |
| |
| sudo /etc/init.d/influxdb restart |
| sudo /etc/init.d/collectd restart |
| sudo /etc/init.d/nginx restart |
| sudo /etc/init.d/alertserver restart |