Celil Uyanikoglu

Linux Log Dosyaları: Sistem Kayıtları Rehberi

Celil Uyanikoglu Celil Uyanikoglu · 24 Nis 2026 · 7 dk okuma

Linux sistemlerde hata ayıklama ve sorun gidermenin temeli log dosyalarıdır. Sistem ne yaptı, hangi hata oluştu, kim ne zaman giriş yaptı - tüm bu bilgiler log kayıtlarında tutulur. Log dosyalarını okumak ve yorumlamak her sistem yöneticisinin bilmesi gereken temel beceridir.

Log Dosyaları Nedir?

Log (günlük) dosyaları, sistemin ve uygulamaların etkinliklerini kronolojik sırayla kaydettiği dosyalardır. Her önemli olay - servis başlangıcı, hata mesajı, kullanıcı girişi - bu dosyalara yazılır.

Log dosyaları sorun gidermede kritik rol oynar. Bir şey çalışmadığında ilk bakılacak yer log dosyalarıdır.

/var/log Dizini

Linux'ta log dosyalarının büyük çoğunluğu /var/log dizininde bulunur. Bu dizin sistemin hafızasıdır.

ls -la /var/log

Temel Log Dosyaları

/var/log/syslog veya /var/log/messages: Genel sistem mesajları. Dağıtıma göre isim değişir; Debian/Ubuntu'da syslog, RHEL/CentOS'ta messages kullanılır.

/var/log/auth.log veya /var/log/secure: Kimlik doğrulama kayıtları. Giriş denemeleri, sudo kullanımı, SSH bağlantıları burada kayıtlıdır.

/var/log/kern.log: Çekirdek mesajları. Donanım sorunları ve sürücü hataları burada görünür.

/var/log/dmesg: Önyükleme sırasındaki çekirdek mesajları. Donanım algılama sorunlarında faydalıdır.

/var/log/boot.log: Sistem başlangıç mesajları.

/var/log/cron: Zamanlanmış görev kayıtları.

/var/log/mail.log: E-posta sunucusu kayıtları.

/var/log/apache2/ veya /var/log/httpd/: Web sunucusu kayıtları.

/var/log/mysql/: Veritabanı kayıtları.

Uygulama Logları

Uygulamalar genellikle /var/log altında kendi dizinlerini oluşturur:

/var/log/nginx/ /var/log/postgresql/ /var/log/apt/

Log Dosyası Okuma

tail Komutu

En sık kullanılan log okuma aracı. Dosyanın son satırlarını gösterir.

Son 20 satır:

tail -20 /var/log/syslog

Canlı takip (yeni satırlar anlık görünür):

tail -f /var/log/syslog

Birden fazla dosyayı takip:

tail -f /var/log/syslog /var/log/auth.log

head ve cat

Dosyanın başını okuma:

head -50 /var/log/syslog

Tüm dosyayı okuma (büyük dosyalarda dikkatli):

cat /var/log/syslog

less ile Sayfalama

Büyük dosyalarda gezinme:

less /var/log/syslog

less içinde:

  • Boşluk: Sonraki sayfa
  • b: Önceki sayfa
  • /kelime: Arama
  • n: Sonraki sonuç
  • q: Çıkış
grep ile Filtreleme

Belirli kalıpları arama:

grep "error" /var/log/syslog grep -i "failed" /var/log/auth.log

-i: Büyük/küçük harf duyarsız -v: Eşleşmeyenleri göster -c: Eşleşme sayısı

Birden fazla dosyada arama:

grep -r "ssh" /var/log/

Systemd ve Journald

Modern Linux dağıtımları systemd kullanır. Systemd'nin log sistemi journald'dir. Debian 12'den itibaren geleneksel syslog yerine journald varsayılan oldu.

Journald Özellikleri

Binary format: Daha hızlı arama ve filtreleme. Metadata: Her mesajla birlikte kaynak, öncelik, zaman damgası saklanır. Boot takibi: Her önyükleme ayrı izlenebilir.

Log dosyaları iki konumda saklanır:

/var/log/journal/: Kalıcı depolama (persistent). Sistem yeniden başlasa da loglar korunur.

/run/log/journal/: Geçici depolama (volatile). Yeniden başlatmada silinir.

journalctl Komutu

Systemd loglarını okumak için journalctl kullanılır.

Temel Kullanım

Tüm loglar:

journalctl

Son satırlardan başla:

journalctl -e

Sayfalama olmadan:

journalctl --no-pager

Zaman Filtresi

Bugünkü loglar:

journalctl --since today

Belirli tarih aralığı:

journalctl --since "2025-01-15 10:00" --until "2025-01-15 12:00"

Son bir saat:

journalctl --since "1 hour ago"

Dün:

journalctl --since yesterday --until today

Boot Filtreleme

Mevcut önyükleme:

journalctl -b

Önceki önyükleme:

journalctl -b -1

Tüm boot oturumlarını listele:

journalctl --list-boots

Servis Filtreleme

Belirli servisin logları:

journalctl -u nginx.service journalctl -u sshd.service

Birden fazla servis:

journalctl -u nginx -u php-fpm

