SQL Server izlemesi iki farklı soruya cevap verir. Birincisi “şu anda bir şey bozuldu mu?” sorusudur ve dakikalar içinde haber veren uyarılar gerektirir. İkincisi “yakında bir şey bozulacak mı?” sorusudur ve düzenli kontroller, trendler ve bir baseline gerektirir. Birçok ortamda yalnızca birincisi vardır; ya da hiçbiri yoktur ve sorunlar kullanıcılar telefon ettiğinde fark edilir.
Bu rehberde SQL Server’da neyin anlık uyarıyla izlenmesi gerektiğini, günlük, haftalık ve aylık rutin kontrolleri ve bunların otomasyonunu tek bir kontrol listesinde topluyoruz.
SQL Server ortamınızı 7/24 kim izliyor?
Aryasoft'un kıdemli DBA ekibi ortamınızı 7/24 izler, uyarılara SLA süreleri içinde müdahale eder ve her ay raporlar.
Anlık Uyarı Gerektirenler
Bu olaylar beklemez; gerçekleştiği anda doğru kişiye ulaşmalıdır:
- Servis durması ve yeniden başlaması: Database Engine ya da Agent servisinin beklenmedik şekilde yeniden başlaması.
- Ciddi hatalar: Önem derecesi 17-25 olan hatalar ve disk bozulmasını gösteren 823, 824 ve 825 hataları.
- Disk alanı: Veri, log ve yedek disklerinin belirli bir eşiğin altına düşmesi.
- Log dolması: Transaction log’un dolmak üzere olması ve log’un neden yeniden kullanılamadığı.
- Uzun süren blocking: Bir oturumun belirli bir süreden (örneğin 60 saniye) uzun süre başka oturumları bloklaması.
- Başarısız job’lar: Özellikle yedek, CHECKDB ve kritik ETL job’ları.
- Kaçırılan yedek: Beklenen sürede log ya da full yedek alınmaması.
- Always On: Replikaların senkronizasyonunun bozulması, kuyrukların büyümesi ya da failover.
Hata ve önem derecesi uyarılarının nasıl kurulacağını SQL Server uyarıları rehberimizde ayrıntılı anlatıyoruz. Log’un neden boşaltılamadığını tek sorguyla görebilirsiniz:
SELECT name, log_reuse_wait_desc, recovery_model_desc
FROM sys.databases
WHERE log_reuse_wait_desc NOT IN (N'NOTHING', N'CHECKPOINT');
Uyarı
Her şey için uyarı kurmak, hiçbir şey için uyarı kurmamak kadar tehlikelidir. Günde yüzlerce e-posta gelen bir ekip, gerçek uyarıyı da görmezden gelmeye başlar. Her uyarı için “bu geldiğinde biri bir şey yapmalı mı?” sorusunu sorun; cevap hayırsa o bilgi uyarı değil, rapor olmalıdır.
Günlük Kontroller
Uyarılar kırmızı ışıktır; günlük kontroller ise gösterge panelidir. Bir DBA’nın güne başlarken 15-20 dakikada gözden geçirmesi gerekenler:
- Son 24 saatte başarısız olan job’lar.
- Tüm veritabanlarının son full ve log yedekleri.
- Disk ve dosya boş alanı.
- Error log’daki yeni hatalar ve başarısız login denemeleri.
- Gece boyunca uzun süren sorgular ve deadlock’lar.
- Always On replikalarının durumu.
-- Son 24 saatte başarısız olan job adımları
SELECT j.name AS job_name, h.step_name,
msdb.dbo.agent_datetime(h.run_date, h.run_time) AS run_at,
LEFT(h.message, 300) AS message
FROM msdb.dbo.sysjobhistory AS h
JOIN msdb.dbo.sysjobs AS j ON j.job_id = h.job_id
WHERE h.run_status = 0
AND msdb.dbo.agent_datetime(h.run_date, h.run_time) > DATEADD(DAY, -1, GETDATE())
ORDER BY run_at DESC;
-- Disk boş alanı (veritabanı dosyalarının bulunduğu tüm sürücüler)
SELECT DISTINCT vs.volume_mount_point,
vs.total_bytes / 1073741824.0 AS total_gb,
vs.available_bytes / 1073741824.0 AS free_gb,
CAST(100.0 * vs.available_bytes / vs.total_bytes AS decimal(5, 1)) AS free_pct
FROM sys.master_files AS mf
CROSS APPLY sys.dm_os_volume_stats(mf.database_id, mf.file_id) AS vs
ORDER BY free_pct;
Gece yaşanan deadlock’ları yeni bir izleme kurmadan, varsayılan olarak çalışan system_health Extended Events oturumundan okuyabilirsiniz; ayrıntılar deadlock rehberimizde.
Haftalık Kontroller
- CHECKDB sonuçları: Her veritabanında son başarılı CHECKDB tarihi.
- Bakım işleri: Index ve istatistik bakımının tamamlanıp tamamlanmadığı, süresinin uzayıp uzamadığı.
- Büyüme: Veritabanı ve en büyük tabloların boyutundaki değişim.
- Değişiklikler: Sunucu ayarlarında, job’larda ve şemada (DDL) yapılan değişiklikler.
- Güvenlik: Yeni sysadmin üyeleri, yeni login’ler ve tekrarlayan başarısız giriş denemelerinin kaynak IP’leri.
Aylık Kontroller
- Kapasite trendi: Disk, CPU ve bellek kullanımının ay bazında eğilimi; mevcut hızla diskin ne zaman dolacağı.
- Baseline karşılaştırması: Bekleme istatistiklerinin ve en pahalı sorguların geçen ayla karşılaştırması.
- Yama seviyesi: Yeni cumulative update’ler ve bilinen hatalı build’ler.
- Restore testi: En az bir kritik veritabanının yedekten gerçekten geri dönülerek test edilmesi.
- Yetki gözden geçirmesi: Ayrılan personelin hesapları ve gereğinden geniş yetkiler.
- Rapor: Yönetime ve uygulama ekiplerine kısa bir durum raporu.
İpucu
Restore testi aylık listenin en çok atlanan maddesidir ve en önemlisidir. Yedeğin alınmış olması, ondan dönülebileceği anlamına gelmez. Test sonucunu süresiyle birlikte kaydedin; bu süre gerçek RTO’nuzdur.
Baseline: “Normal” Nedir?
“Sunucu yavaş” şikâyeti geldiğinde ilk soru “neye göre?” olmalıdır. Bekleme istatistiklerini, en pahalı sorguları, CPU ve disk gecikmesini düzenli aralıklarla bir tabloya kaydetmek size bir baseline verir. Sorun anında bugünkü değerleri geçen haftanın aynı saatiyle karşılaştırmak, tahmini tanıya dönüştürür. Query Store, sorgu düzeyinde bu geçmişi veritabanı içinde zaten tutar; açık olduğundan emin olun.
Neleri Otomatikleştirmeli?
İzleme lisansı alınmamış sunucularda bile birkaç basit Agent job’ı büyük fark yaratır:
- Birkaç dakikada bir çalışan isteklerin anlık görüntüsünü bir tabloya yazan ve eski kayıtları temizleyen bir job. “Geçen salı 15.00’te sunucu neden yavaştı?” sorusunu yanıtlamanın en ucuz yolu budur.
- Sunucu ayarlarındaki, job’lardaki ve şemadaki değişiklikleri kaydeden bir job ya da DDL trigger’ı.
- Veritabanı ve tablo boyutlarını haftalık kaydeden bir job.
- Başarısız login denemelerini kaynak IP’leriyle özetleyen günlük bir rapor.
Daha büyük ortamlarda bir izleme platformu ve 7/24 nöbet tutan bir ekip gerekir. Sahada bir kesinti anında ekibimizin ilk baktığı yerler de bu listeye paraleldir: izleme uyarıları, error log, aktif oturumlar, Agent job’ları, kaynak kullanımı, disk gecikmesi ve mantıksal işlemciler arasında CPU dağılımı.
İzleme Kontrol Listesi
- Kritik olaylar için uyarılar kurulu ve doğru kişilere ulaşıyor.
- Database Mail çalışıyor; test e-postası düzenli gönderiliyor.
- Günlük kontroller bir rutin ya da otomatik rapor halinde.
- CHECKDB, yedek ve bakım sonuçları haftalık gözden geçiriliyor.
- Aylık restore testi yapılıyor ve süresi kaydediliyor.
- Bekleme istatistikleri ve büyüme için bir baseline tutuluyor.
İlgili Yazılar
Yönetilen DBA Hizmeti
İzlemeyi ekibinize yük olmaktan çıkarın
Aryasoft’un kıdemli DBA ekibi ortamınızı 7/24 izler, uyarılara SLA süreleri içinde müdahale eder, rutin kontrolleri ve restore testlerini yürütür, her ay anlaşılır bir rapor sunar.