-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbootstrap.sh
More file actions
100 lines (74 loc) · 2.42 KB
/
bootstrap.sh
File metadata and controls
100 lines (74 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/bin/bash
set -e
# корневая директория проекта (где лежит bootstrap.sh)
PROJECT_ROOT=$(pwd)
# директория с приложением (docker-compose.yml)
SRC_DIR="$PROJECT_ROOT/src"
# директория со стеком observability
OBS_DIR="$PROJECT_ROOT/observability"
echo "* Starting bootstrap process..."
# проверка, установлен ли docker
if ! command -v docker &> /dev/null
then
echo "Docker is not installed."
exit 1
fi
# проверка, запущен ли docker daemon
if ! docker info > /dev/null 2>&1
then
echo "Docker daemon is not running."
exit 1
fi
echo "* Docker is ready."
# проверка структуры папки observability
if [ ! -d "$OBS_DIR" ]; then
echo "Observability directory not found."
exit 1
fi
# список обязательных конфигов
REQUIRED_FILES=(
"$OBS_DIR/docker-compose.observability.yml"
"$OBS_DIR/otel/otel-collector-config.yaml"
"$OBS_DIR/tempo/tempo.yaml"
"$OBS_DIR/loki/loki-config.yaml"
"$OBS_DIR/prometheus/prometheus.yml"
)
# проверка наличия всех конфигов
for file in "${REQUIRED_FILES[@]}"; do
if [ ! -f "$file" ]; then
echo "Missing required file: $file"
exit 1
fi
done
echo "* Observability configuration validated."
# создание директорий для хранения данных (persist)
echo "Ensuring data directories..."
# Loki data directories
mkdir -p "$OBS_DIR/loki/data"
mkdir -p "$OBS_DIR/loki/data/chunks"
mkdir -p "$OBS_DIR/loki/data/rules"
# Tempo data directory
mkdir -p "$OBS_DIR/tempo/data"
# Prometheus data directory
mkdir -p "$OBS_DIR/prometheus/data"
echo "Data directories ensured."
# запуск стека observability (tempo, loki, prometheus, collector)
echo "Starting observability stack..."
cd "$OBS_DIR"
docker compose -f docker-compose.observability.yml up -d --build
echo "Waiting for OpenTelemetry Collector..."
sleep 10
cd "$PROJECT_ROOT"
echo "* Observability stack started."
# запуск основного приложения
echo "* Starting application stack..."
cd "$SRC_DIR"
docker compose up -d --build
cd "$PROJECT_ROOT"
echo "* All systems started successfully!"
echo ""
echo "Grafana: http://localhost:3000 (admin/admin)"
echo "Prometheus: http://localhost:9090"
echo "Tempo: http://localhost:3200"
echo "Loki: http://localhost:3100"
echo ""