Pardus Linux’ta /etc/logrotate.d/ Sistem Günlüklerinin Sessiz Kahramanı

Pardus Linux’ta sistem, servis ve uygulama günlükleri (log dosyaları) zamanla disk alanını doldurabilir, performans sorunlarına ve hatta servis kesintilerine yol açabilir.

Bu noktada logrotate, günlükleri:

  • döndüren (rotate),

  • sıkıştıran,

  • eskiyenleri silen
    hayati bir sistem aracıdır.

📌 /etc/logrotate.d/ dizini, servislere özel log yönetim kurallarının tutulduğu ana dizindir.


1️⃣ Logrotate Nedir?

logrotate, Linux sistemlerde log dosyalarının:

  • belirli periyotlarda (günlük / haftalık / aylık)

  • otomatik olarak yeniden adlandırılmasını

  • sıkıştırılmasını

  • belirli süreden sonra silinmesini

sağlayan standart araçtır.

📦 Pardus’ta varsayılan olarak kurulu gelir.


2️⃣ /etc/logrotate.d/ Dizininin Rolü

/etc/logrotate.conf → Ana yapılandırma /etc/logrotate.d/ → Servis bazlı kurallar

🔹 /etc/logrotate.conf
Genel ayarları içerir.

🔹 /etc/logrotate.d/
Her servis için ayrı dosyalar bulunur:

DosyaAçıklama
rsyslogSistem logları
apache2Web sunucu logları
sambaSamba paylaşımları
mysqlVeritabanı logları
aptPaket yöneticisi logları
cups-daemonYazıcı logları

📌 En iyi uygulama:

Her servis için ayrı logrotate dosyası


3️⃣ Logrotate Ne Zaman Çalışır?

Pardus’ta logrotate cron ile çalışır:

/etc/cron.daily/logrotate

⏱️ Varsayılan:

  • Günde 1 kez

  • Sessiz ve otomatik

İstersen manuel çalıştırabilirsin:

sudo logrotate -f /etc/logrotate.conf

4️⃣ Temel Logrotate Direktifleri (Altın Liste)

DirektifAçıklama
dailyGünlük döndür
weeklyHaftalık
monthlyAylık
rotate 77 eski dosya sakla
compress.gz sıkıştır
delaycompress1 gün sonra sıkıştır
missingokLog yoksa hata verme
notifemptyBoşsa döndürme
createYeni log oluştur
copytruncateServisi durdurmadan döndür
postrotateDöndürme sonrası komut
prerotateÖncesi komut

5️⃣ Basit Bir Örnek (rsyslog)

/var/log/syslog { daily rotate 14 compress delaycompress missingok notifempty }

🔹 14 gün saklar
🔹 Günlük döndürür
🔹 Sıkıştırır
🔹 Log yoksa hata vermez


6️⃣ 🏫 ETAP 23 & Okul Senaryosu Örneği

🎓 Öğrenci Tahtaları – Daha Kısa Log Saklama

/var/log/syslog { daily rotate 3 compress missingok notifempty }

✔ Disk dolmaz
✔ Gereksiz geçmiş tutulmaz


👨‍🏫 Öğretmen Tahtaları – Daha Uzun Kayıt

/var/log/syslog { daily rotate 14 compress create 640 root adm }

✔ Sorun analizine uygun
✔ Yetki kontrollü


7️⃣ Samba AD Logrotate (ÇOK ÖNEMLİ)

Samba logları hızla büyür:

📁 /var/log/samba/

Örnek TSOMTAL Samba Logrotate Dosyası

