yandex metrika
Sunucu Log Analizi Nasıl Yapılır? Sıfırdan Uzmanlığa Rehber - Tecrübe Güncesi
GüvenlikVPS

Sunucu Log Analizi Nasıl Yapılır? Sıfırdan Uzmanlığa Rehber

Konu İçeriği

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

Slow Response Tespiti

Nginx’te $request_time değişkenini log formatınıza eklediyseniz, yavaş istekleri tespit edebilirsiniz. Ben custom log format kullanıyorum ve 2 saniyeden uzun süren istekleri filtreliyorum. Bu sayede hangi URL’lerin yavaş olduğunu bulup optimize ediyorum. Genelde veritabanı sorguları veya büyük dosya yüklemeleri suçlu çıkıyor.

Otomatik Log Analizi Araçları

Manuel komutlar iyi ama sürekli yazmak yorucu. İşte kullanabileceğiniz otomatik araçlar:

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

Slow Response Tespiti

Nginx’te $request_time değişkenini log formatınıza eklediyseniz, yavaş istekleri tespit edebilirsiniz. Ben custom log format kullanıyorum ve 2 saniyeden uzun süren istekleri filtreliyorum. Bu sayede hangi URL’lerin yavaş olduğunu bulup optimize ediyorum. Genelde veritabanı sorguları veya büyük dosya yüklemeleri suçlu çıkıyor.

Otomatik Log Analizi Araçları

Manuel komutlar iyi ama sürekli yazmak yorucu. İşte kullanabileceğiniz otomatik araçlar:

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

HTTP Kodlarına Göre Analiz

awk ‘{print $9}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn komutu size her HTTP kodunun kaç kez döndüğünü gösterir. 200 demek başarılı istek, 404 sayfa bulunamadı, 500 sunucu hatası. Eğer 500 hataları aniden artıyorsa bir şeyler ters gidiyor demektir. Ben bir gün 500 hataların normalin 10 katına çıktığını fark ettim meğer bir PHP güncellemesi sonrası uyumsuzluk çıkmış.

Slow Response Tespiti

Nginx’te $request_time değişkenini log formatınıza eklediyseniz, yavaş istekleri tespit edebilirsiniz. Ben custom log format kullanıyorum ve 2 saniyeden uzun süren istekleri filtreliyorum. Bu sayede hangi URL’lerin yavaş olduğunu bulup optimize ediyorum. Genelde veritabanı sorguları veya büyük dosya yüklemeleri suçlu çıkıyor.

Otomatik Log Analizi Araçları

Manuel komutlar iyi ama sürekli yazmak yorucu. İşte kullanabileceğiniz otomatik araçlar:

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

HTTP Kodlarına Göre Analiz

awk ‘{print $9}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn komutu size her HTTP kodunun kaç kez döndüğünü gösterir. 200 demek başarılı istek, 404 sayfa bulunamadı, 500 sunucu hatası. Eğer 500 hataları aniden artıyorsa bir şeyler ters gidiyor demektir. Ben bir gün 500 hataların normalin 10 katına çıktığını fark ettim meğer bir PHP güncellemesi sonrası uyumsuzluk çıkmış.

Slow Response Tespiti

Nginx’te $request_time değişkenini log formatınıza eklediyseniz, yavaş istekleri tespit edebilirsiniz. Ben custom log format kullanıyorum ve 2 saniyeden uzun süren istekleri filtreliyorum. Bu sayede hangi URL’lerin yavaş olduğunu bulup optimize ediyorum. Genelde veritabanı sorguları veya büyük dosya yüklemeleri suçlu çıkıyor.

Otomatik Log Analizi Araçları

Manuel komutlar iyi ama sürekli yazmak yorucu. İşte kullanabileceğiniz otomatik araçlar:

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

5. journalctl systemd Logları

Modern Linux dağıtımlarında systemd journalctl komutu ile logları sorgulayabilirsiniz. journalctl -u nginx.service –since “1 hour ago” ile son 1 saatte nginx servisinin loglarını görebilirsiniz. systemctl ile yönetilen tüm servisler için bu çalışır. journalctl -f ile gerçek zamanlı takip de mümkün. Ben özellikle servis çökmelerini araştırırken journalctl’yi kullanıyorum.

Sunucu log analizi terminal ekranı

Web Sunucusu Log Analizi Nginx Örneği

Nginx access.log’u altın madenidir. Her HTTP isteğinin detayını içerir: IP, zaman, URL, HTTP kodu, boyut, referer ve user agent. Buradan çok değerli bilgiler çıkarabilirsiniz.

HTTP Kodlarına Göre Analiz

awk ‘{print $9}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn komutu size her HTTP kodunun kaç kez döndüğünü gösterir. 200 demek başarılı istek, 404 sayfa bulunamadı, 500 sunucu hatası. Eğer 500 hataları aniden artıyorsa bir şeyler ters gidiyor demektir. Ben bir gün 500 hataların normalin 10 katına çıktığını fark ettim meğer bir PHP güncellemesi sonrası uyumsuzluk çıkmış.

Slow Response Tespiti

