Nginx Loglama Nedir?
Nginx, web sunucusu olarak yalnızca web içeriği sunmakla kalmaz, aynı zamanda istemcilerden gelen istekler ve sunucu hataları hakkında ayrıntılı bilgi sağlayan loglama mekanizmaları da sunar. Loglama, web sunucusu yöneticilerinin ve geliştiricilerin, uygulamanın çalışma durumunu izlemelerine, hataları teşhis etmelerine ve performansı artırmalarına olanak tanır. Nginx’teki loglama işlemleri, genellikle iki ana log türünde gerçekleştirilir: erişim logları (access logs) ve hata logları (error logs).
Erişim Logları (access_log)
Erişim logları, Nginx sunucusuna yapılan tüm HTTP isteklerini kaydeder. Bu loglar, istemcilerin IP adresleri, istek zamanları, isteklerin türleri, istenen kaynaklar, yanıt durum kodları ve daha fazlası hakkında bilgi içerir. Erişim loglarının formatı, Nginx konfigürasyon dosyasında belirlenebilir.
Erişim loglarının yapılandırılması için `access_log` direktifi kullanılır. Bu direktif genellikle `http`, `server` veya `location` blokları içinde tanımlanır.
Aşağıda basit bir `access_log` yapılandırması örneği bulunmaktadır:
“`
http {
access_log /var/log/nginx/access.log;
}
“`
Bu örnekte, tüm erişim logları `/var/log/nginx/access.log` dosyasına kaydedilecektir. Log dosyasında hangi bilgilere yer verileceği ise log formatıyla belirlenir. Nginx, varsayılan olarak bir `combined` formatı sunar, ancak özel bir format tanımlamak da mümkündür:
“`
http {
log_format custom ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;
access_log /var/log/nginx/access.log custom;
}
“`
Bu örnekte, `custom` isimli bir log formatı tanımlanmakta ve bu format ile log dosyaları kaydedilmektedir. Tanımlanan format, log kayıtları içinde yer alacak bilgileri özelleştirmeye olanak tanır.
Hata Logları (error_log)
Hata logları, Nginx sunucusunda karşılaşılan hataları kaydeder. Sunucu hataları, isteklerin işlenmesi sırasında meydana gelen sorunlara yönelik ipuçları sunar. Hata loglarını yapılandırmak için `error_log` direktifi kullanılmaktadır. Bu direktifin yerleştirilmesi `http`, `server` veya `location` bloklarında yapılabilir.
Bir `error_log` kullanımı şu şekilde olabilir:
“`
http {
error_log /var/log/nginx/error.log warn;
}
“`
Bu örnekte, Nginx sunucusu `/var/log/nginx/error.log` dosyasına uyarı (warn) seviyesindeki hataları ve üzerindeki tüm hata seviyelerini loglamaktadır. Hata seviyeleri, `debug`, `info`, `notice`, `warn`, `error`, `crit`, `alert` ve `emerg` olarak sıralanır. Bu seviyeler, hangi tür hataların loglanacağını belirlemek için kullanılır. Örneğin, yalnızca kritik hataları loglamak istenirse `error_log /var/log/nginx/error.log crit;` şeklinde yapılandırılabilir.
Log Dosyalarının Yönetimi
Log dosyaları zamanla büyüyebilir ve bu durum disk alanının tükenmesine neden olabilir. Bu nedenle, log dosyalarının boyutunu kontrol altında tutmak amacıyla çeşitli yöntemler uygulanabilir. Genellikle `logrotate` aracı kullanılarak log dosyalarının düzenli olarak döndürülmesi, sıkıştırılması ve eski logların silinmesi sağlanır.
Logrotate yapılandırması, aşağıdaki gibi bir konfigürasyon dosyasında gerçekleştirilebilir:
“`
/var/log/nginx/.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
/usr/sbin/nginx -s reopen
endscript
}
“`
Bu yapılandırmada, her gün log dosyaları döndürülmekte, en fazla 14 sürüm saklanmakta ve eski dosyalar sıkıştırılmaktadır. `postrotate` bölümünde ise Nginx’in log dosyalarını yeniden açması için gerekli komut verilmiştir.
Loglama Performansı
Loglama, performansı etkileyebileceğinden, loglama işlemleri minimumda tutulmalıdır. İstemci istekleri sırasında çok fazla detay kaydı tutulması, disk I/O yükünü artırarak yanıt sürelerini etkileyebilir. Bu nedenle, yalnızca gerekli bilgilerin loglanması, ihtiyaca uygun log formatlarının kullanılması ve hata seviyelerinin doğru seçilmesi performansı artırmak için önemlidir.
Nginx loglama yapılandırması, doğru şekilde yapıldığında sunucu yönetimi ve analiz süreçlerini kolaylaştırabilir. Erişim ve hata logları, sunucunun durumunu izlemek, sorunları çözmek ve performansı optimize etmek amacıyla kritik öneme sahiptir.