🔍 Log Analizi - Kalıcı Hatalar Raporu

📅 Tarih: 2025-12-04 05:30 🎯 Kapsam: Tüm Tenant'lar (Central + Tenant 1, 2, 1001) ⏱️ Analiz Dönemi: 2-4 Aralık 2025

🚨 Kritik Hatalar

3

⚠️ Uyarılar

2

📊 Toplam Log Kaydı

112+

📁 İncelenen Dosya

16

🚨 Kritik Seviye Hatalar (Mutlaka Çözülmeli)

#1 - RealTimeResourceTracker: Array to String Conversion
KRİTİK
Hata Sıklığı: Her 5 dakikada bir tekrarlıyor (24 saat boyunca durmadan)
Etkilenen Tenant'lar: Tüm aktif tenant'lar (Tenant 1, 2, 1001)
Sorunun Kaynağı:
Cache'den gelen response_time değeri array formatında. Bu değer direkt olarak veritabanına insert edilmeye çalışıldığında "Array to string conversion" hatası veriyor.
// Modules/TenantManagement/app/Services/RealTimeResourceTracker.php:238 'response_time_ms' => $metrics['response_time'], // ← Array gelirse hata! // Line 162-163: Cache'den gelen değer kontrol edilmiyor private function getRealResponseTime(Tenant $tenant) { $cacheKey = "response_time_{$tenant->id}_" . Carbon::now()->format('Y-m-d-H'); return Cache::get($cacheKey, 0); // Array dönerse sorun! }
Arkaplanda İşlem Yokken Neden Çalışıyor?
Scheduled task (cron) her 5 dakikada bir TrackTenantResources command'ını çalıştırıyor. Kullanıcı işlem yapmasa bile sistem metrikleri sürekli toplanıyor.

✅ Çözüm Önerileri

  • Acil: getRealResponseTime() metodunda dönen değerin tip kontrolü yapılmalı (array ise ortalama alınmalı veya 0 dönmeli)
  • Kalıcı: Cache'e yazılan response_time değerinin her zaman numeric olduğunu garanti et
  • Geçici: Try-catch bloğunu güçlendir, array gelirse log at ve 0 kullan
  • İzleme: Scheduled task sıklığını azalt (5dk → 15dk) veya hata durumunda skip yap
⏰ İlk Görülme: 2025-12-04 02:05:05 | Son Görülme: 2025-12-04 05:30+ (devam ediyor)
#2 - Queue Worker'lar Çalışmıyor
KRİTİK
Etkilenen Worker'lar:
  • ❌ laravel-queue-general (çalışmıyor)
  • ❌ laravel-queue-tenant (çalışmıyor)
  • ❌ laravel-queue-ai (çalışmıyor)
  • ❌ laravel-horizon (çalışmıyor)
Sorun: Queue health check her çalıştığında worker'ları yeniden başlatmaya çalışıyor ama başarılı olamıyor. Tüm restart denemeleri başarısız.
🔧 Queue Worker Durumu Kontrol Ediliyor... ❌ laravel-queue-general çalışmıyor. Yeniden başlatılıyor... 🚨 laravel-queue-general yeniden başlatılamadı! ❌ laravel-queue-tenant çalışmıyor. Yeniden başlatılıyor... 🚨 laravel-queue-tenant yeniden başlatılamadı!
Etkisi:
• Job'lar işlenmiyor (email, AI generation, arka plan işlemleri)
• Horizon dashboard çalışmıyor
• Asenkron işlemler senkron çalışıyor (performans kaybı)

✅ Çözüm Önerileri

  • 1. Supervisor durumunu kontrol et: supervisorctl status
  • 2. Supervisor config dosyalarını incele: /etc/supervisor/conf.d/laravel-*.conf
  • 3. Log dosyalarını kontrol et: storage/logs/worker.log
  • 4. Manuel restart dene: supervisorctl restart laravel-horizon
  • 5. Horizon optimize et: CLAUDE.md'de belirtilen maxProcesses ayarlarını kontrol et