Nginx’te $request_time değişkenini log formatınıza eklediyseniz, yavaş istekleri tespit edebilirsiniz. Ben custom log format kullanıyorum ve 2 saniyeden uzun süren istekleri filtreliyorum. Bu sayede hangi URL’lerin yavaş olduğunu bulup optimize ediyorum. Genelde veritabanı sorguları veya büyük dosya yüklemeleri suçlu çıkıyor.

Otomatik Log Analizi Araçları

Manuel komutlar iyi ama sürekli yazmak yorucu. İşte kullanabileceğiniz otomatik araçlar:

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

5. journalctl systemd Logları

Modern Linux dağıtımlarında systemd journalctl komutu ile logları sorgulayabilirsiniz. journalctl -u nginx.service –since “1 hour ago” ile son 1 saatte nginx servisinin loglarını görebilirsiniz. systemctl ile yönetilen tüm servisler için bu çalışır. journalctl -f ile gerçek zamanlı takip de mümkün. Ben özellikle servis çökmelerini araştırırken journalctl’yi kullanıyorum.

Sunucu log analizi terminal ekranı

Web Sunucusu Log Analizi Nginx Örneği

Nginx access.log’u altın madenidir. Her HTTP isteğinin detayını içerir: IP, zaman, URL, HTTP kodu, boyut, referer ve user agent. Buradan çok değerli bilgiler çıkarabilirsiniz.

HTTP Kodlarına Göre Analiz

awk ‘{print $9}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn komutu size her HTTP kodunun kaç kez döndüğünü gösterir. 200 demek başarılı istek, 404 sayfa bulunamadı, 500 sunucu hatası. Eğer 500 hataları aniden artıyorsa bir şeyler ters gidiyor demektir. Ben bir gün 500 hataların normalin 10 katına çıktığını fark ettim meğer bir PHP güncellemesi sonrası uyumsuzluk çıkmış.

Slow Response Tespiti

Nginx’te $request_time değişkenini log formatınıza eklediyseniz, yavaş istekleri tespit edebilirsiniz. Ben custom log format kullanıyorum ve 2 saniyeden uzun süren istekleri filtreliyorum. Bu sayede hangi URL’lerin yavaş olduğunu bulup optimize ediyorum. Genelde veritabanı sorguları veya büyük dosya yüklemeleri suçlu çıkıyor.

Otomatik Log Analizi Araçları

Manuel komutlar iyi ama sürekli yazmak yorucu. İşte kullanabileceğiniz otomatik araçlar:

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

4. sort ve uniq Tekrarları Sayma

Saldırgan IP’leri bulmak için: awk ‘{print $1}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20. Bu komut her IP’nin kaç istek yaptığını gösterir. Günde 10.000’den fazla istek yapan bir IP varsa, büyük ihtimalle bot. Ben bu listeyi alıp doğrudan Fail2Ban veya CrowdSec’e besliyorum.

5. journalctl systemd Logları

Modern Linux dağıtımlarında systemd journalctl komutu ile logları sorgulayabilirsiniz. journalctl -u nginx.service –since “1 hour ago” ile son 1 saatte nginx servisinin loglarını görebilirsiniz. systemctl ile yönetilen tüm servisler için bu çalışır. journalctl -f ile gerçek zamanlı takip de mümkün. Ben özellikle servis çökmelerini araştırırken journalctl’yi kullanıyorum.

Sunucu log analizi terminal ekranı

Web Sunucusu Log Analizi Nginx Örneği

Nginx access.log’u altın madenidir. Her HTTP isteğinin detayını içerir: IP, zaman, URL, HTTP kodu, boyut, referer ve user agent. Buradan çok değerli bilgiler çıkarabilirsiniz.

HTTP Kodlarına Göre Analiz

awk ‘{print $9}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn komutu size her HTTP kodunun kaç kez döndüğünü gösterir. 200 demek başarılı istek, 404 sayfa bulunamadı, 500 sunucu hatası. Eğer 500 hataları aniden artıyorsa bir şeyler ters gidiyor demektir. Ben bir gün 500 hataların normalin 10 katına çıktığını fark ettim meğer bir PHP güncellemesi sonrası uyumsuzluk çıkmış.

Slow Response Tespiti

Nginx’te $request_time değişkenini log formatınıza eklediyseniz, yavaş istekleri tespit edebilirsiniz. Ben custom log format kullanıyorum ve 2 saniyeden uzun süren istekleri filtreliyorum. Bu sayede hangi URL’lerin yavaş olduğunu bulup optimize ediyorum. Genelde veritabanı sorguları veya büyük dosya yüklemeleri suçlu çıkıyor.

Otomatik Log Analizi Araçları

Manuel komutlar iyi ama sürekli yazmak yorucu. İşte kullanabileceğiniz otomatik araçlar:

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

4. sort ve uniq Tekrarları Sayma

Saldırgan IP’leri bulmak için: awk ‘{print $1}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20. Bu komut her IP’nin kaç istek yaptığını gösterir. Günde 10.000’den fazla istek yapan bir IP varsa, büyük ihtimalle bot. Ben bu listeyi alıp doğrudan Fail2Ban veya CrowdSec’e besliyorum.

5. journalctl systemd Logları

