Add grafana 2 setup to devstack monasca setup

Change-Id: I36cd2eec32e16b92f2a1fc746f05e5053552fae5
This commit is contained in:
Ryan Bak
2016-03-30 10:06:26 -06:00
committed by Roland Hochmuth
parent c34def5846
commit a4aa70a82d
4 changed files with 236 additions and 1 deletions

View File

@@ -0,0 +1,146 @@
#! /usr/bin/env bash
# chkconfig: 2345 80 05
# description: Grafana web server & backend
# processname: grafana
# config: /etc/grafana/grafana.ini
# pidfile: /var/run/grafana.pid
### BEGIN INIT INFO
# Provides: grafana
# Required-Start: $all
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start grafana at boot time
### END INIT INFO
# tested on
# 1. New lsb that define start-stop-daemon
# 3. Centos with initscripts package installed
PATH=/bin:/usr/bin:/sbin:/usr/sbin
NAME=grafana-server
DESC="Grafana Server"
DEFAULT=/etc/default/$NAME
GRAFANA_USER=grafana
GRAFANA_GROUP=grafana
GRAFANA_HOME=/usr/share/grafana
CONF_DIR=/etc/grafana
WORK_DIR=$GRAFANA_HOME
DATA_DIR=/var/lib/grafana
LOG_DIR=/var/log/grafana
CONF_FILE=$CONF_DIR/grafana.ini
MAX_OPEN_FILES=10000
PID_FILE=/var/run/$NAME.pid
DAEMON=/usr/sbin/$NAME
umask 0027
if [ `id -u` -ne 0 ]; then
echo "You need root privileges to run this script"
exit 4
fi
if [ ! -x $DAEMON ]; then
echo "Program not installed or not executable"
exit 5
fi
. /lib/lsb/init-functions
if [ -r /etc/default/rcS ]; then
. /etc/default/rcS
fi
# overwrite settings from default file
if [ -f "$DEFAULT" ]; then
. "$DEFAULT"
fi
DAEMON_OPTS="--pidfile=${PID_FILE} --config=${CONF_FILE} cfg:default.paths.data=${DATA_DIR} cfg:default.paths.logs=${LOG_DIR}"
case "$1" in
start)
log_daemon_msg "Starting $DESC"
pid=`pidofproc -p $PID_FILE grafana`
if [ -n "$pid" ] ; then
log_begin_msg "Already running."
log_end_msg 0
exit 0
fi
# Prepare environment
mkdir -p "$LOG_DIR" "$DATA_DIR" && chown "$GRAFANA_USER":"$GRAFANA_GROUP" "$LOG_DIR" "$DATA_DIR"
touch "$PID_FILE" && chown "$GRAFANA_USER":"$GRAFANA_GROUP" "$PID_FILE"
if [ -n "$MAX_OPEN_FILES" ]; then
ulimit -n $MAX_OPEN_FILES
fi
# Start Daemon
start-stop-daemon --start -b --chdir "$WORK_DIR" --user "$GRAFANA_USER" -c "$GRAFANA_USER" --pidfile "$PID_FILE" --exec $DAEMON -- $DAEMON_OPTS
return=$?
if [ $return -eq 0 ]
then
sleep 1
# check if pid file has been written two
if ! [[ -s $PID_FILE ]]; then
log_end_msg 1
exit 1
fi
i=0
timeout=10
# Wait for the process to be properly started before exiting
until { cat "$PID_FILE" | xargs kill -0; } >/dev/null 2>&1
do
sleep 1
i=$(($i + 1))
if [ $i -gt $timeout ]; then
log_end_msg 1
exit 1
fi
done
fi
log_end_msg $return
;;
stop)
log_daemon_msg "Stopping $DESC"
if [ -f "$PID_FILE" ]; then
start-stop-daemon --stop --pidfile "$PID_FILE" \
--user "$GRAFANA_USER" \
--retry=TERM/20/KILL/5 >/dev/null
if [ $? -eq 1 ]; then
log_progress_msg "$DESC is not running but pid file exists, cleaning up"
elif [ $? -eq 3 ]; then
PID="`cat $PID_FILE`"
log_failure_msg "Failed to stop $DESC (pid $PID)"
exit 1
fi
rm -f "$PID_FILE"
else
log_progress_msg "(not running)"
fi
log_end_msg 0
;;
status)
status_of_proc -p $PID_FILE grafana grafana && exit 0 || exit $?
;;
restart|force-reload)
if [ -f "$PID_FILE" ]; then
$0 stop
sleep 1
fi
$0 start
;;
*)
log_success_msg "Usage: $0 {start|stop|restart|force-reload|status}"
exit 3
;;
esac

View File

@@ -0,0 +1,2 @@
[auth.keystone]
enabled = true

View File

