Ana içeriğe geç

Nginx Loglama ve Log Rotation Yapılandırması

Bu rehberde ne öğreneceksiniz?​

Bu rehber, Nginx loglarının nasıl yapılandırılacağını ve disk taşmasını önlemek için nasıl döndürüleceğini anlatır.
Hata ve erişim kayıtlarını anlamlandırmayı ve logrotate ile otomasyonu öğreneceksiniz.


Teknik Özet​

Ana konu: Nginx loglama ve log rotation
Çözülen problem: Kontrolsüz büyüyen log dosyaları ve yetersiz hata takibi
Kazanım: Daha güvenli, izlenebilir ve sürdürülebilir sunucu yönetimi

İzlenen adımlar:

  1. error_log ve log seviyelerini yapılandırma
  2. access_log ve log_format kullanımını anlama
  3. Loglamayı açma, kapatma ve optimize etme
  4. Manuel log rotation mantığını kavrama
  5. logrotate ile otomatik log yönetimi sağlama

1. error_log Direktifini Anlamak​

Nginx, hata kayıtlarını error_log direktifi ile yönetir.
Bu yapı, sistemdeki sorunları tespit etmeyi kolaylaştırır.

error_log sözdizimi​

error_log /var/log/nginx/error.log error;
  • Bu ayar, error ve üzeri seviyedeki kayıtları dosyaya yazar.

Log seviyeleri​

1. emerg: Sistem çalışamaz durumda

2. alert: Acil müdahale gerekir

3. crit: Kritik hata oluştu

4. error: Bir işlem başarısız oldu

5. warn: Olağandışı ama kritik değil

6. notice: Bilgilendirici olay

7. info: Genel bilgi

8. debug: Ayrıntılı hata ayıklama

  • Belirlenen seviye ve üzeri tüm kayıtlar loglanır.

  • Loglamayı tamamen kapatma

error_log /dev/null crit;
  • Bu yapı, sadece kritik hataları yok sayar.

2. access_log ve HttpLogModule​

  1. access_log, gelen istekleri kayıt altına alır.
  2. Bu direktif, özelleştirilebilir formatlar sunar.
  • log_format tanımı

log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
  • Bu tanım, yaygın kullanılan birleşik log formatını oluşturur.

access_log kullanımı​


access_log /var/log/nginx/access.log combined;
  • Bu ayar, erişim loglarını belirtilen formatla yazar.

Loglamayı kapatma​


access_log off;

  • Bu yöntem, erişim loglarını tamamen devre dışı bırakır.

3. Manuel Log Rotation Mantığı​

  1. Log dosyaları büyüdükçe disk alanı riske girer.
  2. Manuel rotation, dosyaları yeniden adlandırarak çözüm sunar.

Log dosyasını taşıma​


mv /var/log/nginx/access.log /var/log/nginx/access.log.0
  • Bu komut, mevcut logu arşivler.

  1. Nginx’e log yenileme sinyali gönderme

kill -USR1 `cat /var/run/nginx.pid`
  • Bu komut, Nginx’e yeni log dosyasını kullanmasını söyler.

4. logrotate ile Otomatik Log Rotation​

  1. Ubuntu sistemlerde logrotate varsayılan gelir.
  • Nginx için hazır bir rotation dosyası bulunur.

logrotate yapılandırmasını açma​


sudo nano /etc/logrotate.d/nginx
  • Bu dosya, Nginx loglarının ne zaman ve nasıl döneceğini belirler.

Önemli ayarlar​

  1. Günlük rotation yapılır

  2. 52 eski log saklanır

  3. Rotation sonrası Nginx logları yenilenir


postrotate
[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
endscript
  • Bu bölüm, rotation sonrası Nginx’e sinyal gönderir.

Sıkça Sorulan Sorular (SSS)​

1. Loglar çok hızlı büyüyor, ne yapmalıyım? access_log formatını sadeleştirin veya buffer kullanın.

2. debug seviyesi production için uygun mu? Hayır, yalnızca test ortamlarında kullanılmalıdır.

3. logrotate çalışmıyorsa nasıl test ederim? logrotate -d /etc/logrotate.d/nginx komutunu kullanın.

4. Logları farklı diske taşıyabilir miyim? Evet, access_log ve error_log yollarını değiştirebilirsiniz.


Sonuç​

Doğru loglama, sorunları hızlı çözmenizi sağlar. Log rotation ise disk güvenliğini korur. Bu yapı, üretim ortamları için vazgeçilmezdir.

Nginx tabanlı projelerinizi Rabisu Bulut altyapısında güvenle yönetin.