Linux ­Kurulu­m ve Y­onetim­i
  • Döküman Hakkında
  • Linux ve GNU'nun Geçmişi
    • CentOS, Debian ve FreeBSD Ana Sürümlerin Farkları
  • Temel Komutlar
    • Temel Terminal Komutları
    • Yardım Dosyaları
    • Dosya İzinleri, Yetkiler, Kullanıcılar ve Gruplar
    • Dosya Düzenleme Araçları
      • nano ve pico
      • vi
    • Sıkıştırılmış Dosyalar
  • Standart Girdi ve Çıktı
    • Standart Çıktı
    • Standart Girdi
    • UNIX Pipeline
    • Olmazsa Olmaz: stdio.h
    • Standart Hata ve File Descriptor
    • Forkbomb
    • Named Pipe
  • Gelişmiş Terminal Komutları
    • Tarih ve Saat Ayarlama
    • Sistem Yükünü İzleme
    • patch ve diff
    • xargs
    • awk ve sed
    • egrep ve Regular Expressions
    • rename
    • Imagemagick ve Görüntü Dosyaları
    • wget
    • Python ile Dosya Sunuculuğu
  • Temel Dağıtımlar
    • RHEL Tabanlı (CentOS, Rocky, Alma)
      • rpm Paketleri
      • DNF Paket Yöneticisi
      • Repo Ayarları
      • Network Ayarları
    • Debian
      • deb Paketleri
      • apt Paket Yöneticisi
      • Repo Ayarları
      • Network Ayarları
    • FreeBSD
      • Ports ve pkg Yönetimi
      • Güncelleme Teknikleri
      • Network Ayarları
    • Arch Linux
      • pacman ve AUR
      • Network Ayarları
    • Ortak Network Dosyaları
  • SSH
    • Uzak Sunucuya Bağlanma
    • sshd Sunucu Ayarları
    • Private ve Public Anahtarlar
    • Güvenli Dosya Aktarımı
    • sshfs
  • Kernel Boot
    • Sunucu Başlangıcına Genel Bakış
    • Çekirdeğin Yüklenmesi ve Boot Seçenekleri
    • Çekirdek Parametreleri
    • Bootloader Nedir?
  • User Space
    • Başlangıç: Init
    • Init Versiyonunu Belirlemek
    • System V
      • Servislerin Yönetimi
      • Çalışma Seviyeleri (Run Levels)
      • Örnek System V Servis Oluşturma
    • systemd
      • Servislerin Yönetimi
      • Birimler ve Birim Tipleri
      • Örnek systemd Servis Oluşturma
    • Acil Durumlar ve Tek Kullanıcı Modu
  • BASH Programlama
    • Döngüler ve Diğer Kontrol Yöntemleri
    • Menüler
  • Log Dosyaları
    • Log İnceleme ve Filtreleme
  • İnternet Servisleri
    • Bir sayfanın İnternetteki Serüveni
    • Nameserver Servisleri
    • Apache
    • PHP-FPM
    • FTP/FTPS/SFTP
      • vsftpd
      • ProFTPD
      • SFTP
      • Komut Satırından ftp Kullanımı
  • Zamanlanmış Görevler
    • crontab
    • at
  • Veritabanı
    • MySQL
      • MySQL Kurulumu
      • MySQL Servisini Çalıştırmak
      • Veritabanı ve Tablo oluşturmak
      • SQL Tablosuna Veri Eklemek
      • Temel SQL Sorgularına Giriş
        • Birinci bölüm
      • mysqldump ile yedekleme
      • Replikasyon teknikleri
      • Yedekleri içeri alma
    • PostgreSQL
      • PostgreSQL Kurulumu
      • Temel Yapılandırma
      • Temel Kullanım
    • MongoDB
      • MongoDB Kurulumu
      • Temel Yapılandırma
      • Temel Kullanım
    • Redis
      • Redis Kurulumu
      • Temel Yapılandırma
      • Temel Kullanım
  • Temel Network Yapılandırması
  • Gelişmiş Network Komutları
    • ip
    • ifconfig
    • route
    • ping
    • traceroute
    • dig
    • nslookup
    • netcat
    • nmap
    • tcpdump
    • Wireshark (Giriş)
    • Bantgenişliği Ölçümü
  • Güvenlik
    • Firewalld
    • IPTables
      • Temel İzinler
      • IP ve Port Engelleme
    • selinux
  • Disk Sistemleri
    • ext
    • zfs
    • lvm
  • RAID
    • RAID Biçimleri
    • Verinin Disklere Yayılması
    • Cache
    • Terimler ve Tavsiyeler
  • Örnek Kurulumlar ve Modern Yaklaşımlar
    • CentOS 7 Tam Sistem Kurulumu (Arşiv)
    • AlmaLinux ile Hosting Ortamı Kurulumu
    • Ubuntu ile Hosting Ortamı Kurulumu
    • Modern Hosting Yaklaşımları (PaaS, Coolify vb.)
  • Konteynerleştirme (Docker / Podman)
  • Yapılandırma Yönetimi (Ansible)
  • İzleme ve Uyarı (Prometheus / Grafana)
  • Nginx Web Sunucusu
  • Kubernetes (Giriş)
  • PCI-DSS ve Linux Sistemleri
  • İndeks
  • Kaynaklar
Powered by GitBook
On this page
  • Geleneksel Log Dosyaları (/var/log)
  • systemd-journald Günlükleri (journalctl)
  1. Log Dosyaları

Log İnceleme ve Filtreleme

