PM2 Logları Nasıl Temizlenir? PM2 Log Dosyalarını Güvenli Temizleme
PM2 loglarını temizlemenin en kolay yollarından biri pm2 flush komutudur. Bu komut PM2 tarafından yönetilen uygulamaların mevcut log dosyalarının içeriğini temizlemek için kullanılabilir. Ancak logları temizlemeden önce uygulamada önemli bir hata olup olmadığını kontrol etmek gerekir.
Önce:
pm2 logsardından disk kullanımını kontrol etmek için:
du -sh ~/.pm2/logskullanabilirsiniz.
Loglar gereksiz şekilde büyümüşse:
pm2 flushile temizlenebilir.
PM2 logları nerede bulunur?
PM2 logları varsayılan kullanımda PM2'yi çalıştıran kullanıcının home dizinindeki:
~/.pm2/logsklasöründe bulunabilir.
Örneğin root kullanıcısında bu yol genellikle:
/root/.pm2/logsolabilir.
Başka bir kullanıcı altında çalışan PM2 için farklı bir home dizini kullanılır.
Bu nedenle PM2'yi hangi kullanıcıyla çalıştırdığınız önemlidir.
PM2 log dosyalarının boyutu nasıl kontrol edilir?
Toplam log boyutu:
du -sh ~/.pm2/logsDosyaları boyutlarıyla görmek için:
ls -lh ~/.pm2/logsDaha büyük dosyaları üstte görmek için:
du -ah ~/.pm2/logs | sort -hr | head -30kullanılabilir.
Bu sayede hangi uygulamanın loglarının daha fazla disk alanı tükettiğini görebilirsiniz.
PM2 logları nasıl görüntülenir?
Tüm uygulamaların loglarını görmek için:
pm2 logsBelirli bir uygulamanın loglarını görmek için:
pm2 logs uygulama-adikullanılabilir.
Logları temizlemeden önce özellikle sürekli tekrar eden hata mesajlarını araştırın.
Örneğin uygulama saniyede onlarca kez aynı hatayı yazıyorsa log temizlendikten kısa süre sonra dosyalar tekrar büyüyebilir.
pm2 flush ne yapar?
PM2 tarafından yönetilen mevcut log dosyalarının içeriğini temizlemek için:
pm2 flushkullanılabilir.
İşlem sonrasında:
du -sh ~/.pm2/logsile klasör boyutunu tekrar kontrol edebilirsiniz.
Disk kullanımını doğrulamak için ayrıca:
df -hçalıştırabilirsiniz.
pm2 flush uygulamayı siler mi?
Hayır.
pm2 flush uygulamayı PM2 listesinden kaldırmak için kullanılan bir komut değildir.Ama log kayıtları hata ayıklama açısından önemli olabileceği için gerekli kayıtları incelemeden veya yedeklemeden temizlemek doğru olmayabilir.
Özellikle üretim sunucusunda yaşanan bir sorunu araştırıyorsanız önce logları inceleyin.
PM2 logları neden çok büyür?
En yaygın nedenlerden bazıları:
- Uygulamanın sürekli hata üretmesi
- Çok fazla
console.log kullanılması- Debug loglarının production ortamında açık kalması
- Bot veya yoğun trafik
- Veritabanı bağlantı hatalarının sürekli tekrarlanması
- Uygulamanın restart döngüsüne girmesi
- Log rotation kullanılmaması
olabilir.
Örneğin uygulama veritabanına bağlanamıyor ve her saniye tekrar deniyorsa aynı hata binlerce kez loglanabilir.
Bu durumda yalnızca
pm2 flush kullanmak kalıcı çözüm değildir.Restart döngüsü logları hızla büyütebilir
Uygulama:
başlıyor → hata veriyor → kapanıyor → PM2 yeniden başlatıyor → tekrar hata veriyor
şeklinde bir döngüye girdiyse log dosyaları kısa sürede büyüyebilir.
Kontrol için:
pm2 statuskullanın.
Restart sayısı sürekli artıyorsa:
pm2 logs uygulama-adiile asıl hatayı araştırın.
PM2 logrotate nedir?
Logların sınırsız büyümesini önlemek için PM2 ekosisteminde log rotation kullanılabilir.
Yaygın seçeneklerden biri
pm2-logrotate modülüdür.Kurulum:
pm2 install pm2-logrotateSonrasında modülün durumunu:
pm2 statusüzerinden kontrol edebilirsiniz.
Log rotation kullanmak özellikle uzun süre çalışan production sunucularında manuel olarak sürekli
pm2 flush çalıştırmaktan daha sağlıklı bir yaklaşımdır.pm2-logrotate ne işe yarar?
Log rotation sistemi belirlenen politikalara göre logları döndürmeye yardımcı olur.
Amaç:
- Tek log dosyasının sınırsız büyümesini engellemek
- Eski logları ayırmak
- Gerekirse sıkıştırmak
- Belirli sayıda eski log saklamak
- Diskin loglar nedeniyle dolmasını önlemek
olmalıdır.
Kullanılacak sınırlar sunucunun disk kapasitesine ve log saklama ihtiyacına göre belirlenmelidir.
Log rotation neden önemlidir?
Bir web uygulaması aylarca kesintisiz çalışabilir.
Uygulama her istekte veya işlemde log yazıyorsa birkaç MB ile başlayan dosya zaman içerisinde gigabaytlarca büyüyebilir.
Bu nedenle:
Logları büyüyünce temizlemek yerine büyümelerini baştan kontrol etmek daha doğru yaklaşımdır.
console.log kullanımı disk alanını etkiler mi?
Evet.
Node.js uygulamasında yoğun:
console.log()kullanımı PM2 tarafından log dosyalarına yönlendirilebilir.
Özellikle her HTTP isteğinde, döngü içerisinde veya çok sık çalışan görevlerde log yazılıyorsa ciddi miktarda veri oluşabilir.
Production ortamında yalnızca gerçekten gerekli kayıtların tutulması daha uygundur.
Hata logları ayrı olabilir mi?
PM2 uygulamalarında standart çıktı ve hata çıktısı ayrı log dosyalarına yönlendirilebilir.
Örneğin dosya isimlerinde:
outve:
errorifadeleri görebilirsiniz.
Bir error log çok hızlı büyüyorsa dosyayı temizlemek yerine önce hatanın neden sürekli oluştuğunu belirleyin.
PM2 loglarını manuel olarak rm ile silmek gerekir mi?
Genellikle ilk tercih olmamalıdır.
PM2 aktif olarak dosyalara yazıyor olabilir. Bu nedenle PM2'nin kendi log yönetimini veya uygun rotation yöntemlerini kullanmak daha güvenlidir.
Ayrıca çalışan process'in açık tuttuğu bir dosyayı silmek her zaman disk alanını anında geri kazandırmayabilir.
Silinen log hâlâ disk alanı kullanıyorsa
Linux'ta bir process silinmiş dosyayı açık tutmaya devam edebilir.
Kontrol etmek için:
sudo lsof +L1kullanabilirsiniz.
Burada PM2 veya Node.js tarafından açık tutulan büyük silinmiş dosyalar görünüyorsa ilgili process'in durumu araştırılmalıdır.
Process'i rastgele öldürmek yerine kontrollü müdahale yapılmalıdır.
PM2 logları temizlendi ama disk hâlâ doluysa
Öncelikle:
df -hçalıştırın.
Sonra:
du -sh ~/.pm2/logsile PM2 loglarının gerçekten küçülüp küçülmediğini kontrol edin.
Disk hâlâ doluysa problem başka yerde olabilir.
Örneğin:
-
/var/log- Nginx logları
- PostgreSQL
- Eski backup dosyaları
- Docker
- Upload klasörleri
- Cache dosyaları
disk alanını tüketiyor olabilir.
Farklı kullanıcıların PM2 loglarını unutmayın
Sunucuda PM2 birden fazla kullanıcı tarafından çalıştırılmış olabilir.
Örneğin root hesabındaki:
/root/.pm2ile başka bir kullanıcının:
/home/kullanici/.pm2dizini birbirinden farklıdır.
Bir kullanıcıyla
pm2 flush çalıştırmanız başka kullanıcının PM2 loglarını yönetmeyebilir.Bu nedenle hangi PM2 instance'ının uygulamayı çalıştırdığını doğrulayın.
PM2_HOME değiştirildiyse log yolu farklı olabilir
PM2'nin çalışma dizini özel olarak yapılandırılmışsa varsayılan
~/.pm2 yolu kullanılmayabilir.Bu durumda gerçek PM2 ortamını ve uygulama detaylarını kontrol etmek gerekir.
Varsayılan yolu bulamadığınızda doğrudan klasör oluşturmaya veya rastgele dosya silmeye çalışmayın.
Log temizlemeden önce yedek almak gerekir mi?
Normal, önemsiz loglar için her zaman zorunlu değildir.
Ancak:
- Uygulama çökmüşse
- Güvenlik olayı araştırılıyorsa
- Veri kaybı yaşanmışsa
- Beklenmeyen restart oluşuyorsa
- Production hatası araştırılıyorsa
logları temizlemeden önce ilgili kayıtların kopyasını almak faydalıdır.
Çünkü temizlendikten sonra teşhis için gerekli bilgiler kaybolabilir.
PM2 log temizliği için hızlı sıra
Güvenli bir kontrol sırası şu şekilde olabilir:
1.
df -h ile disk kullanımını kontrol edin.2.
du -sh ~/.pm2/logs ile PM2 loglarının boyutuna bakın.3.
pm2 logs ile mevcut hataları inceleyin.4.
pm2 status ile restart durumunu kontrol edin.5. Gerekli logları yedekleyin.
6. Gerekiyorsa
pm2 flush kullanın.7.
du -sh ~/.pm2/logs ile sonucu kontrol edin.8.
df -h ile açılan disk alanını doğrulayın.9. Logların neden büyüdüğünü bulun.
10. Uzun vadede log rotation yapılandırın.
Sık yapılan hatalar
PM2 logları temizlenirken şu hatalardan kaçınılmalıdır:
- Hata kayıtlarını okumadan logları temizlemek
- Her disk probleminde doğrudan
pm2 flush kullanmak- Uygulamanın neden sürekli log ürettiğini araştırmamak
- Restart döngüsünü görmezden gelmek
- Production ortamında gereksiz debug logları bırakmak
- Farklı kullanıcıların PM2 dizinlerini karıştırmak
- Aktif log dosyalarını rastgele
rm ile silmek- Log rotation yapılandırmamak
Özetle, PM2 loglarını temizlemek için
pm2 flush kullanılabilir, ancak asıl amaç yalnızca mevcut logları silmek olmamalıdır.Sağlıklı bir production sunucusunda önce logların neden büyüdüğü belirlenmeli, gereksiz log üretimi azaltılmalı ve log rotation kullanılarak dosyaların tekrar kontrolsüz şekilde büyümesi engellenmelidir.