Öncelik Filtreleme

Öncelik seviyeleri 0-7 arasında:

0 (emerg): Sistem kullanılamaz 1 (alert): Acil müdahale gerekli 2 (crit): Kritik durumlar 3 (err): Hatalar 4 (warning): Uyarılar 5 (notice): Normal ama önemli 6 (info): Bilgilendirme 7 (debug): Hata ayıklama

Hata ve üzeri:

journalctl -p err

Uyarı ve üzeri:

journalctl -p warning

Çekirdek Mesajları

Sadece kernel logları:

journalctl -k

Canlı Takip

Yeni mesajları anlık göster:

journalctl -f

Belirli servis için:

journalctl -u nginx -f

Çıktı Formatı

JSON formatı:

journalctl -o json-pretty

Kısa format:

journalctl -o short

Detaylı format:

journalctl -o verbose

rsyslog

Geleneksel log sistemi rsyslog hala yaygın kullanılır. Journald ile birlikte çalışabilir.

Yapılandırma

Ana dosya: /etc/rsyslog.conf

Uygulama ayarları: /etc/rsyslog.d/ dizini

rsyslog kuralları facility (kaynak) ve severity (önem) kombinasyonuna göre mesajları yönlendirir.

Örnek kural:

auth,authpriv. /var/log/auth.log .;auth,authpriv.none /var/log/syslog kern. /var/log/kern.log

Log Rotation

Log dosyaları sürekli büyür. Disk dolmasını önlemek için düzenli döndürme (rotation) yapılır. logrotate bu işi otomatik yapar.

logrotate Yapılandırması

Ana dosya: /etc/logrotate.conf

Uygulama ayarları: /etc/logrotate.d/ dizini

Örnek Yapılandırma

/var/log/myapp/*.log { daily rotate 7 compress delaycompress missingok notifempty dateext create 640 root adm postrotate /usr/bin/systemctl reload myapp endscript }

Direktifler

daily/weekly/monthly: Döndürme sıklığı. rotate 7: Kaç eski kopya tutulacak. compress: Eski logları sıkıştır. delaycompress: Son döndürülen dosyayı sıkıştırma (sorun giderme için). missingok: Dosya yoksa hata verme. notifempty: Boş dosyayı döndürme. dateext: Dosya adına tarih ekle. create: Yeni dosya izinleri. postrotate: Döndürme sonrası çalışacak komut.

Test

Yapılandırmayı test etme (değişiklik yapmaz):

sudo logrotate -d /etc/logrotate.conf

Manuel çalıştırma:

sudo logrotate -f /etc/logrotate.conf

Durum dosyası:

cat /var/lib/logrotate/status

Pratik Örnekler

SSH Başarısız Girişleri Bulma

grep "Failed password" /var/log/auth.log journalctl -u sshd | grep "Failed"

Belirli IP'den girişler:

grep "192.168.1.100" /var/log/auth.log

Sistem Hatalarını Bulma

Son 24 saatteki hatalar:

journalctl -p err --since "24 hours ago"

Servis hatası:

journalctl -u nginx -p err

Disk Dolan Sunucuda Log Temizleme

En büyük log dosyalarını bul:

du -sh /var/log/* | sort -rh | head -10

Eski journal loglarını temizle:

sudo journalctl --vacuum-time=7d sudo journalctl --vacuum-size=500M

Önyükleme Sorunlarını İnceleme

dmesg | grep -i error journalctl -b -1 -p err

Web Sunucu Logları

Apache erişim logları:

tail -f /var/log/apache2/access.log

404 hatalarını bul:

grep " 404 " /var/log/nginx/access.log

En çok istek yapan IP'ler:

awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10

Log İzleme İpuçları

Düzenli kontrol edin: Her gün en azından auth.log ve syslog'a göz atın.

Alertler kurun: Belirli hata kalıpları için bildirim sistemleri oluşturun.

Merkezi log toplama: Birden fazla sunucu varsa logları merkezi sisteme gönderin (ELK Stack, Graylog, Loki).

Disk alanını izleyin: Log dosyaları disk doldurabilir, rotation düzgün çalışmalı.

Zaman damgalarına dikkat: Farklı sistemlerde saat farkı sorun gidermeyi zorlaştırır.

Güvenlik

Log dosyaları hassas bilgi içerebilir. Erişim izinlerini kontrol edin:

ls -la /var/log/auth.log

Loglar genellikle root veya adm grubuna ait olmalı. Normal kullanıcılar auth.log'u okuyamamalı.

Sonuç

Log dosyaları Linux sistem yönetiminin vazgeçilmez parçasıdır. Sorun gidermenin ilk adımı her zaman log kontrolüdür.

Modern sistemlerde journalctl kullanımı öne çıkıyor. Güçlü filtreleme özellikleri ve metadata desteğiyle sorun tespiti kolaylaşıyor.

tail -f ile canlı takip, grep ile filtreleme, journalctl ile sistemd logları - bu üç araç günlük işlerin çoğunu karşılar. Log rotation ayarlarını ihmal etmeyin, disk dolan sunucu baş ağrısıdır.

0 Yorum

Yorum Yaz