Log dosyaları, sistemin işleyişi hakkında değerli bilgiler içerir, ancak genellikle çok büyük olabilirler. İhtiyaç duyulan bilgiyi bulmak için logları etkili bir şekilde incelemek ve filtrelemek önemlidir. Bu bölümde, hem geleneksel metin tabanlı log dosyaları hem de journald günlükleri için yaygın kullanılan araçlar ve teknikler ele alınacaktır.

Geleneksel Log Dosyaları (/var/log)

Bu dosyalar genellikle düz metin formatındadır ve standart komut satırı araçlarıyla işlenebilir.

1. Canlı Takip ve Basit Filtreleme (tail -f | grep)

Bir log dosyasını gerçek zamanlı olarak takip etmek ve belirli anahtar kelimeleri içeren satırları anında görmek için tail -f ve grep kombinasyonu sıkça kullanılır:

# /var/log/syslog dosyasını takip et ve içinde "error" geçen satırları göster (büyük/küçük harf duyarsız)
tail -f /var/log/syslog | grep -i "error"

# /var/log/nginx/access.log dosyasını takip et ve 404 hata kodlarını içeren satırları göster
tail -f /var/log/nginx/access.log | grep ' 404 ' 
  • tail -f: Dosyanın sonunu gösterir ve yeni eklenen satırları sürekli olarak ekrana basar.

  • grep: Standart girdiden gelen satırlar içinde belirtilen kalıbı arar.

2. Regex ile Gelişmiş Filtreleme (grep -E)

Daha karmaşık kalıpları eşleştirmek için grep -E (veya egrep) ile düzenli ifadeler (regular expressions) kullanılır:

# Apache access_log dosyasında belirli bir IP adresinden gelen istekleri bul
grep -E '^192\.168\.1\.10 ' /var/log/apache2/access.log

# auth.log dosyasında başarısız SSH login denemelerini bul
grep -E 'sshd\[[0-9]+\]: Failed password for' /var/log/auth.log

# access_log dosyasından sadece GET isteklerini içeren satırları çıkar
grep -E '^(\S+) (\S+) (\S+) \[.*\] "GET ' /var/log/nginx/access.log

3. Alanlara Göre İşleme (awk)

Log satırları genellikle boşluk veya başka bir ayırıcı ile ayrılmış alanlardan oluşur. awk, bu alanlara göre işlem yapmak için çok güçlü bir araçtır:

# access_log dosyasındaki her satırın ilk alanını (IP adresi) yazdır
tail -n 50 /var/log/nginx/access.log | awk '{print $1}'

# Belirli bir IP adresinden gelen isteklerin sayısını bul
awk '$1 == "192.168.1.10" { count++ } END { print count }' /var/log/nginx/access.log

# 404 hatası veren isteklerin URL'lerini (7. alan) yazdır
awk '$9 == "404" { print $7 }' /var/log/nginx/access.log | head

4. Metin Değiştirme (sed)

Loglar üzerinde basit metin değiştirme veya ayıklama işlemleri için sed kullanılabilir:

# syslog dosyasındaki tüm "WARN" kelimelerini "UYARI" ile değiştir (sadece ekrana basar)
sed 's/WARN/UYARI/g' /var/log/syslog | less

# access_log dosyasından tarih/saat bilgisini çıkar
sed -E 's/^([^ ]+) ([^ ]+) ([^ ]+) \[.*\] (.*)/\1 \4/' /var/log/nginx/access.log | head

systemd-journald Günlükleri (journalctl)

journald, logları yapılandırılmış bir formatta sakladığı için journalctl komutu güçlü filtreleme yetenekleri sunar.

Canlı Takip:

# Tüm günlükleri canlı takip et
sudo journalctl -f

# Belirli bir servisin günlüklerini canlı takip et
sudo journalctl -f -u nginx.service

Filtreleme:

  • Servise Göre (-u):

    sudo journalctl -u sshd.service
  • Önem Derecesine Göre (-p):

    # Sadece hata ve daha kritik mesajları göster
    sudo journalctl -p err 
    
    # Uyarı ve daha kritik mesajları göster
    sudo journalctl -p warning..alert 
  • Zamana Göre (--since, --until):

    sudo journalctl --since "1 hour ago"
    sudo journalctl --since "09:00" --until "10:30"
  • Çekirdek Mesajları (-k):

    sudo journalctl -k
  • Belirli Önyükleme (-b):

    sudo journalctl -b    # Mevcut önyükleme
    sudo journalctl -b -1 # Bir önceki önyükleme
    sudo journalctl --list-boots # Tüm önyüklemeleri listele
  • Meta Veri Alanlarına Göre: journald logları birçok meta veri alanı ile saklar (_PID, _UID, _EXE, _SYSTEMD_UNIT, SYSLOG_FACILITY vb.). Bu alanlara göre filtreleme yapılabilir:

    # Belirli bir PID'ye ait loglar
    sudo journalctl _PID=12345
    
    # Belirli bir çalıştırılabilir dosyaya ait loglar
    sudo journalctl /usr/sbin/sshd
    
    # Belirli bir syslog facility koduna ait loglar
    sudo journalctl SYSLOG_FACILITY=10 # authpriv için
  • Metin Arama (grep ile): journalctl çıktısı metin tabanlı olduğu için grep ile de filtrelenebilir:

    sudo journalctl -u nginx.service | grep "denied"

Logları etkili bir şekilde incelemek, sistem yönetimi ve sorun gidermenin önemli bir parçasıdır. Hem geleneksel araçları hem de journalctl'i bilmek, farklı durumlarla başa çıkmanıza yardımcı olur.

PreviousLog DosyalarıNextİnternet Servisleri

Last updated 1 month ago