Modern Linux dağıtımlarında systemd journalctl komutu ile logları sorgulayabilirsiniz. journalctl -u nginx.service –since “1 hour ago” ile son 1 saatte nginx servisinin loglarını görebilirsiniz. systemctl ile yönetilen tüm servisler için bu çalışır. journalctl -f ile gerçek zamanlı takip de mümkün. Ben özellikle servis çökmelerini araştırırken journalctl’yi kullanıyorum.

Sunucu log analizi terminal ekranı

Web Sunucusu Log Analizi Nginx Örneği

Nginx access.log’u altın madenidir. Her HTTP isteğinin detayını içerir: IP, zaman, URL, HTTP kodu, boyut, referer ve user agent. Buradan çok değerli bilgiler çıkarabilirsiniz.

HTTP Kodlarına Göre Analiz

awk ‘{print $9}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn komutu size her HTTP kodunun kaç kez döndüğünü gösterir. 200 demek başarılı istek, 404 sayfa bulunamadı, 500 sunucu hatası. Eğer 500 hataları aniden artıyorsa bir şeyler ters gidiyor demektir. Ben bir gün 500 hataların normalin 10 katına çıktığını fark ettim meğer bir PHP güncellemesi sonrası uyumsuzluk çıkmış.

Slow Response Tespiti

Nginx’te $request_time değişkenini log formatınıza eklediyseniz, yavaş istekleri tespit edebilirsiniz. Ben custom log format kullanıyorum ve 2 saniyeden uzun süren istekleri filtreliyorum. Bu sayede hangi URL’lerin yavaş olduğunu bulup optimize ediyorum. Genelde veritabanı sorguları veya büyük dosya yüklemeleri suçlu çıkıyor.

Otomatik Log Analizi Araçları

Manuel komutlar iyi ama sürekli yazmak yorucu. İşte kullanabileceğiniz otomatik araçlar:

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

3. awk Sütun Bazlı İşlem

awk ile log satırlarının belirli sütunlarını çekebilirsiniz. Örneğin Nginx access.log’dan en çok talep edilen URL’leri bulmak için: awk ‘{print $7}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20. Bu komut size en çok erişilen 20 URL’yi verir. Bot saldırısı varsa burada belli olur tek bir URL’ye binlerce istek.

4. sort ve uniq Tekrarları Sayma

Saldırgan IP’leri bulmak için: awk ‘{print $1}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20. Bu komut her IP’nin kaç istek yaptığını gösterir. Günde 10.000’den fazla istek yapan bir IP varsa, büyük ihtimalle bot. Ben bu listeyi alıp doğrudan Fail2Ban veya CrowdSec’e besliyorum.

5. journalctl systemd Logları

Modern Linux dağıtımlarında systemd journalctl komutu ile logları sorgulayabilirsiniz. journalctl -u nginx.service –since “1 hour ago” ile son 1 saatte nginx servisinin loglarını görebilirsiniz. systemctl ile yönetilen tüm servisler için bu çalışır. journalctl -f ile gerçek zamanlı takip de mümkün. Ben özellikle servis çökmelerini araştırırken journalctl’yi kullanıyorum.

Sunucu log analizi terminal ekranı

Web Sunucusu Log Analizi Nginx Örneği

Nginx access.log’u altın madenidir. Her HTTP isteğinin detayını içerir: IP, zaman, URL, HTTP kodu, boyut, referer ve user agent. Buradan çok değerli bilgiler çıkarabilirsiniz.

HTTP Kodlarına Göre Analiz

awk ‘{print $9}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn komutu size her HTTP kodunun kaç kez döndüğünü gösterir. 200 demek başarılı istek, 404 sayfa bulunamadı, 500 sunucu hatası. Eğer 500 hataları aniden artıyorsa bir şeyler ters gidiyor demektir. Ben bir gün 500 hataların normalin 10 katına çıktığını fark ettim meğer bir PHP güncellemesi sonrası uyumsuzluk çıkmış.

Slow Response Tespiti

Nginx’te $request_time değişkenini log formatınıza eklediyseniz, yavaş istekleri tespit edebilirsiniz. Ben custom log format kullanıyorum ve 2 saniyeden uzun süren istekleri filtreliyorum. Bu sayede hangi URL’lerin yavaş olduğunu bulup optimize ediyorum. Genelde veritabanı sorguları veya büyük dosya yüklemeleri suçlu çıkıyor.

Otomatik Log Analizi Araçları

Manuel komutlar iyi ama sürekli yazmak yorucu. İşte kullanabileceğiniz otomatik araçlar:

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

3. awk Sütun Bazlı İşlem

awk ile log satırlarının belirli sütunlarını çekebilirsiniz. Örneğin Nginx access.log’dan en çok talep edilen URL’leri bulmak için: awk ‘{print $7}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20. Bu komut size en çok erişilen 20 URL’yi verir. Bot saldırısı varsa burada belli olur tek bir URL’ye binlerce istek.

4. sort ve uniq Tekrarları Sayma

Saldırgan IP’leri bulmak için: awk ‘{print $1}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20. Bu komut her IP’nin kaç istek yaptığını gösterir. Günde 10.000’den fazla istek yapan bir IP varsa, büyük ihtimalle bot. Ben bu listeyi alıp doğrudan Fail2Ban veya CrowdSec’e besliyorum.

5. journalctl systemd Logları