⏰ Durum: Sürekli (Her queue-health check'te tekrarlıyor - her 5 dakikada bir)
#3 - OpenAI SSL Sertifika Hatası
KRİTİK
Hata Sıklığı: 48 kez tekrarlandı (Tenant 2 - ixtif.com)
Hata Mesajı:
SSL: no alternative certificate subject name matches target host name 'api.openai.com'
Etkilenen Özellik: Blog AI Content Generation (otomatik blog yazma)
[2025-12-04 04:00:40] local.ERROR: OpenAI streaming API hatası: OpenAI streaming error: SSL: no alternative certificate subject name matches target host name 'api.openai.com' ❌ HowTo generation failed - Generating fallback ❌ FAQ generation failed to parse ❌ Auto SEO Fill: AI önerileri alınamadı
Neden Oluyor?
Sunucuda SSL sertifika doğrulaması sırasında OpenAI'ın SSL sertifikasının hostname'i ile eşleşmiyor. cURL SSL ayarları veya CA bundle sorunu olabilir.

✅ Çözüm Önerileri

  • 1. CA bundle'ı güncelle: yum update ca-certificates
  • 2. OpenAI client SSL ayarlarını kontrol et (Guzzle verify seçeneği)
  • 3. cURL versiyonunu kontrol et: curl --version
  • 4. Test et: curl -v https://api.openai.com/
  • Geçici: SSL doğrulamasını devre dışı bırak (sadece test için, production'da kullanma!)
⏰ İlk Görülme: 2025-12-04 04:00:40 | Tekrar: 48 kez (Blog AI job'ları çalışırken)

⚠️ Orta Seviye Hatalar (Önemli)

#4 - Tenant Database Seçimi Hatası
YÜKSEK
Hata Sıklığı: 18 kez (ixtif.com mega-menu yüklenirken)
Hata:
SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected
Etkilenen Dosya:
resources/views/themes/ixtif/partials/mega-menu-products.blade.php
SQL: select * from `media` where `media`.`model_id` in (1022) and `media`.`model_type` = Modules\Shop\App\Models\ShopProduct Connection: tenant (ama database seçili değil!)
Sorun:
Mega-menu render edilirken tenant context kaybolmuş, media ilişkileri çağrılırken tenant database bağlantısı seçili değil.

✅ Çözüm Önerileri

  • 1. mega-menu-products.blade.php dosyasını incele, eager loading kontrolü yap
  • 2. Tenant middleware'inin doğru sırada olduğundan emin ol
  • 3. ShopProduct modeli media ilişkisini tenant-aware yap
  • 4. View cache temizle: php artisan view:clear
⏰ Görülme: Sporadic (Mega-menu yüklenirken, her zaman değil)
#5 - MailController Sınıfı Bulunamıyor
ORTA
Hata:
Class "Modules\Mail\Http\Controllers\MailController" does not exist
Hata Sıklığı: 2 kez

✅ Çözüm Önerileri

  • 1. Mail modülünün kurulu olduğunu kontrol et
  • 2. Route'larda kullanılmayan controller referansını temizle
  • 3. composer dump-autoload çalıştır
⏰ Görülme: Nadir (Route yüklenirken)

ℹ️ Bilgi Amaçlı (Düşük Öncelik)

#6 - Symfony Console: Duplicate "quiet" Option
DÜŞÜK
Hata:
An option named "quiet" already exists.
Hata Sıklığı: 2 kez
Sorun: Bir Artisan command'da "quiet" seçeneği iki kez tanımlanmış (muhtemelen parent class'tan inherit edilmiş ve tekrar tanımlanmış).

✅ Çözüm

  • İlgili command dosyasını bul ve duplicate option tanımını kaldır
  • Symfony Console'un base option'larını override etme
#7 - Blog AI: İçerik Çok Kısa (Retry)
DÜŞÜK
Durum: AI'dan gelen blog içeriği beklenen kelime sayısından kısa olduğunda retry yapılıyor.
Örnekler:
• 1227 kelime (beklenen: 1500+)
• 660 kelime (beklenen: 1500+)
• 115 kelime (çok kısa, 3 kez retry)
Değerlendirme: Bu normal bir retry mekanizması. Sorun teşkil etmiyor, AI prompt'ları optimize edilebilir.

📝 Genel Değerlendirme

🎯 Öncelik Sıralaması

  1. 1. Öncelik (Acil):
    • Queue Worker'ları çalıştır (Tüm asenkron işlemler etkileniyor)
    • RealTimeResourceTracker array hatası (Her 5dk log dosyasını şişiriyor)
  2. 2. Öncelik (Önemli):
    • OpenAI SSL hatası (Blog AI özellikleri çalışmıyor)
    • Tenant DB selection hatası (Mega-menu bazen hata veriyor)
  3. 3. Öncelik (Düşük):
    • MailController eksik referans
    • Symfony console duplicate option
📊 Log Dosyası Durumu:
• Central: storage/logs/laravel-2025-12-04.log (1.4 MB)
• Tenant 2 (ixtif): storage/tenant2/logs/tenant-2025-12-04.log
• Queue Health: storage/logs/queue-health.log (178 KB - sürekli restart denemeleri)
• Worker Log: storage/logs/worker.log (1.6 KB)
⚡ Performans Etkisi:
• RealTimeResourceTracker hatası: Log dosyasını gereksiz şişiriyor (günde ~1MB+)
• Queue worker down: Tüm job'lar senkron çalışıyor (performans kaybı)
• OpenAI SSL error: Blog AI generation tamamen durmuş durumda