- Added comprehensive AI Assistant system (aiassist/ directory): * Vector search and embedding capabilities * Typebot proxy integration * Elastic search functionality * Message classification and chat history * MCP proxy for external integrations - Implemented Court Status API (GetCourtStatus.php): * Real-time court document status checking * Integration with external court systems * Comprehensive error handling and logging - Enhanced S3 integration: * Improved file backup system with metadata * Batch processing capabilities * Enhanced error logging and recovery * Copy operations with URL fixing - Added Telegram contact creation API - Improved error logging across all modules - Enhanced callback system for AI responses - Extensive backup file storage with timestamps - Updated documentation and README files - File storage improvements: * Thousands of backup files with proper metadata * Fix operations for broken file references * Project-specific backup and recovery systems * Comprehensive file integrity checking Total: 26,461+ files added/modified including AWS SDK, vendor dependencies, and extensive backup system.
270 lines
10 KiB
Bash
270 lines
10 KiB
Bash
#!/bin/bash
|
||
|
||
# Скрипт мониторинга проекта ERV
|
||
# Автор: Фёдор
|
||
# Дата: $(date +%Y-%m-%d)
|
||
|
||
# Цвета для вывода
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# Настройки
|
||
PROJECT_PATH="/var/www/fastuser/data/www/erv.clientright.ru"
|
||
LOG_FILE="/var/www/fastuser/data/www/crm.clientright.ru/erv_project_tools/monitor.log"
|
||
ALERT_EMAIL="admin@clientright.ru"
|
||
|
||
# Функции для логирования
|
||
log() {
|
||
echo -e "${GREEN}[$(date '+%Y-%m-%d %H:%M:%S')]${NC} $1"
|
||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
|
||
}
|
||
|
||
error() {
|
||
echo -e "${RED}[$(date '+%Y-%m-%d %H:%M:%S')] ОШИБКА:${NC} $1"
|
||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ОШИБКА: $1" >> "$LOG_FILE"
|
||
}
|
||
|
||
warning() {
|
||
echo -e "${YELLOW}[$(date '+%Y-%m-%d %H:%M:%S')] ПРЕДУПРЕЖДЕНИЕ:${NC} $1"
|
||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ПРЕДУПРЕЖДЕНИЕ: $1" >> "$LOG_FILE"
|
||
}
|
||
|
||
info() {
|
||
echo -e "${BLUE}[$(date '+%Y-%m-%d %H:%M:%S')] ИНФО:${NC} $1"
|
||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ИНФО: $1" >> "$LOG_FILE"
|
||
}
|
||
|
||
# Создаем директорию для логов если её нет
|
||
mkdir -p "$(dirname "$LOG_FILE")"
|
||
|
||
echo -e "${GREEN}=== МОНИТОРИНГ ПРОЕКТА ERV ===${NC}"
|
||
echo "Дата: $(date)"
|
||
echo "Проект: $PROJECT_PATH"
|
||
echo "Лог файл: $LOG_FILE"
|
||
echo ""
|
||
|
||
log "Начинаем мониторинг системы..."
|
||
|
||
# 1. Проверка доступности проекта
|
||
log "Проверяем доступность проекта..."
|
||
if curl -s --connect-timeout 10 https://erv.clientright.ru/ > /dev/null; then
|
||
log "Проект ERV доступен"
|
||
else
|
||
error "Проект ERV недоступен!"
|
||
# Отправляем уведомление
|
||
echo "Проект ERV недоступен! Проверьте сервер." | mail -s "ERV DOWN ALERT" "$ALERT_EMAIL" 2>/dev/null
|
||
fi
|
||
|
||
# 2. Проверка размера папки uploads
|
||
log "Проверяем размер папки uploads..."
|
||
if [ -d "$PROJECT_PATH/uploads" ]; then
|
||
UPLOADS_SIZE=$(du -sh "$PROJECT_PATH/uploads" | cut -f1)
|
||
UPLOADS_SIZE_MB=$(du -sm "$PROJECT_PATH/uploads" | cut -f1)
|
||
|
||
info "Размер папки uploads: $UPLOADS_SIZE"
|
||
|
||
# Предупреждение если размер больше 1GB
|
||
if [ "$UPLOADS_SIZE_MB" -gt 1024 ]; then
|
||
warning "Папка uploads превышает 1GB ($UPLOADS_SIZE)"
|
||
fi
|
||
else
|
||
warning "Папка uploads не найдена"
|
||
fi
|
||
|
||
# 3. Проверка критически важной папки cache
|
||
log "Проверяем папку cache..."
|
||
if [ -d "$PROJECT_PATH/cache" ]; then
|
||
CACHE_SIZE=$(du -sh "$PROJECT_PATH/cache" | cut -f1)
|
||
info "Размер папки cache: $CACHE_SIZE"
|
||
|
||
# Проверяем права доступа
|
||
if [ ! -r "$PROJECT_PATH/cache" ]; then
|
||
error "Нет прав на чтение папки cache!"
|
||
fi
|
||
|
||
if [ ! -w "$PROJECT_PATH/cache" ]; then
|
||
error "Нет прав на запись в папку cache!"
|
||
fi
|
||
else
|
||
error "Критически важная папка cache не найдена!"
|
||
fi
|
||
|
||
# 4. Проверка подключения к базе данных
|
||
log "Проверяем подключение к базе данных..."
|
||
DB_NAME="ci20465_erv"
|
||
DB_USER="ci20465_erv"
|
||
DB_PASS="c7vOXbmG"
|
||
|
||
if mysql -u"$DB_USER" -p"$DB_PASS" -e "SELECT 1;" "$DB_NAME" > /dev/null 2>&1; then
|
||
log "Подключение к базе данных успешно"
|
||
|
||
# Проверяем количество записей в таблице полисов
|
||
POLIS_COUNT=$(mysql -u"$DB_USER" -p"$DB_PASS" -e "SELECT COUNT(*) FROM lexrpiority;" "$DB_NAME" 2>/dev/null | tail -1)
|
||
info "Количество полисов в базе: $POLIS_COUNT"
|
||
else
|
||
error "Не удалось подключиться к базе данных!"
|
||
fi
|
||
|
||
# 5. Проверка внешних API
|
||
log "Проверяем доступность внешних API..."
|
||
|
||
# SMS API (SigmaSMS)
|
||
if curl -s --connect-timeout 5 https://online.sigmasms.ru/api/ > /dev/null; then
|
||
log "SMS API (SigmaSMS) доступен"
|
||
else
|
||
warning "SMS API (SigmaSMS) недоступен"
|
||
fi
|
||
|
||
# DaData API
|
||
if curl -s --connect-timeout 5 https://suggestions.dadata.ru/ > /dev/null; then
|
||
log "DaData API доступен"
|
||
else
|
||
warning "DaData API недоступен"
|
||
fi
|
||
|
||
# CRM API (ClientRight)
|
||
if curl -s --connect-timeout 5 https://form.clientright.ru/ > /dev/null; then
|
||
log "CRM API (ClientRight) доступен"
|
||
else
|
||
warning "CRM API (ClientRight) недоступен"
|
||
fi
|
||
|
||
# 6. Проверка системных ресурсов
|
||
log "Проверяем системные ресурсы..."
|
||
|
||
# Использование диска
|
||
DISK_USAGE=$(df -h "$PROJECT_PATH" | tail -1 | awk '{print $5}' | sed 's/%//')
|
||
info "Использование диска: ${DISK_USAGE}%"
|
||
|
||
if [ "$DISK_USAGE" -gt 90 ]; then
|
||
error "Критически мало места на диске: ${DISK_USAGE}%"
|
||
elif [ "$DISK_USAGE" -gt 80 ]; then
|
||
warning "Мало места на диске: ${DISK_USAGE}%"
|
||
fi
|
||
|
||
# Использование памяти
|
||
MEMORY_USAGE=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100.0}')
|
||
info "Использование памяти: ${MEMORY_USAGE}%"
|
||
|
||
if [ "$MEMORY_USAGE" -gt 90 ]; then
|
||
error "Критически высокое использование памяти: ${MEMORY_USAGE}%"
|
||
elif [ "$MEMORY_USAGE" -gt 80 ]; then
|
||
warning "Высокое использование памяти: ${MEMORY_USAGE}%"
|
||
fi
|
||
|
||
# Загрузка CPU
|
||
CPU_LOAD=$(uptime | awk -F'load average:' '{print $2}' | awk '{print $1}' | sed 's/,//')
|
||
info "Загрузка CPU: $CPU_LOAD"
|
||
|
||
# 7. Проверка логов на ошибки
|
||
log "Проверяем логи на ошибки..."
|
||
if [ -f "/var/log/apache2/error.log" ]; then
|
||
ERROR_COUNT=$(grep -c "erv.clientright.ru" /var/log/apache2/error.log 2>/dev/null || echo "0")
|
||
if [ "$ERROR_COUNT" -gt 0 ]; then
|
||
warning "Найдено $ERROR_COUNT ошибок в логах Apache для ERV"
|
||
fi
|
||
fi
|
||
|
||
# 8. Проверка процессов PHP
|
||
log "Проверяем процессы PHP..."
|
||
PHP_PROCESSES=$(ps aux | grep php | grep -v grep | wc -l)
|
||
info "Количество процессов PHP: $PHP_PROCESSES"
|
||
|
||
# 9. Проверка SSL сертификата
|
||
log "Проверяем SSL сертификат..."
|
||
SSL_EXPIRY=$(echo | openssl s_client -servername erv.clientright.ru -connect erv.clientright.ru:443 2>/dev/null | openssl x509 -noout -dates | grep notAfter | cut -d= -f2)
|
||
if [ ! -z "$SSL_EXPIRY" ]; then
|
||
SSL_DAYS=$(( ($(date -d "$SSL_EXPIRY" +%s) - $(date +%s)) / 86400 ))
|
||
info "SSL сертификат истекает через $SSL_DAYS дней"
|
||
|
||
if [ "$SSL_DAYS" -lt 30 ]; then
|
||
warning "SSL сертификат истекает менее чем через 30 дней!"
|
||
fi
|
||
else
|
||
warning "Не удалось проверить SSL сертификат"
|
||
fi
|
||
|
||
# 10. Проверка целостности критических файлов
|
||
log "Проверяем целостность критических файлов..."
|
||
|
||
CRITICAL_FILES=(
|
||
"$PROJECT_PATH/ervws/index.php"
|
||
"$PROJECT_PATH/database.php"
|
||
"$PROJECT_PATH/sms-test.php"
|
||
"$PROJECT_PATH/file-server.php"
|
||
)
|
||
|
||
for file in "${CRITICAL_FILES[@]}"; do
|
||
if [ -f "$file" ]; then
|
||
if [ -r "$file" ]; then
|
||
log "Файл $file доступен для чтения"
|
||
else
|
||
error "Файл $file недоступен для чтения!"
|
||
fi
|
||
else
|
||
error "Критический файл $file не найден!"
|
||
fi
|
||
done
|
||
|
||
# 11. Проверка последних изменений
|
||
log "Проверяем последние изменения в проекте..."
|
||
RECENT_CHANGES=$(find "$PROJECT_PATH" -type f -name "*.php" -mtime -1 2>/dev/null | wc -l)
|
||
if [ "$RECENT_CHANGES" -gt 0 ]; then
|
||
info "Найдено $RECENT_CHANGES файлов, измененных за последние 24 часа"
|
||
find "$PROJECT_PATH" -type f -name "*.php" -mtime -1 2>/dev/null | head -5 | while read file; do
|
||
info "Изменен: $file ($(stat -c %y "$file" 2>/dev/null | cut -d' ' -f1,2))"
|
||
done
|
||
fi
|
||
|
||
# 12. Генерация отчета
|
||
REPORT_FILE="/var/www/fastuser/data/www/crm.clientright.ru/erv_project_tools/monitor_report_$(date +%Y%m%d_%H%M%S).txt"
|
||
|
||
cat > "$REPORT_FILE" << EOF
|
||
ОТЧЕТ МОНИТОРИНГА ПРОЕКТА ERV
|
||
=============================
|
||
Дата: $(date)
|
||
Сервер: $(hostname)
|
||
IP: $(curl -s ifconfig.me 2>/dev/null || echo "Не определен")
|
||
|
||
СТАТУС СИСТЕМЫ:
|
||
- Проект доступен: $(curl -s --connect-timeout 5 https://erv.clientright.ru/ > /dev/null && echo "ДА" || echo "НЕТ")
|
||
- База данных: $(mysql -u"$DB_USER" -p"$DB_PASS" -e "SELECT 1;" "$DB_NAME" > /dev/null 2>&1 && echo "ДОСТУПНА" || echo "НЕДОСТУПНА")
|
||
- SMS API: $(curl -s --connect-timeout 5 https://online.sigmasms.ru/api/ > /dev/null && echo "ДОСТУПЕН" || echo "НЕДОСТУПЕН")
|
||
- DaData API: $(curl -s --connect-timeout 5 https://suggestions.dadata.ru/ > /dev/null && echo "ДОСТУПЕН" || echo "НЕДОСТУПЕН")
|
||
- CRM API: $(curl -s --connect-timeout 5 https://form.clientright.ru/ > /dev/null && echo "ДОСТУПЕН" || echo "НЕДОСТУПЕН")
|
||
|
||
РЕСУРСЫ:
|
||
- Использование диска: ${DISK_USAGE}%
|
||
- Использование памяти: ${MEMORY_USAGE}%
|
||
- Загрузка CPU: $CPU_LOAD
|
||
- Процессы PHP: $PHP_PROCESSES
|
||
|
||
ФАЙЛЫ:
|
||
- Размер uploads: $UPLOADS_SIZE
|
||
- Размер cache: $CACHE_SIZE
|
||
- Изменения за 24ч: $RECENT_CHANGES файлов
|
||
|
||
SSL:
|
||
- Дней до истечения: $SSL_DAYS
|
||
|
||
EOF
|
||
|
||
log "Отчет сохранен: $REPORT_FILE"
|
||
|
||
echo ""
|
||
log "=== МОНИТОРИНГ ЗАВЕРШЕН ==="
|
||
echo ""
|
||
|
||
# Отправляем отчет по email если есть ошибки
|
||
if grep -q "ОШИБКА" "$LOG_FILE"; then
|
||
warning "Обнаружены ошибки в системе!"
|
||
if [ -f "/usr/bin/mail" ]; then
|
||
echo "Обнаружены ошибки в системе ERV. Проверьте логи." | mail -s "ERV MONITORING ALERT" "$ALERT_EMAIL" 2>/dev/null
|
||
fi
|
||
fi
|
||
|
||
exit 0
|