mirror of
https://github.com/wahyd4/tig-stack.git
synced 2026-08-09 05:06:03 +10:00
93 lines
3.3 KiB
Bash
93 lines
3.3 KiB
Bash
#!/bin/bash -e
|
|
|
|
: "${GF_PATHS_DATA:=/var/lib/grafana}"
|
|
: "${GF_PATHS_LOGS:=/var/log/grafana}"
|
|
: "${GF_PATHS_PLUGINS:=/var/lib/grafana/plugins}"
|
|
: "${GF_PATHS_PROVISIONING:=/etc/grafana/provisioning}"
|
|
|
|
chown -R grafana:grafana "$GF_PATHS_DATA" "$GF_PATHS_LOGS"
|
|
chown -R grafana:grafana /etc/grafana
|
|
|
|
# Install all available plugins
|
|
if [ "${GRAFANA_PLUGINS_ENABLED}" != "false" ]
|
|
then
|
|
GRAFANA_PLUGINS=`grafana-cli plugins list-remote | awk '{print $2}'| grep "-"`
|
|
for plugin in ${GRAFANA_PLUGINS};
|
|
do
|
|
if [ ! -d ${GF_PATHS_PLUGINS}/$plugin ]
|
|
then
|
|
grafana-cli plugins install $plugin || true;
|
|
else
|
|
echo "Plugin $plugin already installed"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# Start grafana with gosu
|
|
exec gosu grafana /usr/share/grafana/bin/grafana-server \
|
|
--homepath=/usr/share/grafana \
|
|
--config=/etc/grafana/grafana.ini \
|
|
cfg:default.paths.data="$GF_PATHS_DATA" \
|
|
cfg:default.paths.logs="$GF_PATHS_LOGS" \
|
|
cfg:default.paths.plugins="$GF_PATHS_PLUGINS" &
|
|
|
|
sleep 5
|
|
|
|
###############################################################
|
|
# Creating Default Data Source
|
|
|
|
# Set new Data Source name
|
|
INFLUXDB_DATA_SOURCE="Docker InfluxDB"
|
|
INFLUXDB_DATA_SOURCE_WEB=`echo ${INFLUXDB_DATA_SOURCE} | sed 's/ /%20/g'`
|
|
|
|
# Set information about grafana host
|
|
GRAFANA_URL=`hostname -i`
|
|
GRAFANA_PORT="3000"
|
|
GRAFANA_USER="admin"
|
|
GRAFANA_PASSWORD="admin"
|
|
|
|
# Check $INFLUXDB_DATA_SOURCE status
|
|
INFLUXDB_DATA_SOURCE_STATUS=`curl -s -L -i \
|
|
-H "Accept: application/json" \
|
|
-H "Content-Type: application/json" \
|
|
-X GET http://${GRAFANA_USER}:${GRAFANA_PASSWORD}@${GRAFANA_URL}:${GRAFANA_PORT}/api/datasources/name/${INFLUXDB_DATA_SOURCE_WEB} | head -1 | awk '{print $2}'`
|
|
|
|
#Debug Time!
|
|
curl -s -L -i \
|
|
-H "Accept: application/json" \
|
|
-H "Content-Type: application/json" \
|
|
-X GET http://${GRAFANA_USER}:${GRAFANA_PASSWORD}@${GRAFANA_URL}:${GRAFANA_PORT}/api/datasources/name/${INFLUXDB_DATA_SOURCE_WEB} >>$GF_PATHS_LOGS/grafana.log 2>>$GF_PATHS_LOGS/grafana.log
|
|
echo "http://${GRAFANA_USER}:${GRAFANA_PASSWORD}@${GRAFANA_URL}:${GRAFANA_PORT}/api/datasources/name/${INFLUXDB_DATA_SOURCE_WEB}" >> $GF_PATHS_LOGS/grafana.log
|
|
echo "INFLUXDB_DATA_SOURCE_STATUS: "$INFLUXDB_DATA_SOURCE_STATUS >> $GF_PATHS_LOGS/grafana.log
|
|
echo "GRAFANA_URL: "$GRAFANA_URL >> $GF_PATHS_LOGS/grafana.log
|
|
echo "GRAFANA_PORT: "$GRAFANA_PORT >> $GF_PATHS_LOGS/grafana.log
|
|
echo "GRAFANA_USER: "$GRAFANA_USER >> $GF_PATHS_LOGS/grafana.log
|
|
echo "GRAFANA_PASSWORD: "$GRAFANA_PASSWORD >> $GF_PATHS_LOGS/grafana.log
|
|
|
|
# Check if $INFLUXDB_DATA_SOURCE exists
|
|
if [ ${INFLUXDB_DATA_SOURCE_STATUS} != 200 ]
|
|
then
|
|
# If not exists, create one
|
|
echo "Data Source: '"${INFLUXDB_DATA_SOURCE}"' not found in Grafana configuration"
|
|
echo "Creating Data Source: '"$INFLUXDB_DATA_SOURCE"'"
|
|
curl -L -i \
|
|
-H "Accept: application/json" \
|
|
-H "Content-Type: application/json" \
|
|
-X POST -d '{
|
|
"name":"'"${INFLUXDB_DATA_SOURCE}"'",
|
|
"type":"influxdb",
|
|
"url":"http://influxdb:8086",
|
|
"access":"proxy",
|
|
"basicAuth":false,
|
|
"database":"telegraf",
|
|
"user":"grafana",
|
|
"password":"grafana"}
|
|
' \
|
|
http://${GRAFANA_USER}:${GRAFANA_PASSWORD}@${GRAFANA_URL}:${GRAFANA_PORT}/api/datasources
|
|
else
|
|
#Continue if it doesn't exists
|
|
echo "Data Source '"${INFLUXDB_DATA_SOURCE}"' already exists."
|
|
fi
|
|
|
|
tail -f $GF_PATHS_LOGS/grafana.log
|