Modern Linux dağıtımlarında systemd journalctl komutu ile logları sorgulayabilirsiniz. journalctl -u nginx.service –since “1 hour ago” ile son 1 saatte nginx servisinin loglarını görebilirsiniz. systemctl ile yönetilen tüm servisler için bu çalışır. journalctl -f ile gerçek zamanlı takip de mümkün. Ben özellikle servis çökmelerini araştırırken journalctl’yi kullanıyorum.

Sunucu log analizi terminal ekranı

Web Sunucusu Log Analizi Nginx Örneği

Nginx access.log’u altın madenidir. Her HTTP isteğinin detayını içerir: IP, zaman, URL, HTTP kodu, boyut, referer ve user agent. Buradan çok değerli bilgiler çıkarabilirsiniz.

HTTP Kodlarına Göre Analiz

awk ‘{print $9}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn komutu size her HTTP kodunun kaç kez döndüğünü gösterir. 200 demek başarılı istek, 404 sayfa bulunamadı, 500 sunucu hatası. Eğer 500 hataları aniden artıyorsa bir şeyler ters gidiyor demektir. Ben bir gün 500 hataların normalin 10 katına çıktığını fark ettim meğer bir PHP güncellemesi sonrası uyumsuzluk çıkmış.

Slow Response Tespiti

Nginx’te $request_time değişkenini log formatınıza eklediyseniz, yavaş istekleri tespit edebilirsiniz. Ben custom log format kullanıyorum ve 2 saniyeden uzun süren istekleri filtreliyorum. Bu sayede hangi URL’lerin yavaş olduğunu bulup optimize ediyorum. Genelde veritabanı sorguları veya büyük dosya yüklemeleri suçlu çıkıyor.

Otomatik Log Analizi Araçları

Manuel komutlar iyi ama sürekli yazmak yorucu. İşte kullanabileceğiniz otomatik araçlar:

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

2. grep Filtreleme

grep “error” /var/log/nginx/error.log ile sadece error kelimesi geçen satırları filtreleyebilirsiniz. Daha gelişmiş kullanım: grep -i “fail\|error\|critical” /var/log/syslog bu üç kelimenin herhangi birini arar, büyük küçük harf duyarsız. Ben her sabah bu komutu çalıştırıp gece olup biteni kontrol ederim.

3. awk Sütun Bazlı İşlem

awk ile log satırlarının belirli sütunlarını çekebilirsiniz. Örneğin Nginx access.log’dan en çok talep edilen URL’leri bulmak için: awk ‘{print $7}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20. Bu komut size en çok erişilen 20 URL’yi verir. Bot saldırısı varsa burada belli olur tek bir URL’ye binlerce istek.

4. sort ve uniq Tekrarları Sayma

Saldırgan IP’leri bulmak için: awk ‘{print $1}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20. Bu komut her IP’nin kaç istek yaptığını gösterir. Günde 10.000’den fazla istek yapan bir IP varsa, büyük ihtimalle bot. Ben bu listeyi alıp doğrudan Fail2Ban veya CrowdSec’e besliyorum.

5. journalctl systemd Logları

Modern Linux dağıtımlarında systemd journalctl komutu ile logları sorgulayabilirsiniz. journalctl -u nginx.service –since “1 hour ago” ile son 1 saatte nginx servisinin loglarını görebilirsiniz. systemctl ile yönetilen tüm servisler için bu çalışır. journalctl -f ile gerçek zamanlı takip de mümkün. Ben özellikle servis çökmelerini araştırırken journalctl’yi kullanıyorum.

Sunucu log analizi terminal ekranı

Web Sunucusu Log Analizi Nginx Örneği

Nginx access.log’u altın madenidir. Her HTTP isteğinin detayını içerir: IP, zaman, URL, HTTP kodu, boyut, referer ve user agent. Buradan çok değerli bilgiler çıkarabilirsiniz.

HTTP Kodlarına Göre Analiz

awk ‘{print $9}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn komutu size her HTTP kodunun kaç kez döndüğünü gösterir. 200 demek başarılı istek, 404 sayfa bulunamadı, 500 sunucu hatası. Eğer 500 hataları aniden artıyorsa bir şeyler ters gidiyor demektir. Ben bir gün 500 hataların normalin 10 katına çıktığını fark ettim meğer bir PHP güncellemesi sonrası uyumsuzluk çıkmış.

Slow Response Tespiti

Nginx’te $request_time değişkenini log formatınıza eklediyseniz, yavaş istekleri tespit edebilirsiniz. Ben custom log format kullanıyorum ve 2 saniyeden uzun süren istekleri filtreliyorum. Bu sayede hangi URL’lerin yavaş olduğunu bulup optimize ediyorum. Genelde veritabanı sorguları veya büyük dosya yüklemeleri suçlu çıkıyor.

Otomatik Log Analizi Araçları

Manuel komutlar iyi ama sürekli yazmak yorucu. İşte kullanabileceğiniz otomatik araçlar:

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

2. grep Filtreleme

grep “error” /var/log/nginx/error.log ile sadece error kelimesi geçen satırları filtreleyebilirsiniz. Daha gelişmiş kullanım: grep -i “fail\|error\|critical” /var/log/syslog bu üç kelimenin herhangi birini arar, büyük küçük harf duyarsız. Ben her sabah bu komutu çalıştırıp gece olup biteni kontrol ederim.