@@ -131,6 +131,8 @@ def main(argv):
""" Get token if needed and then call methods to add tenants, users and roles """ """ Get token if needed and then call methods to add tenants, users and roles """
users = [{'username': 'mini-mon', 'project': 'mini-mon', 'password': 'password', 'role': 'monasca-user'}, users = [{'username': 'mini-mon', 'project': 'mini-mon', 'password': 'password', 'role': 'monasca-user'},
{'username': 'monasca-agent', 'project': 'mini-mon', 'password': 'password', 'role': 'monasca-agent'}, {'username': 'monasca-agent', 'project': 'mini-mon', 'password': 'password', 'role': 'monasca-agent'},
{'username': 'mini-mon', 'project': 'mini-mon', 'password': 'password', 'role': 'admin'},
{'username': 'admin', 'project': 'admin', 'password': 'secretadmin', 'role': 'monasca-user'},
{'username': 'demo', 'project': 'demo', 'password': 'secretadmin', 'role': 'monasca-user'}] {'username': 'demo', 'project': 'demo', 'password': 'secretadmin', 'role': 'monasca-user'}]
service_host = argv[0] service_host = argv[0]

View File

@@ -170,6 +170,8 @@ function extra_monasca {
install_monasca_horizon_ui install_monasca_horizon_ui
install_monasca_grafana
fi fi
install_monasca_smoke_test install_monasca_smoke_test
@@ -228,6 +230,8 @@ function clean_monasca {
clean_monasca_horizon_ui clean_monasca_horizon_ui
clean_monasca_grafana
fi fi
clean_monasca_default_alarms clean_monasca_default_alarms
@@ -1636,6 +1640,16 @@ function install_monasca_horizon_ui {
sudo ln -sf "${MONASCA_BASE}"/monasca-ui/monitoring "${MONASCA_BASE}"/horizon/monitoring sudo ln -sf "${MONASCA_BASE}"/monasca-ui/monitoring "${MONASCA_BASE}"/horizon/monitoring
if [[ ${SERVICE_HOST} ]]; then
sudo sed -i "s#getattr(settings, 'GRAFANA_URL', None)#{'RegionOne': \"http:\/\/${SERVICE_HOST}:3000\", }#g" "${MONASCA_BASE}"/monasca-ui/monitoring/config/local_settings.py
else
sudo sed -i "s#getattr(settings, 'GRAFANA_URL', None)#{'RegionOne': 'http://localhost:3000', }#g" "${MONASCA_BASE}"/monasca-ui/monitoring/config/local_settings.py
fi
sudo python "${MONASCA_BASE}"/horizon/manage.py collectstatic --noinput sudo python "${MONASCA_BASE}"/horizon/manage.py collectstatic --noinput
sudo python "${MONASCA_BASE}"/horizon/manage.py compress --force sudo python "${MONASCA_BASE}"/horizon/manage.py compress --force
@@ -1652,7 +1666,78 @@ function clean_monasca_horizon_ui {
sudo rm -f "${MONASCA_BASE}"/horizon/monitoring sudo rm -f "${MONASCA_BASE}"/horizon/monitoring
sudo rm -rf "${MONASCA_BASE}"/monasca-ui sudo rm -rf "${MONASCA_BASE}"/monasca-ui
}
function install_monasca_grafana {
echo_summary "Install Grafana"
sudo apt-get install -y wget nodejs nodejs-legacy npm
cd "${MONASCA_BASE}"
wget https://storage.googleapis.com/golang/go1.5.2.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.5.2.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
git clone https://github.com/twc-openstack/grafana-plugins.git
cd grafana-plugins
git checkout v2.6.0
cd "${MONASCA_BASE}"
git clone https://github.com/twc-openstack/grafana.git
cd grafana
git checkout v2.6.0-keystone
cd "${MONASCA_BASE}"
mkdir grafana-build
cd grafana-build
export GOPATH=`pwd`
go get -d github.com/grafana/grafana/...
cd $GOPATH/src/github.com/grafana
sudo rm -r grafana
cp -r "${MONASCA_BASE}"/grafana .
cd grafana
cp -r "${MONASCA_BASE}"/grafana-plugins/datasources/monasca ./public/app/plugins/datasource/
cp "${MONASCA_BASE}"/monasca-ui/grafana-dashboards/* ./public/dashboards/
go run build.go setup
$GOPATH/bin/godep restore
go run build.go build
npm config set unsafe-perm true
sudo npm install
sudo npm install -g grunt-cli
grunt --force
cd "${MONASCA_BASE}"
sudo rm -r grafana-plugins
sudo rm -r grafana
rm go1.5.2.linux-amd64.tar.gz
sudo useradd grafana
sudo mkdir /etc/grafana
sudo mkdir /var/lib/grafana
sudo mkdir /var/log/grafana
sudo chown -R grafana:grafana /var/lib/grafana /var/log/grafana
sudo cp -f "${MONASCA_BASE}"/monasca-api/devstack/files/grafana/grafana.ini /etc/grafana/grafana.ini
sudo cp -f "${MONASCA_BASE}"/monasca-api/devstack/files/grafana/grafana-server /etc/init.d/grafana-server
sudo sed -i "s#/usr/sbin#"${MONASCA_BASE}"/grafana-build/src/github.com/grafana/grafana/bin#g" /etc/init.d/grafana-server
sudo sed -i "s#/usr/share#"${MONASCA_BASE}"/grafana-build/src/github.com/grafana#g" /etc/init.d/grafana-server
sudo service grafana-server start
}
function clean_monasca_grafana {
sudo rm -f "${MONASCA_BASE}"/grafana-build
sudo rm /etc/init.d/grafana-server
sudo rm -r /etc/grafana
sudo rm -r /var/lib/grafana
sudo rm -r /var/log/grafana
} }