Добавлен OTLP-провайдер, реализовано отбрасывание метрик и трейсов в observability + добавлен перезапуск nginx при пересборке контейнеров (ошибка, когда докер меняет адреса сервисов)
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
|
||||
PRIVATE_IP="${PRIVATE_IP:-192.168.0.5}"
|
||||
ROOT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
CASTING="${ROOT_DIR}/casting.yaml"
|
||||
COMPOSE="${ROOT_DIR}/pours/deployment/compose.yaml"
|
||||
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
echo "Запустите через sudo: sudo $0" >&2
|
||||
exit 1
|
||||
fi
|
||||
command -v docker >/dev/null || { echo "Сначала установите Docker." >&2; exit 1; }
|
||||
ip -4 addr show | grep -Fq "inet ${PRIVATE_IP}/" || {
|
||||
echo "На ВМ отсутствует приватный адрес ${PRIVATE_IP}." >&2
|
||||
exit 1
|
||||
}
|
||||
grep -Fq "${PRIVATE_IP}:4317:4317" "$CASTING" || {
|
||||
echo "PRIVATE_IP не совпадает с адресом в casting.yaml." >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
if ! command -v foundryctl >/dev/null; then
|
||||
installer="$(mktemp)"
|
||||
trap 'rm -f "$installer"' EXIT
|
||||
curl -fsSL https://signoz.io/foundry.sh -o "$installer"
|
||||
bash "$installer"
|
||||
if [[ -x /root/.local/bin/foundryctl ]]; then
|
||||
install -m 0755 /root/.local/bin/foundryctl /usr/local/bin/foundryctl
|
||||
elif [[ ! -x /usr/local/bin/foundryctl ]]; then
|
||||
echo "foundryctl не найден после установки." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
cd "$ROOT_DIR"
|
||||
foundryctl gauge -f "$CASTING"
|
||||
foundryctl forge -f "$CASTING"
|
||||
|
||||
[[ -f "$COMPOSE" ]] || { echo "Foundry не создал $COMPOSE" >&2; exit 1; }
|
||||
docker compose -f "$COMPOSE" config --quiet
|
||||
|
||||
# Защита от случайной публикации UI или OTLP на всех интерфейсах.
|
||||
grep -Fq "${PRIVATE_IP}:4317:4317" "$COMPOSE"
|
||||
grep -Fq "${PRIVATE_IP}:4318:4318" "$COMPOSE"
|
||||
grep -Fq "127.0.0.1:8080:8080" "$COMPOSE"
|
||||
if grep -Eq '(^|[[:space:]"-])0\.0\.0\.0:(8080|4317|4318):' "$COMPOSE"; then
|
||||
echo "Остановка: обнаружена публикация служебного порта на 0.0.0.0." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
docker compose -f "$COMPOSE" pull
|
||||
docker compose -f "$COMPOSE" up -d --remove-orphans
|
||||
|
||||
echo "Ожидание SigNoz UI..."
|
||||
deadline=$((SECONDS + 300))
|
||||
until curl -fsS --max-time 5 http://127.0.0.1:8080/api/v1/health >/dev/null 2>&1; do
|
||||
if ((SECONDS >= deadline)); then
|
||||
echo "UI не стал готов за 5 минут." >&2
|
||||
docker compose -f "$COMPOSE" ps -a
|
||||
exit 1
|
||||
fi
|
||||
sleep 5
|
||||
done
|
||||
|
||||
docker compose -f "$COMPOSE" ps -a
|
||||
cat <<'EOF'
|
||||
|
||||
Базовый SigNoz запущен, но первичная настройка ещё не завершена.
|
||||
Откройте UI через SSH-туннель и создайте первого администратора/организацию.
|
||||
После этого перезапустите ingester и выполните scripts/30-verify-signoz.sh.
|
||||
EOF
|
||||
Reference in New Issue
Block a user