From 4dff681899d1f609f9e1bbdd171adb00fe6c0fc6 Mon Sep 17 00:00:00 2001 From: Gordon Kelly Date: Sat, 16 Dec 2017 12:11:40 +0000 Subject: docker: add barometer/grafana grafana Change-Id: I6352b908ee1fc0819e19f786d73897fd6db841e6 Signed-off-by: gordonkelly --- docker/grafana/Dockerfile | 5 +++ docker/grafana/configure_grafana.sh | 27 ++++++++++++++ docker/grafana/run.sh | 70 +++++++++++++++++++++++++++++++++++++ 3 files changed, 102 insertions(+) create mode 100644 docker/grafana/Dockerfile create mode 100755 docker/grafana/configure_grafana.sh create mode 100644 docker/grafana/run.sh (limited to 'docker') diff --git a/docker/grafana/Dockerfile b/docker/grafana/Dockerfile new file mode 100644 index 00000000..e459531b --- /dev/null +++ b/docker/grafana/Dockerfile @@ -0,0 +1,5 @@ +FROM grafana/grafana:latest + +COPY ./configure_grafana.sh / +COPY ./run.sh / +RUN chmod 755 run.sh configure_grafana.sh diff --git a/docker/grafana/configure_grafana.sh b/docker/grafana/configure_grafana.sh new file mode 100755 index 00000000..0b185297 --- /dev/null +++ b/docker/grafana/configure_grafana.sh @@ -0,0 +1,27 @@ +# Copyright 2017 OPNFV +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +sleep 20 #allow 20 seconds for grafana complete initilization + +curl -u admin:admin -X POST -H 'content-type: application/json'\ + http://127.0.0.1:3000/api/datasources -d \ + '{"name":"collectd","type":"influxdb","url":"http://localhost:8086","access":"proxy","isDefault":true,"database":"collectd","user":"admin","password":"admin","basicAuth":false}' + +FILES=/var/lib/grafana/dashboards/*.json +for f in $FILES +do + curl -u admin:admin -X POST -H 'content-type: application/json' \ + http://127.0.0.1:3000/api/dashboards/db -d @$f ; +done diff --git a/docker/grafana/run.sh b/docker/grafana/run.sh new file mode 100644 index 00000000..5b9a8191 --- /dev/null +++ b/docker/grafana/run.sh @@ -0,0 +1,70 @@ +#!/bin/bash -e +# Copyright 2014-2016 Torkel Ödegaard, Raintank Inc. +# Modifications Copyright 2017 OPNFV +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +: "${GF_PATHS_CONFIG:=/etc/grafana/grafana.ini}" +: "${GF_PATHS_DATA:=/var/lib/grafana}" +: "${GF_PATHS_LOGS:=/var/log/grafana}" +: "${GF_PATHS_PLUGINS:=/var/lib/grafana/plugins}" + +chown -R grafana:grafana "$GF_PATHS_DATA" "$GF_PATHS_LOGS" +chown -R grafana:grafana /etc/grafana + + +if [ ! -z ${GF_AWS_PROFILES+x} ]; then + mkdir -p ~grafana/.aws/ + touch ~grafana/.aws/credentials + + for profile in ${GF_AWS_PROFILES}; do + access_key_varname="GF_AWS_${profile}_ACCESS_KEY_ID" + secret_key_varname="GF_AWS_${profile}_SECRET_ACCESS_KEY" + region_varname="GF_AWS_${profile}_REGION" + + if [ ! -z "${!access_key_varname}" -a ! -z "${!secret_key_varname}" ]; then + echo "[${profile}]" >> ~grafana/.aws/credentials + echo "aws_access_key_id = ${!access_key_varname}" >> ~grafana/.aws/credentials + echo "aws_secret_access_key = ${!secret_key_varname}" >> ~grafana/.aws/credentials + if [ ! -z "${!region_varname}" ]; then + echo "region = ${!region_varname}" >> ~grafana/.aws/credentials + fi + fi + done + + chown grafana:grafana -R ~grafana/.aws + chmod 600 ~grafana/.aws/credentials +fi + +if [ ! -z "${GF_INSTALL_PLUGINS}" ]; then + OLDIFS=$IFS + IFS=',' + for plugin in ${GF_INSTALL_PLUGINS}; do + IFS=$OLDIFS + gosu grafana grafana-cli --pluginsDir "${GF_PATHS_PLUGINS}" plugins install ${plugin} + done +fi + +/bin/bash ./configure_grafana.sh & + +exec gosu grafana /usr/sbin/grafana-server \ + --homepath=/usr/share/grafana \ + --config="$GF_PATHS_CONFIG" \ + cfg:default.log.mode="console" \ + cfg:default.paths.data="$GF_PATHS_DATA" \ + cfg:default.paths.logs="$GF_PATHS_LOGS" \ + cfg:default.paths.plugins="$GF_PATHS_PLUGINS" \ + "$@" + + + -- cgit 1.2.3-korg