3. awk Sütun Bazlı İşlem

awk ile log satırlarının belirli sütunlarını çekebilirsiniz. Örneğin Nginx access.log’dan en çok talep edilen URL’leri bulmak için: awk ‘{print $7}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20. Bu komut size en çok erişilen 20 URL’yi verir. Bot saldırısı varsa burada belli olur tek bir URL’ye binlerce istek.

4. sort ve uniq Tekrarları Sayma

Saldırgan IP’leri bulmak için: awk ‘{print $1}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20. Bu komut her IP’nin kaç istek yaptığını gösterir. Günde 10.000’den fazla istek yapan bir IP varsa, büyük ihtimalle bot. Ben bu listeyi alıp doğrudan Fail2Ban veya CrowdSec’e besliyorum.

5. journalctl systemd Logları

Modern Linux dağıtımlarında systemd journalctl komutu ile logları sorgulayabilirsiniz. journalctl -u nginx.service –since “1 hour ago” ile son 1 saatte nginx servisinin loglarını görebilirsiniz. systemctl ile yönetilen tüm servisler için bu çalışır. journalctl -f ile gerçek zamanlı takip de mümkün. Ben özellikle servis çökmelerini araştırırken journalctl’yi kullanıyorum.

Sunucu log analizi terminal ekranı

Web Sunucusu Log Analizi Nginx Örneği

Nginx access.log’u altın madenidir. Her HTTP isteğinin detayını içerir: IP, zaman, URL, HTTP kodu, boyut, referer ve user agent. Buradan çok değerli bilgiler çıkarabilirsiniz.

HTTP Kodlarına Göre Analiz

awk ‘{print $9}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn komutu size her HTTP kodunun kaç kez döndüğünü gösterir. 200 demek başarılı istek, 404 sayfa bulunamadı, 500 sunucu hatası. Eğer 500 hataları aniden artıyorsa bir şeyler ters gidiyor demektir. Ben bir gün 500 hataların normalin 10 katına çıktığını fark ettim meğer bir PHP güncellemesi sonrası uyumsuzluk çıkmış.

Slow Response Tespiti

Nginx’te $request_time değişkenini log formatınıza eklediyseniz, yavaş istekleri tespit edebilirsiniz. Ben custom log format kullanıyorum ve 2 saniyeden uzun süren istekleri filtreliyorum. Bu sayede hangi URL’lerin yavaş olduğunu bulup optimize ediyorum. Genelde veritabanı sorguları veya büyük dosya yüklemeleri suçlu çıkıyor.

Otomatik Log Analizi Araçları

Manuel komutlar iyi ama sürekli yazmak yorucu. İşte kullanabileceğiniz otomatik araçlar:

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

1. tail Son Satırları Görmek

tail -f /var/log/syslog yazdığınızda log dosyasının sonuna eklenen her yeni satırı gerçek zamanlı görürsünüz. Sorun yaşadığınız anda tail -f ile logu izlemeye başlayın. Bu en basit ve en etkili debug yöntemi. BenSSH bağlantısı açıp bir pencerede tail -f çalıştırırım, diğer pencerede sorunu çözmeye çalışırım.

2. grep Filtreleme

grep “error” /var/log/nginx/error.log ile sadece error kelimesi geçen satırları filtreleyebilirsiniz. Daha gelişmiş kullanım: grep -i “fail\|error\|critical” /var/log/syslog bu üç kelimenin herhangi birini arar, büyük küçük harf duyarsız. Ben her sabah bu komutu çalıştırıp gece olup biteni kontrol ederim.

3. awk Sütun Bazlı İşlem

awk ile log satırlarının belirli sütunlarını çekebilirsiniz. Örneğin Nginx access.log’dan en çok talep edilen URL’leri bulmak için: awk ‘{print $7}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20. Bu komut size en çok erişilen 20 URL’yi verir. Bot saldırısı varsa burada belli olur tek bir URL’ye binlerce istek.

4. sort ve uniq Tekrarları Sayma

Saldırgan IP’leri bulmak için: awk ‘{print $1}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20. Bu komut her IP’nin kaç istek yaptığını gösterir. Günde 10.000’den fazla istek yapan bir IP varsa, büyük ihtimalle bot. Ben bu listeyi alıp doğrudan Fail2Ban veya CrowdSec’e besliyorum.

5. journalctl systemd Logları

Modern Linux dağıtımlarında systemd journalctl komutu ile logları sorgulayabilirsiniz. journalctl -u nginx.service –since “1 hour ago” ile son 1 saatte nginx servisinin loglarını görebilirsiniz. systemctl ile yönetilen tüm servisler için bu çalışır. journalctl -f ile gerçek zamanlı takip de mümkün. Ben özellikle servis çökmelerini araştırırken journalctl’yi kullanıyorum.

Sunucu log analizi terminal ekranı

Web Sunucusu Log Analizi Nginx Örneği

Nginx access.log’u altın madenidir. Her HTTP isteğinin detayını içerir: IP, zaman, URL, HTTP kodu, boyut, referer ve user agent. Buradan çok değerli bilgiler çıkarabilirsiniz.

