Files
aiform_prod/monitor_n8n_memory.sh
AI Assistant 02689e65db fix: Исправление загрузки документов и SQL запросов
- Исправлена потеря документов при обновлении черновика (SQL объединяет вместо перезаписи)
- Исправлено определение типа документа (приоритет field_label над field_name)
- Исправлены дубликаты в documents_meta и documents_uploaded
- Добавлена передача group_index с фронтенда для правильного field_name
- Исправлены все документы в таблице clpr_claim_documents с правильными field_name
- Обновлены SQL запросы: claimsave и claimsave_final для нового флоу
- Добавлена поддержка multi-file upload для одного документа
- Исправлены дубликаты в списке загруженных документов на фронтенде

Файлы:
- SQL: SQL_CLAIMSAVE_FIXED_NEW_FLOW.sql, SQL_CLAIMSAVE_FINAL_FIXED_NEW_FLOW_WITH_UPLOADED.sql
- n8n: N8N_CODE_PROCESS_UPLOADED_FILES_FIXED.js (поддержка group_index)
- Backend: documents.py (передача group_index в n8n)
- Frontend: StepWizardPlan.tsx (передача group_index, исправление дубликатов)
- Скрипты: fix_claim_documents_field_names.py, fix_documents_meta_duplicates.py

Результат: документы больше не теряются, имеют правильные типы и field_name
2025-11-26 19:54:51 +03:00

49 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
# Мониторинг использования памяти n8n
# Проверяет использование памяти и отправляет алерт при превышении порога
N8N_CONTAINER="${N8N_CONTAINER:-n8n}" # Имя контейнера n8n
THRESHOLD="${MEMORY_THRESHOLD:-80}" # Порог использования памяти (%)
LOG_FILE="/var/www/fastuser/data/www/crm.clientright.ru/ticket_form/logs/n8n_memory_monitor.log"
# Создать директорию для логов если не существует
mkdir -p "$(dirname "$LOG_FILE")"
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
# Проверка существования контейнера
if ! docker ps --format "{{.Names}}" | grep -q "^${N8N_CONTAINER}$"; then
log "❌ Контейнер ${N8N_CONTAINER} не найден!"
exit 1
fi
# Получение использования памяти
MEMORY_INFO=$(docker stats "$N8N_CONTAINER" --no-stream --format "{{.MemUsage}}|{{.MemPerc}}")
MEMORY_USAGE=$(echo "$MEMORY_INFO" | cut -d'|' -f1)
MEMORY_PERCENT=$(echo "$MEMORY_INFO" | cut -d'|' -f2 | sed 's/%//')
# Проверка порога
if (( $(echo "$MEMORY_PERCENT > $THRESHOLD" | bc -l 2>/dev/null || echo "0") )); then
log "⚠️ ВНИМАНИЕ: n8n использует ${MEMORY_PERCENT}% памяти (${MEMORY_USAGE})"
log " Порог: ${THRESHOLD}%"
# Дополнительная информация
log "📊 Дополнительная информация:"
docker stats "$N8N_CONTAINER" --no-stream --format " CPU: {{.CPUPerc}} | Memory: {{.MemUsage}} | Network: {{.NetIO}}" | tee -a "$LOG_FILE"
# Проверка OOM Killer
OOM_COUNT=$(dmesg | grep -i "out of memory" | grep -i "$N8N_CONTAINER" | wc -l)
if [ "$OOM_COUNT" -gt 0 ]; then
log "🚨 Обнаружены записи OOM Killer для n8n!"
dmesg | grep -i "out of memory" | grep -i "$N8N_CONTAINER" | tail -5 | tee -a "$LOG_FILE"
fi
exit 1
else
log "✅ Память в норме: ${MEMORY_PERCENT}% (${MEMORY_USAGE})"
exit 0
fi