Bugün sizlere SQL Server'da monitoring neden yapıyoruz, monitoring yaparken hangi toollardan faydalanmaktayız gibi konulardan bahsetmek istiyorum.
Monitoring, ingilizcede izleme, gözlemleme anlamında kullanılmaktadır.
Neden Monitoring Yaparız?
Dba'ler, SQL Server'ı anlık ve oluşabilecek sorunlara çözüm üretmek ve server'ın performanslı bir şekilde sürekliliğini sağmak için monitoring yapmaktadır. Monitoring yaparak serverımızın anlık ve geçmiş durumunu izleyebiliriz. Örnek verecek olursak; Kaynak kullanımı, disklerin doluluk oranı, hangi sorgu daha az performans vermekte, nerelerde deadlocklar oluşmuş, veritabanı büyümesi gibi durumları monitoring yaparak kontrol edebilmekteyiz.
Genel olarak her dba, bir veritabanı planlaması yaparken öncelikle hangi iş yükünün ne kadar kaynak kullanması gerektiğini tespit eder ve buna uygun kaynak dağıtımı yapar. Daha sonra server'ın stabil çalıştığı durumu gösteren bir taban değer belirler ve ileride oluşabilecek sorunlara karşı bu değeri karşılaştırarak çözüm üretir. Bunun yanısıra, serverın devamlılığı için önemli olan donanımların takibiyle beraber, gerekli durumda donanım upgradelerini yapmaktadır.
Günümüzde monitoring yapmak için pek çok program mevcut. Ben bugün sizlere Microsoft'un ve SQL Server'ın bize sunmuş olduğu toollarla monitoring işlemlerini nasıl yapıyoruz ondan bahsedeceğim.
Activity Monitor
SQL Server'ın bize sunmuş olduğu bu tool ile serverın anlık ve geçmiş izlemelerini yapabilmekte, kaynak kullanımına, data file okuma yazmalarına, ağır querylere ait bilgileri edinebilmekteyiz. Bunun için view server state iznine sahip olmamız gerekmektedir.
Server üzerine sağ tıkladıktan sonra Activity Monitor seçeneğine basarak bu tool'u açıyoruz.
Karşımıza 6 adet sekme çıkmakta,
Overview
Bu bölümde genel olarak bize bir bilgilendirme yapmaktadır. Burada; işlemci zamanını, bekleyen taskların kaç adet olduğunu, database üzerindeki okuma yazmaları(mb/saniye bazında), gelen query ve batch isteklerinin adedini(saniye bazında) ilgili alanlar üzerinden görebiliyoruz.
Processes
Bu bölümden sessionları takip edebiliyoruz. Session'la ilgili, login name, hangi database üzerinde olduğu, hangi uygulamayı kullandığı, host adı gibi bilgilere ulaşabilmekteyiz. Örneğin bir deadlock oluştuğunda bunu blocked by sekmesi altında deadlock'a neden olan session'ın id'sin hangi session'ın hangi session'ı blokladığı bilgisine ulaşabiliyoruz.Resource Waits
Bu bölümde kaynak kullanımlarıyla ilgili ögeler mevcut. Buffer I/O, Logging, Memory, Network I/O gibi ögelere ait bekleme sürelerini buradan görebiliyoruz.
Data File I/O
Bu bölümde, server'ın data dosyalarının okuma yazmaları(mb/saniye) ve tepki sürelerinin(ms) takibini yapabilmekteyiz.
Recent Expensive Query
Bu kısımda çalışan ağır sorguları görmekteyiz. Sorgunun, dakikada kaç defa çalıştığı, Cpu kullanımı, fiziksel ve mantıksal okumaları, fiziksel yazmaları, hangi database üzerinde olduğu gibi bilgilere ulaşabiliyoruz.
Dynamic Management View ve Functionlar ( DMV/ DMF)
DMV ve DMF'ler SQL Server'ın iç durumuna ait bütün bilgileri içermektedir. Activity Monitordeki değerler de aslında dmv dmf'lerle bağlantılıdır. 2005 öncesinde bu bilgileri izlemek için third party yazılımlar kullanılmaktaydı. Fakat kötü yazılmış bu yazılımlar serverların çökmesine kadar kötü etkiler yaratabiliyordu. SQL Server 2005 ile gelen dynamic management view ve functionlar sayesinde bu yazılımlara gerek kalmadan istenilen performans verileri elde edilebilmektedir.
2 çeşit dmv ve dmf vardır. Bunlar;
- Server bazlı bilgileri barındıran ve view server state izni gerektirenler
- Database bazlı bilgileri barındıran ve view database izni gerektirenlerdir.
Bunlar sys şeması altında tutulmaktadır. Saklı olan resources sistem veritabanında bulunur ve diğer veritabanlarıyla eşleştirilir. Bunlara örnek vermemiz gerekirse;
- sys.dm_exec_% kategorisi altında sys.dm_exec_sessions --Server'a bağlı olan bütün sessionları döndürür.
- sys.dm_os_% kategorisi altında sys.dm_os_performance_counter --İşletim sistemi araçlarını kullanarak sql server performans sayaçlarına erişimi sağlar.
- sys.dm_io% kategorisi altında sys.dm_io_virtual_file_stats -- Veritabanı için dosya I/O istatistiklerini verir.
Çeşitli kombinasyonlarla istediğimiz performans izlemelerini yapabilmekteyiz.
Performance Monitor
Microsoft'un bize sunmuş olduğu performans izleyici sayesinde gerek işletim sistemini gerek sql serverı izleyebilmekteyiz. Performans izleyicisini açmak için windows+r tuşuna bastıktan sonra
perfmon yazmamız yeterlidir.
İlk açılışta Sistem özetiyle birlikte bir açıklama kısmı karşılıyor bizi. Sağ tarafta gördüğünüz gibi İzleme Araçları sekmesinin altında Performans İzleyicisi kısmına basarak buradan olayımıza göre istediğimiz sayaçları ekleyip anlık izlemeler yapabilmekteyiz.
Burda Microsoft'un bize sunduğu sayaçlar harici yüklenen programların da kendine özgü sayaçları olabilmektedir. Örnek verecek olursak SQL Server'ı yüklediğimizde sayaçlara SQL Server'ın çeşitli sayaçları eklenmektedir.
Tekrar sağdaki sekmelere gelecek olursak; İzleme Araçları kısmının altında Veri Toplama Kümeleri sekmesini görüyoruz.Data Collector Sets
Data collector setler kullanıcı tanımlı ve sistem olmak üzere ikiye ayrılmıştır. Sistem üzerinde tanımlı birçok yapılandırma dosyaları bulunmakla beraber bir performance counter görmekteyiz. Performans counter içinde birden çok sayaç barındırarak çalıştırıldığında bizlere bir rapor tutmaktadır. Eğer biz kendi senaryomuza uygun bir performance counter oluşturmak istiyorsak; bunu kullanıcı tanımlı kısmından yeni bir performance counter oluşturabilir ve bunu senaryomuza uygun programlayabilmekteyiz. Bu counterlarla ilgili raporları da Raporlar sekmesi altında görebiliriz.
Keyifli okumalar..
Konu ile alakalı videom:
Hiç yorum yok:
Yorum Gönder