HTTP Kodlarına Göre Analiz

awk ‘{print $9}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn komutu size her HTTP kodunun kaç kez döndüğünü gösterir. 200 demek başarılı istek, 404 sayfa bulunamadı, 500 sunucu hatası. Eğer 500 hataları aniden artıyorsa bir şeyler ters gidiyor demektir. Ben bir gün 500 hataların normalin 10 katına çıktığını fark ettim meğer bir PHP güncellemesi sonrası uyumsuzluk çıkmış.

Slow Response Tespiti

Nginx’te $request_time değişkenini log formatınıza eklediyseniz, yavaş istekleri tespit edebilirsiniz. Ben custom log format kullanıyorum ve 2 saniyeden uzun süren istekleri filtreliyorum. Bu sayede hangi URL’lerin yavaş olduğunu bulup optimize ediyorum. Genelde veritabanı sorguları veya büyük dosya yüklemeleri suçlu çıkıyor.

Otomatik Log Analizi Araçları

Manuel komutlar iyi ama sürekli yazmak yorucu. İşte kullanabileceğiniz otomatik araçlar:

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

1. tail Son Satırları Görmek

tail -f /var/log/syslog yazdığınızda log dosyasının sonuna eklenen her yeni satırı gerçek zamanlı görürsünüz. Sorun yaşadığınız anda tail -f ile logu izlemeye başlayın. Bu en basit ve en etkili debug yöntemi. BenSSH bağlantısı açıp bir pencerede tail -f çalıştırırım, diğer pencerede sorunu çözmeye çalışırım.

2. grep Filtreleme

grep “error” /var/log/nginx/error.log ile sadece error kelimesi geçen satırları filtreleyebilirsiniz. Daha gelişmiş kullanım: grep -i “fail\|error\|critical” /var/log/syslog bu üç kelimenin herhangi birini arar, büyük küçük harf duyarsız. Ben her sabah bu komutu çalıştırıp gece olup biteni kontrol ederim.

3. awk Sütun Bazlı İşlem

awk ile log satırlarının belirli sütunlarını çekebilirsiniz. Örneğin Nginx access.log’dan en çok talep edilen URL’leri bulmak için: awk ‘{print $7}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20. Bu komut size en çok erişilen 20 URL’yi verir. Bot saldırısı varsa burada belli olur tek bir URL’ye binlerce istek.

4. sort ve uniq Tekrarları Sayma

Saldırgan IP’leri bulmak için: awk ‘{print $1}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20. Bu komut her IP’nin kaç istek yaptığını gösterir. Günde 10.000’den fazla istek yapan bir IP varsa, büyük ihtimalle bot. Ben bu listeyi alıp doğrudan Fail2Ban veya CrowdSec’e besliyorum.

5. journalctl systemd Logları

Modern Linux dağıtımlarında systemd journalctl komutu ile logları sorgulayabilirsiniz. journalctl -u nginx.service –since “1 hour ago” ile son 1 saatte nginx servisinin loglarını görebilirsiniz. systemctl ile yönetilen tüm servisler için bu çalışır. journalctl -f ile gerçek zamanlı takip de mümkün. Ben özellikle servis çökmelerini araştırırken journalctl’yi kullanıyorum.

Sunucu log analizi terminal ekranı

Web Sunucusu Log Analizi Nginx Örneği

Nginx access.log’u altın madenidir. Her HTTP isteğinin detayını içerir: IP, zaman, URL, HTTP kodu, boyut, referer ve user agent. Buradan çok değerli bilgiler çıkarabilirsiniz.

HTTP Kodlarına Göre Analiz

awk ‘{print $9}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn komutu size her HTTP kodunun kaç kez döndüğünü gösterir. 200 demek başarılı istek, 404 sayfa bulunamadı, 500 sunucu hatası. Eğer 500 hataları aniden artıyorsa bir şeyler ters gidiyor demektir. Ben bir gün 500 hataların normalin 10 katına çıktığını fark ettim meğer bir PHP güncellemesi sonrası uyumsuzluk çıkmış.

Slow Response Tespiti

Nginx’te $request_time değişkenini log formatınıza eklediyseniz, yavaş istekleri tespit edebilirsiniz. Ben custom log format kullanıyorum ve 2 saniyeden uzun süren istekleri filtreliyorum. Bu sayede hangi URL’lerin yavaş olduğunu bulup optimize ediyorum. Genelde veritabanı sorguları veya büyük dosya yüklemeleri suçlu çıkıyor.

Otomatik Log Analizi Araçları

Manuel komutlar iyi ama sürekli yazmak yorucu. İşte kullanabileceğiniz otomatik araçlar:

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

Sunucum yavaş çalışıyor dediğimde ilk yaptığım şey loglara bakmak olmuştur her zaman. Ama bir süre sonra log dosyaları o kadar büyüyor ki, içinde kayboluyorsunuz. /var/log altında yüzlerce dosya, her biri binlerce satır… Nerden başlayacaksınız? Bu sorunu çözmek için yıllar içinde bir yöntem geliştirdim. Bu yazıda sunucu log analizini sıfırdan anlatacağım hem yeni başlayanlar hem deneyimli yöneticiler için.

