111 lines
2.6 KiB
Bash
Executable File
111 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#
|
|
# (Re)starts the local metrics
|
|
#
|
|
set -e
|
|
|
|
cd "$(dirname "$0")"
|
|
|
|
# Stop if already running
|
|
./stop.sh
|
|
|
|
randomPassword() {
|
|
declare p=
|
|
for _ in $(seq 0 16); do
|
|
p+="$((RANDOM % 10))"
|
|
done
|
|
echo $p
|
|
}
|
|
|
|
mkdir -p lib
|
|
if [[ ! -f lib/config.sh ]]; then
|
|
cat > lib/config.sh <<EOF
|
|
INFLUXDB_ADMIN_USER=admin
|
|
INFLUXDB_ADMIN_PASSWORD=$(randomPassword)
|
|
INFLUXDB_WRITE_USER=write
|
|
INFLUXDB_WRITE_PASSWORD=$(randomPassword)
|
|
INFLUXDB_READ_USER=read
|
|
INFLUXDB_READ_PASSWORD=read
|
|
EOF
|
|
fi
|
|
# shellcheck source=/dev/null
|
|
source lib/config.sh
|
|
|
|
if [[ ! -f lib/grafana-provisioning ]]; then
|
|
cp -va grafana-provisioning lib
|
|
./adjust-dashboard-for-channel.py \
|
|
lib/grafana-provisioning/dashboards/cluster-monitor.json local
|
|
|
|
mkdir -p lib/grafana-provisioning/datasources
|
|
cat > lib/grafana-provisioning/datasources/datasource.yml <<EOF
|
|
apiVersion: 1
|
|
|
|
datasources:
|
|
- name: local-influxdb
|
|
type: influxdb
|
|
isDefault: true
|
|
access: proxy
|
|
database: testnet
|
|
user: $INFLUXDB_READ_USER
|
|
password: $INFLUXDB_READ_PASSWORD
|
|
url: http://influxdb:8086
|
|
editable: true
|
|
EOF
|
|
fi
|
|
|
|
set -x
|
|
|
|
: "${INFLUXDB_IMAGE:=influxdb:1.7}"
|
|
: "${GRAFANA_IMAGE:=solanalabs/grafana:stable}"
|
|
: "${GRAFANA_IMAGE:=grafana/grafana:5.2.3}"
|
|
|
|
docker pull $INFLUXDB_IMAGE
|
|
docker pull $GRAFANA_IMAGE
|
|
|
|
docker network remove influxdb || true
|
|
docker network create influxdb
|
|
|
|
cat > "$PWD"/lib/influx-env-file <<EOF
|
|
INFLUXDB_ADMIN_USER=$INFLUXDB_ADMIN_USER
|
|
INFLUXDB_ADMIN_PASSWORD=$INFLUXDB_ADMIN_PASSWORD
|
|
INFLUXDB_READ_USER=$INFLUXDB_READ_USER
|
|
INFLUXDB_READ_PASSWORD=$INFLUXDB_READ_PASSWORD
|
|
INFLUXDB_WRITE_USER=$INFLUXDB_WRITE_USER
|
|
INFLUXDB_WRITE_PASSWORD=$INFLUXDB_WRITE_PASSWORD
|
|
INFLUXDB_DB=testnet
|
|
EOF
|
|
mkdir -p lib/influxdb
|
|
docker run \
|
|
--detach \
|
|
--name=influxdb \
|
|
--net=influxdb \
|
|
--publish 8086:8086 \
|
|
--user "$(id -u):$(id -g)" \
|
|
--volume "$PWD"/influxdb.conf:/etc/influxdb/influxdb.conf:ro \
|
|
--volume "$PWD"/lib/influxdb:/var/lib/influxdb \
|
|
--env-file "$PWD"/lib/influx-env-file \
|
|
$INFLUXDB_IMAGE -config /etc/influxdb/influxdb.conf /init-influxdb.sh
|
|
|
|
cat > "$PWD"/lib/grafana-env-file <<EOF
|
|
GF_PATHS_CONFIG=/grafana.ini
|
|
GF_SECURITY_ADMIN_USER=$INFLUXDB_ADMIN_USER
|
|
GF_SECURITY_ADMIN_PASSWORD=$INFLUXDB_ADMIN_PASSWORD
|
|
EOF
|
|
|
|
mkdir -p lib/grafana
|
|
docker run \
|
|
--detach \
|
|
--name=grafana \
|
|
--net=influxdb \
|
|
--publish 3000:3000 \
|
|
--user "$(id -u):$(id -g)" \
|
|
--env-file "$PWD"/lib/grafana-env-file \
|
|
--volume "$PWD"/grafana.ini:/grafana.ini:ro \
|
|
--volume "$PWD"/lib/grafana:/var/lib/grafana \
|
|
--volume "$PWD"/lib/grafana-provisioning/:/etc/grafana/provisioning:ro \
|
|
$GRAFANA_IMAGE
|
|
|
|
sleep 5
|
|
|
|
./status.sh
|