42 lines
1.6 KiB
Bash
Executable File
42 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
echo "=== Monitoring stack deploy ==="
|
|
|
|
mkdir -p /mnt/tank/docker/appdata/prometheus
|
|
mkdir -p /mnt/tank/docker/appdata/grafana
|
|
mkdir -p /mnt/tank/docker/appdata/grafana/dashboards
|
|
mkdir -p /mnt/tank/docker/appdata/loki
|
|
mkdir -p /mnt/tank/docker/appdata/promtail
|
|
|
|
chown 65534:65534 /mnt/tank/docker/appdata/prometheus
|
|
chown 472:472 /mnt/tank/docker/appdata/grafana
|
|
chown 472:472 /mnt/tank/docker/appdata/grafana/dashboards
|
|
|
|
if [[ ! -f .env ]]; then
|
|
cp .env.example .env
|
|
gf_pass="$(openssl rand -hex 16)"
|
|
sed -i "s/^GF_ADMIN_PASS=CHANGE_ME$/GF_ADMIN_PASS=$gf_pass/" .env
|
|
chmod 600 .env
|
|
echo "Created .env with a random Grafana admin password."
|
|
fi
|
|
|
|
if compgen -G "$SCRIPT_DIR/dashboards/*.json" >/dev/null; then
|
|
cp "$SCRIPT_DIR"/dashboards/*.json /mnt/tank/docker/appdata/grafana/dashboards/
|
|
chown 472:472 /mnt/tank/docker/appdata/grafana/dashboards/*.json
|
|
fi
|
|
|
|
docker compose --env-file .env config >/dev/null
|
|
docker compose --env-file .env up -d
|
|
|
|
echo
|
|
docker ps --filter name=prometheus --filter name=grafana --filter name=loki --filter name=promtail --filter name=cadvisor --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
|
echo
|
|
curl -fsS http://127.0.0.1:9090/-/ready >/dev/null && echo "Prometheus ready"
|
|
[[ "$(docker inspect -f '{{.State.Running}}' loki 2>/dev/null)" == "true" ]] && echo "Loki running"
|
|
curl -fsS http://127.0.0.1:9100/metrics >/dev/null && echo "node-exporter ready"
|
|
docker exec cadvisor wget -qO- http://127.0.0.1:8080/metrics >/dev/null 2>&1 && echo "cAdvisor ready" || true
|