Sunucu Logları Nedir ve Nerede Durur?

Linux sistemlerinde loglar /var/log dizininde saklanır. Her servis kendi log dosyasını tutar. En önemli log dosyaları şunlar: syslog (genel sistem mesajları), auth.log (kimlik doğrulama), kern.log (çekirdek mesajları), nginx/access.log ve nginx/error.log (web sunucusu). Ayrıca uygulama bazlı loglar da var örneğin WordPress için PHP error logu, MySQL için slow query logu.

Ben her yeni sunucu kurduğumda ilk iş olarak logrotate ayarlarını kontrol ediyorum. Logrotate, log dosyalarının büyümeye devam etmesini engelleyen sistemdir. Rotasyon yapılmazsa tek bir log dosyası GB’lar alabilir ve diskinizi doldurabilir. Başıma geldi log dosyası 15 GB olunca sunucu disk dolasıya kadar çalıştı ve tüm site çöktü.

Sunucu log izleme dashboard

En Temel Log Analiz Komutları

Log analizine başlarken bilmeniz gereken 5 temel komut var. Bunları öğrenmeden ilerlemeyin çünkü her şey bu komutların kombinasyonuna dayanıyor.

1. tail Son Satırları Görmek

tail -f /var/log/syslog yazdığınızda log dosyasının sonuna eklenen her yeni satırı gerçek zamanlı görürsünüz. Sorun yaşadığınız anda tail -f ile logu izlemeye başlayın. Bu en basit ve en etkili debug yöntemi. BenSSH bağlantısı açıp bir pencerede tail -f çalıştırırım, diğer pencerede sorunu çözmeye çalışırım.

2. grep Filtreleme

grep “error” /var/log/nginx/error.log ile sadece error kelimesi geçen satırları filtreleyebilirsiniz. Daha gelişmiş kullanım: grep -i “fail\|error\|critical” /var/log/syslog bu üç kelimenin herhangi birini arar, büyük küçük harf duyarsız. Ben her sabah bu komutu çalıştırıp gece olup biteni kontrol ederim.

3. awk Sütun Bazlı İşlem

awk ile log satırlarının belirli sütunlarını çekebilirsiniz. Örneğin Nginx access.log’dan en çok talep edilen URL’leri bulmak için: awk ‘{print $7}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20. Bu komut size en çok erişilen 20 URL’yi verir. Bot saldırısı varsa burada belli olur tek bir URL’ye binlerce istek.

4. sort ve uniq Tekrarları Sayma

Saldırgan IP’leri bulmak için: awk ‘{print $1}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20. Bu komut her IP’nin kaç istek yaptığını gösterir. Günde 10.000’den fazla istek yapan bir IP varsa, büyük ihtimalle bot. Ben bu listeyi alıp doğrudan Fail2Ban veya CrowdSec’e besliyorum.

5. journalctl systemd Logları

Modern Linux dağıtımlarında systemd journalctl komutu ile logları sorgulayabilirsiniz. journalctl -u nginx.service –since “1 hour ago” ile son 1 saatte nginx servisinin loglarını görebilirsiniz. systemctl ile yönetilen tüm servisler için bu çalışır. journalctl -f ile gerçek zamanlı takip de mümkün. Ben özellikle servis çökmelerini araştırırken journalctl’yi kullanıyorum.

Sunucu log analizi terminal ekranı

Web Sunucusu Log Analizi Nginx Örneği

Nginx access.log’u altın madenidir. Her HTTP isteğinin detayını içerir: IP, zaman, URL, HTTP kodu, boyut, referer ve user agent. Buradan çok değerli bilgiler çıkarabilirsiniz.

HTTP Kodlarına Göre Analiz

awk ‘{print $9}’ /var/log/nginx/access.log | sort | uniq -c | sort -rn komutu size her HTTP kodunun kaç kez döndüğünü gösterir. 200 demek başarılı istek, 404 sayfa bulunamadı, 500 sunucu hatası. Eğer 500 hataları aniden artıyorsa bir şeyler ters gidiyor demektir. Ben bir gün 500 hataların normalin 10 katına çıktığını fark ettim meğer bir PHP güncellemesi sonrası uyumsuzluk çıkmış.

Slow Response Tespiti

Nginx’te $request_time değişkenini log formatınıza eklediyseniz, yavaş istekleri tespit edebilirsiniz. Ben custom log format kullanıyorum ve 2 saniyeden uzun süren istekleri filtreliyorum. Bu sayede hangi URL’lerin yavaş olduğunu bulup optimize ediyorum. Genelde veritabanı sorguları veya büyük dosya yüklemeleri suçlu çıkıyor.

Otomatik Log Analizi Araçları

Manuel komutlar iyi ama sürekli yazmak yorucu. İşte kullanabileceğiniz otomatik araçlar:

GoAccess Gerçek Zamanlı Dashboard

GoAccess terminal tabanlı bir log analiz aracı. goaccess /var/log/nginx/access.log –log-format=COMBINED yazdığınızda renkli, interaktif bir dashboard açılıyor. Günlük ziyaretçi sayısı, en çok ziyaret edilen sayfalar, 404 hataları, bandwidth kullanımı hepsini gerçek zamanlı görebiliyorsunuz. Kurulumu apt install goaccess ile tek komut. Ben her sunucuma kuruyorum.

