DBA Günlükleri #5 : Grafana ile SQL Server Threshold ve Alarm Yönetimi

Hüseyin Demir
Devops Türkiye☁️ 🐧 🐳 ☸️
4 min readJun 6, 2019

Merhabalar, geçen yazımda SQL Server Server monitoring çözümü için InfluxDB ve Grafana kullanarak bir çözümün altyapısını kurmuş ve çalışır hale getirmiştik. Yazıyı görmeyenler için linkini aşağı bırakıyorum.

Bu yazımda ise, önceki yazıda hazırladığımız sistem üzerine geliştirmeler yapacağım. SQL Server üzerinde takip edilen KPI’lar için threshold(eşik değeri),alarm ve notification dinamikleri geliştireceğiz. Bu geliştirmeleri yapmadan önce bu kelimelerin anlamını kavramak önemlidir.

Threshold : Takip edilen KPI’ın istenilen seviyenin dışını çıktığını ya da çıkmadığını gösteren eşik değeridir. Yani,

  • KPI : Production veritabanı sunucularında CPU kullanımı %90'ı aşamaz.
  • Threshold : %90

Alarm : KPI’ların belirlenen sınırlar dışına çıktığı durumlara alarm denir.

Grafana Threshold ve Alarm Yapılandırması

Grafana üzerinde threshold yapılandırmak için, takip edilen grafiğin üzerinden yapılandırma menüsü kullanılır.. Bunun için yine bir önceki yazıda uyguladığımız SQL Server dashboard’unu kullanarak threshold yönetimini yapalım.

İlk olarak, grafik menüsünden edit seçeneği ile grafiğin ayarlarına giriş yapılır.

Daha sonrasında, edit menüsünde açılan alarm sekmesi altından yeni bir alarm oluşturarak bu alarma bir threshold değeri girilir. Alarm ilk oluşturulduğunda, Conditions kısmı üzerinden alarmın koşulları belirtilebilir. Burada metric altında çalışan sorguların sonuçlarına göre alarm üretilebilir.

Alarm oluşturmaktan daha önemlisi, alarm diye tabir ettiğimiz kavramın içerisinde neleri barındırdığını bilmemiz gerekiyor. Aslında alarm, içerisinde koşulların ve thresholdların bulunduğu bi nesnedir. Belirli değerlerin belirlenen koşullar altında değerlendirilmesi sonrasında oluşan olumsuz ya da istenmeyen sonuçları alarm olarak değerlendirebiliriz.

Grafana Metric Kavramı

Monitoring alanında metrik, ölçümlenen sayı demektir. Yani, örnek vermek gerekirse sunucu cpu kullanımı bir metriktir.Çünkü sunucunun cpu kullanımı ölçümlenebilir ve somut bir değerdir.

Grafana’da ise metrikler, grafik menüsü altından edit seçeneği sonrası gelen sekmeler arasında mevcuttur. Metrik kısmında, elde edilmek ve yorumlanmak istenen KPI’ın değerini elde etmek için kullanılan sorgular mevcuttur.

Grafana grafikleri edit menüsü altındaki sekmelerin görevleri hakkında daha detaylı bilgi almak için aşağıdaki dökümanları inceleyebilirsiniz. Grafana resmi belgeleri çok açıklayıcı ve görsel açıdan tatmin edici :)

Toparlamak gerekirse, monitoring alanındaki KPI,Metric ve Treshold kavramlarının anlamlarına ve kullanımlarına baktık. Bu kavramların Grafana üzerindeki kullanımlarına bakmaya çalıştık. Daha sonrasında bu kavramlardan üretilebilecek alarmlar olduğu ve bu alarmların hangi koşullar altında çalışması gerektiğini belirlemeye çalıştık.

Benim grafana hakkında genel yorumlarım şu şekilde;

  • Öğrenmesi kolay ve keyifli. Doğrudan step by step diye tabi edilen bir rehbere ihtiyacınız yok. Sadece veri akışını başarılı bir şekilde sağlamanız gerekiyor. Gerisi sizin hangi KPI’ları nasıl monitor etmek istediğinize kalmış.
  • Customize etmeye çok açık ve ihtiyaca uyarlamak mümkün. Grafana üzerinde yapabileceğiniz şeylerde sınırlama çok az. Yani kendi iş ihtiyaçlarınıza uygun formatta ve şekilde grafikler elde etmek mümkün. Ya da, community üzerindeki dashboard kalıpları üzerinden kendinize göre değişiklik yapmanız mümkün. Kullanımı çok esnek ve buda kullanımını arttıran özelliklerden birisi.
  • Birçok farklı data source ile çalışabiliyor. Yani veri kaynağı olarak, SQL Server-PostgreSQL-Prometheus-InfluxDB gibi ürünlerle çalışabiliyor. Bu da sizin data source seçiminde de esnek olmanızı sağlıyor.
  • Alarm yönetimi çok kullanışlı ve esnek. Alarmlar koşulları için birçok farklı kural koymak mümkün. A sunucusunun CPU kullanım değeri %90'ı geçerse VE B sunucusunun CPU kullanım değeri %60'ı geçerse alarm üret diyebiliyoruz.Farklı bir bakış açısı ve ihtiyaca göre A sunucusu %90 CPU kullanırsa ya da B sunucusu %90 CPU kullanırsa alarm üret diyebiliyoruz. Aşağıdaki örnekte, sunuculardan herhangi birinin CPU kullanım değeri %80'i aşarsa alarm üreten bir mekanik kullandım ben.
Grafana Alarm Yönetim Örneği
  • Alarm yönetiminde fonksiyon kullanımı sayesinde farklı türde matematiksel hesaplamalar alarm üretilebilir. Average,sum,max ve min gibi temel matematiksel fonksiyonları sayesinde istenilen değerler farklı şekilde yorumlanabilir ve yine iş ihtiyaçlarınıza uygun kullanılabilir.
Grafana Alarm Koşullarında Fonksiyonlar

Grafana tüm bu esneklikleri ve kullanım kolaylığını sağlamasının yanında tamamiyle açık kaynak bir yazılımdır. Github üzerinden projeye eklenen commitleri ve feature’ları görebilirsiniz.

Alarm ve threshold yönetiminin büyük bölümü çok yoruma açık ve farklı bir şekilde yapılabileceği için sadece temel mantığını aktarmaya çalıştım. Bununla birlikte aslında monitoring alanında kullanılan terimlerin anlamlarını aktarmaya çalıştım. En son olarakta, Grafana ürünün bize sağladığı faydalardan bahsettim. Kullanımı gayet kolay ve çok esnek bir ürün bu nedenle birçok yerde uygulanabilir. En önemli noktalardan birisi ise açık kaynak. Bir sonraki yazımda, SQL Server tarafından sonra PostgreSQL ve HAProxy tarafındaki Grafana çalışmalarımı anlatmaya çalışacağım.

Sevgiler,

Demir.

--

--