49 lines
2.1 KiB
Bash
49 lines
2.1 KiB
Bash
|
|
#!/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
|
||
|
|
|