Files
Phantom/release/docker/healthcheck.sh

191 lines
5.7 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# Скрипт проверки состояния Phantom Protocol
set -e
# Функция проверки процесса phantomd
check_process() {
if pgrep -f phantomd >/dev/null 2>&1; then
return 0
else
echo "ОШИБКА: Процесс phantomd не запущен"
return 1
fi
}
# Функция проверки сетевого порта
check_port() {
local port="${PHANTOM_PORT:-8080}"
if nc -z localhost "$port" 2>/dev/null; then
return 0
else
echo "ОШИБКА: Порт $port недоступен"
return 1
fi
}
# Функция проверки файлов логов
check_logs() {
local log_dir="/home/phantom/logs"
# Проверка наличия директории логов
if [ ! -d "$log_dir" ]; then
echo "ПРЕДУПРЕЖДЕНИЕ: Директория логов не найдена"
return 1
fi
# Поиск свежих записей в логах (за последние 5 минут)
local recent_logs
recent_logs=$(find "$log_dir" -name "*.log" -mmin -5 2>/dev/null | wc -l)
if [ "$recent_logs" -gt 0 ]; then
return 0
else
echo "ПРЕДУПРЕЖДЕНИЕ: Нет свежих записей в логах"
return 1
fi
}
# Функция проверки использования памяти
check_memory() {
local memory_limit_mb="${PHANTOM_MEMORY_LIMIT_MB:-512}"
# Получение использования памяти процессом phantomd
local memory_usage
memory_usage=$(ps -o pid,vsz,comm | grep phantomd | awk '{print $2}' | head -1)
if [ -n "$memory_usage" ]; then
local memory_usage_mb=$((memory_usage / 1024))
if [ "$memory_usage_mb" -lt "$memory_limit_mb" ]; then
return 0
else
echo "ПРЕДУПРЕЖДЕНИЕ: Высокое использование памяти: ${memory_usage_mb}MB"
return 1
fi
else
echo "ОШИБКА: Не удалось получить информацию о памяти"
return 1
fi
}
# Функция проверки дискового пространства
check_disk_space() {
local data_dir="/home/phantom/data"
local min_free_mb="${PHANTOM_MIN_DISK_MB:-100}"
if [ -d "$data_dir" ]; then
local free_space_kb
free_space_kb=$(df "$data_dir" | awk 'NR==2 {print $4}')
local free_space_mb=$((free_space_kb / 1024))
if [ "$free_space_mb" -gt "$min_free_mb" ]; then
return 0
else
echo "ПРЕДУПРЕЖДЕНИЕ: Мало свободного места: ${free_space_mb}MB"
return 1
fi
else
echo "ПРЕДУПРЕЖДЕНИЕ: Директория данных не найдена"
return 1
fi
}
# Функция проверки конфигурации
check_config() {
local config_dir="/home/phantom/config"
if [ -d "$config_dir" ] && [ "$(ls -A "$config_dir"/*.conf 2>/dev/null | wc -l)" -gt 0 ]; then
return 0
else
echo "ОШИБКА: Конфигурационные файлы не найдены"
return 1
fi
}
# Основная функция проверки
main() {
local exit_code=0
local checks_passed=0
local total_checks=6
echo "=== Проверка состояния Phantom Protocol ==="
echo "Время: $(date)"
echo "Хост: $(hostname)"
echo ""
# Выполнение проверок
echo "1. Проверка процесса phantomd..."
if check_process; then
echo " ✓ Процесс запущен"
((checks_passed++))
else
echo " ✗ Процесс не запущен"
exit_code=1
fi
echo "2. Проверка сетевого порта..."
if check_port; then
echo " ✓ Порт доступен"
((checks_passed++))
else
echo " ✗ Порт недоступен"
exit_code=1
fi
echo "3. Проверка конфигурации..."
if check_config; then
echo " ✓ Конфигурация найдена"
((checks_passed++))
else
echo " ✗ Проблемы с конфигурацией"
exit_code=1
fi
echo "4. Проверка логов..."
if check_logs; then
echo " ✓ Логи актуальны"
((checks_passed++))
else
echo " ⚠ Проблемы с логами"
# Не критично для работы
((checks_passed++))
fi
echo "5. Проверка использования памяти..."
if check_memory; then
echo " ✓ Память в норме"
((checks_passed++))
else
echo " ⚠ Высокое использование памяти"
# Не критично для работы
((checks_passed++))
fi
echo "6. Проверка дискового пространства..."
if check_disk_space; then
echo " ✓ Достаточно места на диске"
((checks_passed++))
else
echo " ⚠ Мало места на диске"
# Не критично для работы
((checks_passed++))
fi
echo ""
echo "Результат: $checks_passed/$total_checks проверок пройдено"
if [ $exit_code -eq 0 ]; then
echo "Статус: ЗДОРОВ"
else
echo "Статус: НЕЗДОРОВ"
fi
exit $exit_code
}
# Запуск основной функции
main