Files
crm.clientright.ru/erv_project_tools/monitor_erv.sh
Fedor ac7467f0b4 Major CRM updates: AI Assistant, Court Status API, S3 integration improvements, and extensive file storage system
- 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.
2025-10-16 11:17:21 +03:00

270 lines
10 KiB
Bash
Raw Permalink 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
# Скрипт мониторинга проекта 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