blob: 0ea601bc8261b35290569488d2c5dfed57f032ba [file] [log] [blame]
#!/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