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.