Bir sunucuda bir şeyler ters gittiğinde, cevap neredeyse her zaman loglardadır. Loglar; sistemin, servislerin ve uygulamaların ne yaptığını anlatan kayıtlardır. Logları okumayı bilmek, bir sorunu tahmin etmekle teşhis etmek arasındaki farktır. Bu rehberde Linux loglarının nerede tutulduğunu ve nasıl okunacağını açıklıyoruz.
İlgili içerikler: Linux sunucu komutları · systemd servis yönetimi · Sunucu izlemenin temelleri
Linux'ta Loglar Nerede Tutulur?
Geleneksel olarak loglar /var/log/ dizininde düz metin dosyaları halinde tutulur. Modern systemd tabanlı sistemlerde ise loglar ayrıca journal adı verilen yapılandırılmış bir kayıt sisteminde toplanır ve journalctl ile okunur.
| Konum | İçeriği |
|---|---|
/var/log/syslog | Genel sistem olayları (Debian/Ubuntu) |
/var/log/auth.log | Kimlik doğrulama, SSH girişleri, sudo |
/var/log/nginx/ | Nginx erişim ve hata logları |
/var/log/apache2/ | Apache erişim ve hata logları |
journalctl | systemd servislerinin merkezi logları |
journalctl ile Log Okuma
systemd'nin journalctl komutu, log okumanın en güçlü aracıdır. Belirli bir servisi, zaman aralığını veya öncelik düzeyini filtreleyebilirsiniz:
# Belirli bir servisin loglarını gör
journalctl -u nginx
# Logları canlı izle
journalctl -u nginx -f
# Yalnızca son 1 saat
journalctl --since "1 hour ago"
# Yalnızca hata ve üzeri öncelik
journalctl -p err
Düz Metin Loglarını Okuma
/var/log/ altındaki metin dosyalarını okumak için temel komutlar yeterlidir: tail -f dosyayı canlı izler, less sayfa sayfa gösterir, grep ise belirli bir metni veya hatayı arar.
# Nginx hata logunu canlı izle
tail -f /var/log/nginx/error.log
# Erişim logunda 404 hatalarını ara
grep " 404 " /var/log/nginx/access.log
# auth.log'da başarısız SSH girişlerini bul
grep "Failed password" /var/log/auth.log
Loglarla Sorun Tespiti
Bir sorunu loglardan teşhis ederken yöntemli olun: önce ne zaman başladığını belirleyin, sonra o zaman aralığındaki logları inceleyin. Bir servis çöktüyse, çökmeden hemen önceki satırlar genelde nedeni gösterir. Hata mesajını bilmiyorsanız, mesajı olduğu gibi aratmak çoğu zaman doğru yöne götürür.
Log Rotasyonu (logrotate)
Loglar sürekli büyür ve denetlenmezse diski doldurur. logrotate aracı bu yüzden vardır: log dosyalarını düzenli aralıklarla arşivler, sıkıştırır ve eskileri siler. Çoğu dağıtımda logrotate hazır yapılandırılmış gelir; kendi uygulama loglarınız için de bir kural ekleyebilirsiniz.
Sıkça Sorulan Sorular
journalctl logları diski doldurur mu?
journal'ın bir boyut sınırı vardır ve eski kayıtları otomatik temizler. Sınırı /etc/systemd/journald.conf dosyasındaki SystemMaxUse ile ayarlayabilirsiniz.
Log dosyası çok büyük, nasıl açarım?
Büyük dosyaları cat ile açmayın — sistemi yorar. less dosyayı parça parça yükler; tail sonunu, grep ise yalnızca aradığınız satırları getirir.
Uygulama logum nerede?
Uygulamanız systemd servisi olarak çalışıyorsa logları journalctl -u servis-adı ile görünür. Uygulama kendi dosyasına yazıyorsa, bu yol genelde uygulamanın yapılandırmasında tanımlıdır.
KEYDAL hosting çözümleriyle log erişimi ve izleme araçlarıyla sunucunuzda olan biteni her an görün. KEYDAL hosting çözümleri