/var/log/samba/*.log { daily rotate 7 compress missingok notifempty postrotate systemctl reload smbd nmbd winbind endscript }

📌 postrotate şarttır, aksi halde Samba eski dosyayı kullanmaya devam eder.


8️⃣ LiderAhenk / Ahenk İstemci Logları

/var/log/ahenk/*.log { weekly rotate 4 compress missingok }

✔ 1 ay geçmiş tutulur
✔ Merkezi yönetimde yeterli


9️⃣ Logrotate Test & Hata Ayıklama

🔍 Test Modu (ÖNERİLEN)

sudo logrotate -d /etc/logrotate.conf

👉 Hiçbir şey silmez, sadece simülasyon yapar.

⚠️ Zorla Çalıştırma

sudo logrotate -f /etc/logrotate.conf

🔐 Güvenlik & Performans İpuçları

✅ Logları gereğinden uzun tutma
✅ Öğrenci cihazlarında rotate sayısını düşük tut
✅ Sunucularda compress + rotate yüksek olsun
✅ Büyük servislerde copytruncate yerine postrotate + reload kullan
✅ Disk dolmasını bekleme, önceden önlem al


🧩 TSOMTAL İçin Önerilen Yapı

/etc/logrotate.d/ ├── syslog-student ├── syslog-teacher ├── samba-ad ├── ahenk ├── apache2 ├── mysql

🎯 Okul–kurum log disiplini = sistem sağlığı


📌 Sonuç

/etc/logrotate.d/:

  • Sessiz çalışır

  • Ama diskin dolmamasını sağlar

  • Sistem yöneticisinin en güçlü yardımcısıdır

🧠 “Log yönetimi yoksa, sorun tespiti de yoktur.”


1) Öğrenci–öğretmen otomatik ayıran script (logrotate profili seçtirir)

Amaç: Cihaz Samba AD’de hangi gruptaysa ona göre:

  • /etc/logrotate.d/syslog-student veya

  • /etc/logrotate.d/syslog-teacher
    dosyasını aktif etsin.

A) Logrotate kural dosyalarını oluştur

Öğrenci profili

sudo tee /etc/logrotate.d/syslog-student >/dev/null <<'EOF' /var/log/syslog /var/log/auth.log /var/log/kern.log { daily rotate 3 compress delaycompress missingok notifempty create 640 root adm postrotate systemctl reload rsyslog >/dev/null 2>&1 || true endscript } EOF

Öğretmen profili

sudo tee /etc/logrotate.d/syslog-teacher >/dev/null <<'EOF' /var/log/syslog /var/log/auth.log /var/log/kern.log { daily rotate 14 compress delaycompress missingok notifempty create 640 root adm postrotate systemctl reload rsyslog >/dev/null 2>&1 || true endscript } EOF

B) Seçici script

sudo tee /usr/local/sbin/tsomtal-logrotate-profile >/dev/null <<'EOF' #!/usr/bin/env bash set -euo pipefail # AD tarafındaki grup adlarını kendi yapınıza göre güncelleyin: TEACHER_GROUP="ogretmenler" STUDENT_GROUP="ogrenciler" ACTIVE_LINK="/etc/logrotate.d/tsomtal-syslog" TEACHER_FILE="/etc/logrotate.d/syslog-teacher" STUDENT_FILE="/etc/logrotate.d/syslog-student" log() { echo "[tsomtal-logrotate] $*"; } # 1) Öncelik: cihaz hesabı (hostname$) grup üyeliği (Samba AD + winbind ile) HOSTACC="$(hostname -s)\$" is_in_group() { local group="$1" # wbinfo -r kullanıcı/hesap için grup SID’lerini döndürür; isimlere çeviririz wbinfo -r "$HOSTACC" 2>/dev/null | while read -r sid; do wbinfo --sid-to-name "$sid" 2>/dev/null; done \ | awk -F' ' '{print tolower($1)}' | grep -qx "$(echo "$group" | tr '[:upper:]' '[:lower:]')" } chosen="" # Cihaz öğretmen grubundaysa öğretmen profili (öncelik) if is_in_group "$TEACHER_GROUP"; then chosen="$TEACHER_FILE" elif is_in_group "$STUDENT_GROUP"; then chosen="$STUDENT_FILE" fi # 2) Winbind yoksa / başarısızsa fallback: yerel grup/etiket dosyası # İsterseniz LiderAhenk ile /etc/tsomtal-role dosyası dağıtın (teacher|student) if [[ -z "$chosen" && -f /etc/tsomtal-role ]]; then role="$(tr -d ' \t\r\n' </etc/tsomtal-role | tr '[:upper:]' '[:lower:]')" [[ "$role" == "teacher" ]] && chosen="$TEACHER_FILE" [[ "$role" == "student" ]] && chosen="$STUDENT_FILE" fi # 3) Hâlâ seçilemediyse güvenli varsayılan: öğrenci if [[ -z "$chosen" ]]; then chosen="$STUDENT_FILE" fi # Symlink’i güncelle ln -sf "$chosen" "$ACTIVE_LINK" log "Aktif profil: $(readlink -f "$ACTIVE_LINK")" EOF sudo chmod +x /usr/local/sbin/tsomtal-logrotate-profile

C) Günde 1 kez otomatik çalıştır (systemd timer)

sudo tee /etc/systemd/system/tsomtal-logrotate-profile.service >/dev/null <<'EOF' [Unit] Description=TSOMTAL Logrotate profil seçimi (öğrenci/öğretmen) [Service] Type=oneshot ExecStart=/usr/local/sbin/tsomtal-logrotate-profile EOF
sudo tee /etc/systemd/system/tsomtal-logrotate-profile.timer >/dev/null <<'EOF' [Unit] Description=TSOMTAL Logrotate profil seçimi günlük [Timer] OnCalendar=*-*-* 03:10:00 Persistent=true [Install] WantedBy=timers.target EOF
sudo systemctl daemon-reload sudo systemctl enable --now tsomtal-logrotate-profile.timer sudo /usr/local/sbin/tsomtal-logrotate-profile

Not: wbinfo komutlarının çalışması için ETAP istemcide domain join + winbind düzgün olmalı. Yoksa script otomatik “öğrenci”ye düşer (güvenli varsayılan).


2) Grafana + log izleme mimarisi (okul ağına uygun)

Önerilen (kolay + sağlam) mimari: Loki + Promtail + Grafana

  • Promtail (istemcilerde/ETAP 23): /var/log/* okuyup Loki’ye gönderir

  • Loki (sunucuda): log depolar & sorgular

  • Grafana (sunucuda): dashboard + arama + alarm

Topoloji (TSOMTAL örneği)

  • leader/dc ya da ayrı VM:

    • Grafana (3000/tcp)

    • Loki (3100/tcp)

  • ETAP 23’ler:

    • Promtail agent

ETAP 23’te “etiketleme” (teacher/student + OU/Lab)

Promtail’a label basarsın:

  • role=teacher|student

  • lab=lab1|lab2|ogretmenler_odasi

  • host=<hostname>

Böylece Grafana’da:

  • “Sadece Öğretmen Tahtaları auth.log”

  • “Lab-1’de son 1 saatte network error”
    gibi filtreler çok kolay olur.

Dashboard fikri (hazır panolar)

  • Login / auth başarısız deneme sayısı (auth.log)

  • Samba erişim hataları (var/log/samba)

  • Kernel / touch error (kern.log)

  • Ahenk agent hataları (/var/log/ahenk)

İstersen bir sonraki mesajda ben sana:

  • Loki + Grafana docker-compose (Pardus Server’a uygun)

  • Promtail config (role/lab label’lı)

  • 3 adet hazır dashboard sorgusu (LogQL)
    paket halinde yazayım.


3) Windows Event Log ↔ Linux Log eşleştirme rehberi (pratik tablo)

Aşağıdaki eşleştirme, özellikle AD / giriş-çıkış / güvenlik / paylaşım odaklıdır.

A) Kimlik doğrulama / giriş olayları

Windows Event Log (Security)AnlamLinux karşılığı
4624Başarılı oturum açma/var/log/auth.log “Accepted password/Accepted publickey”
4625Başarısız oturum açmaauth.log “Failed password”
4634Oturum kapatmaauth.log “session closed” (pam/systemd)
4648Farklı kimlik bilgisiyle oturumsudo kayıtları (auth.log) / Kerberos bilet işlemleri
4720Kullanıcı oluşturmaSamba AD DC’de: /var/log/samba/log.samba + samba-tool audit (ayarlarsan)
4726Kullanıcı silmeSamba log + audit
4728/4729Gruba üye ekleme/çıkarmaSamba log + audit

B) Paylaşım / dosya erişimi

WindowsAnlamLinux
5140Paylaşıma erişildiSamba: /var/log/samba/* + full_audit VFS modülü
5145Paylaşımda dosya erişim denetimiSamba full_audit ile dosya bazlı kayıt

Windows’taki 5140/5145 seviyesinde ayrıntı için Samba’da vfs_full_audit önerilir.

C) Sistem / servis / kernel

WindowsAnlamLinux
System log (Service Control Manager)Servis başladı/durdujournalctl -u servis
Kernel-Power 41Ani kapanmajournalctl -b -1 + last -x + syslog
Driver/Device hatalarıSürücü sorunlarıdmesg, kern.log, journalctl -k

D) En iyi pratik: “tek ekranda” izleme

  • Windows tarafını WEF (Windows Event Forwarding) ile topla

  • Linux tarafını Promtail ile Loki’ye gönder

  • Grafana’da iki veri kaynağını birleştir (istersen Windows için de Loki/Promtail benzeri ajan yaklaşımı kurulur)


Yorumlar

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Başlangıç Onarma