Loki + Grafana Profesyonel Seviye

Daha profesyonel bir çözüm istiyorsanız Loki ve Grafana ikilisi harika. Loki logları toplar, Grafana görselleştirir. Birden fazla sunucunuz varsa hepsinin loglarını tek panele toplarsınız. Kurulum biraz teknik ama bir kez ayarlayınca hayatınız değişiyor. Ben 3 sunucumun tüm loglarını tek bir Grafana dashboard’undan izliyorum sabah kahvesini içerken her şeyi tek ekranda görmek muhteşem bir his.

Güvenlik Logları ve Saldırı Tespiti

Log analizi sadece performans için değil, güvenlik için de kritik. SSH brute force saldırılarını tespit etmek için: grep “Failed password” /var/log/auth.log | awk ‘{print $11}’ | sort | uniq -c | sort -rn | head -10. Bu komut en çok başarısız giriş deneyen IP’leri listeler. Eğer listede yabancı IP’ler varsa ve deneme sayısı yüksekse, CrowdSec veya Fail2Ban kurma zamanınız gelmiş demektir.

Benim sunucularımda günde ortalama 2000-3000 başarısız SSH denemesi oluyor. Çoğu Çin ve Rusya’dan. CrowdSec sayesinde %95’i otomatik engelleniyor ama logları yine de düzenli kontrol ediyorum yeni saldırı pattern’leri her zaman çıkabilir.

Log Yönetimi İçin Altın Kurallar

Yılların deneyimiyle öğrendiğim birkaç kuralı paylaşayım. Birincisi: Log tutmayı asla kapatmayın. Bazıları diskten tasarruf için loglamayı kapatıyor bu büyük hata. Sorun çıktığında hiçbir şey olmadan sorunu bulamazsınız. İkincisi: Logları sıkıştırıp arşivleyin. logrotate ile 30 gün sonrası sıkıştırılmalı, 90 gün sonrası silinmeli. Üçüncüsü: Hassas verileri loglamayın. Şifreler, API anahtarları, tokenler bunlar logda olmamalı. GDPR ve KVKK açısından da riskli.

MySQL Slow Query Logu Veritabanı Performans İçin

Web siteniz yavaşsa suçlu genelde veritabanıdır. MySQL slow query logu, belirli bir süreden uzun süren sorguları kaydeder. my.cnf dosyasında slow_query_log = 1 ve long_query_time = 2 ayarlayın. Artık 2 saniyeden uzun süren her sorgu /var/log/mysql/slow.log dosyasına yazılacak. Bu logu analiz ederek hangi sorguların optimize edilmesi gerektiğini bulabilirsiniz.

Ben bir WordPress sitesinde slow query logu açtığımda shock olmuştum. wp_options tablosuna yapılan bir sorgu 15 saniye sürüyordu. Sebep: autoload edilen 2 MB değerindeki bir transient. Temizledikten sonra site hızından %40 artış oldu. Log analizinin gücü işte burada görünmez sorunları görünür kılar.

E-posta Logları ve Teslimat Sorunları

Sunucunuzdan e-posta gönderiyorsanız, mail loglarını da takip etmeniz gerekiyor. Postfix kullanıyorsanız /var/log/mail.log dosyasına bakın. E-postaların karşı tarafa ulaşmadığı durumlarda burada bounce ve defer mesajları göreceksiniz. SPF, DKIM ve DMARC kayıtları düzgün yapılandırılmamışsa e-postalarınız spam klasörüne düşüyor veya reddediliyor. Bu logları analiz ederek e-posta teslimat sorunlarını çözebilirsiniz.

Sonuç

Sunucu log analizi zor değil birkaç komut öğrendikten sonra routine bir iş haline geliyor. Benim önerim: tail, grep, awk, sort ve uniq komutlarını öğrenin. GoAccess kurun ve haftada bir loglarınıza göz atın. Birden fazla sunucunuz varsa Loki+Grafana kurun. Loglarınız sizi yanıltmaz her şey orada yazıyor, sadece okumasını bilmeniz gerekiyor.

Benim rutinim şu: Pazartesi sabahı GoAccess ile haftalık özete bakıyorum. Çarşamba crowdsec dashboard’dan güvenlik raporu alıyorum. Cramer günü MySQL slow query logu kontrol ediyorum. Toplam 30 dakika sürüyor ama sorunları büyümeden yakalamamı sağlıyor. Siz de kendi rutininizi oluşturun log analizi bir kerelik değil, sürekli bir alışkanlık olmalı.

Siz sunucu loglarınızı ne sıklıkla kontrol ediyorsunuz? Hangi araçları kullanıyorsunuz? Yorumlarda konuşalım.

Türkay

Teknoloji, bilgisayar güvenliği, WordPress ve yapay zeka konularında içerik üreten Tecrübe Güncesi'nin editörü. Linux sistem yönetimi, ağ güvenliği ve web geliştirme alanlarında yılların getirdiği tecrübeye sahip. 2015'ten bu yana Türkçe teknoloji içerikleri üreterek okuyuculara yol göstermeyi hedefliyor.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


Başa dön tuşu