Files
han-app/VM3_signoz/Signoz/scripts/00-check-vm.sh
T

69 lines
2.3 KiB
Bash

#!/usr/bin/env bash
set -Eeuo pipefail
PRIVATE_IP="${PRIVATE_IP:-192.168.0.5}"
MIN_MEMORY_KIB=$((4 * 1024 * 1024))
MIN_DISK_KIB=$((30 * 1024 * 1024))
errors=0
ok() { printf 'OK %s\n' "$*"; }
warn() { printf 'WARN %s\n' "$*" >&2; }
fail() { printf 'FAIL %s\n' "$*" >&2; errors=$((errors + 1)); }
echo "=== ОС и ресурсы ==="
. /etc/os-release
[[ "${ID:-}" == ubuntu && "${VERSION_ID:-}" == "24.04" ]] \
&& ok "Ubuntu ${VERSION_ID}" || warn "Проверено для Ubuntu 24.04; найдено ${PRETTY_NAME:-unknown}"
memory_kib="$(awk '/MemTotal/ {print $2}' /proc/meminfo)"
((memory_kib >= MIN_MEMORY_KIB)) && ok "RAM не менее 4 GiB" || fail "SigNoz требует не менее 4 GiB RAM"
disk_kib="$(df -Pk /opt 2>/dev/null | awk 'NR==2 {print $4}')"
((disk_kib >= MIN_DISK_KIB)) && ok "/opt: свободно не менее 30 GiB" \
|| fail "Для начальной установки рекомендуется не менее 30 GiB свободно в /opt"
echo
echo "=== Сеть ==="
ip -br -4 address
ip -4 route
ip -4 addr show | grep -Fq "inet ${PRIVATE_IP}/" \
&& ok "Приватный адрес ${PRIVATE_IP} назначен" \
|| fail "Адрес ${PRIVATE_IP} не найден ни на одном интерфейсе"
if getent hosts archive.ubuntu.com registry-1.docker.io ghcr.io >/dev/null; then
ok "DNS работает"
else
fail "DNS не разрешает адреса репозиториев"
fi
for url in \
https://archive.ubuntu.com \
https://download.docker.com \
https://registry-1.docker.io \
https://github.com \
https://signoz.io; do
if curl -4fsSI --connect-timeout 8 --max-time 15 "$url" >/dev/null; then
ok "доступен $url"
else
fail "нет доступа к $url"
fi
done
echo
echo "=== Занятость портов ==="
for port in 8080 4317 4318; do
if ss -H -lnt "( sport = :$port )" | grep -q .; then
fail "TCP-порт $port уже занят: $(ss -H -lntp "( sport = :$port )")"
else
ok "TCP-порт $port свободен"
fi
done
echo
timedatectl show --property=NTPSynchronized --property=Timezone --no-pager
if ((errors)); then
printf '\nОбнаружено ошибок: %d\n' "$errors" >&2
exit 1
fi
echo "Проверка завершена успешно."