191 lines
5.7 KiB
Bash
191 lines
5.7 KiB
Bash
#!/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
|
||
|