Neden Her Gece Yarısı “Disk %90 Dolu” Diye Uyanmak Zorundayız?

Sistem yöneticilerinin ortak kabusudur: Tam en tatlı uykunuzdasınızdır ve telefonunuz acı acı çalmaya başlar. Ekranı açarsınız, Zabbix’ten bir uyarı: “Disk space is low on server-X (%90.01)”. Hemen bilgisayarı açar, VPN ile sunucuya bağlanır ve bakarsınız ki aslında panik yapacak hiçbir şey yok. Sunucuda 2 Terabaytlık devasa bir disk var ve boşta duran 200 Gigabayt alan, o sunucunun haftalarca sorunsuz çalışması için fazlasıyla yeterli. Ama Zabbix statik kuralına sadık kalmış, %90 sınırını geçtiği an alarmı basmıştır.

Peki hata kimde? Zabbix’te mi, yoksa o trigger’ı oraya öylece bırakan bizlerde mi? Açık konuşalım; varsayılan şablonları (template) olduğu gibi kullanıp hayatına devam eden her sistemci bu acıyı çeker. Geleneksel yüzde bazlı alarmlar, modern ve dinamik altyapılarda artık çalışmıyor. Bize daha akıllı, disk boyutuna göre esneyen ve en önemlisi “gürültü” yapmayan bir yapı lazım.

Klasik “%90 Alarmı” Neden Büyük Bir Yalandır?

Çünkü matematik yalan söylemez ama bizi fena yanıltır. Küçük bir Docker hostu düşünün, 20 GB diski var. %90 doluluğa ulaştığında geriye 2 GB kalır ki bu her an patlamaya hazır bir saatli bombadır. Şimdi bir de 10 TB’lık bir veri tabanı sunucusunu düşünün. Aynı %90 mantığıyla, bu sunucuda 1 TB boş yer varken alarm alırsınız. 1 Terabayt! Bu alanın dolması belki aylar alacak ama siz her gece o alarmı temizlemekle uğraşacaksınız. Bir süre sonra ne olacak biliyor musunuz? Ekip o alarmı kanıksayacak, “Aman, o disk zaten hep böyle” diyecek ve gerçekten disk dolup servis çöktüğünde kimse kılını kıpırdatmayacak. Biz buna monitoring dünyasında “alarm yorgunluğu” diyoruz.

Peki Hem Yüzdeyi Hem de Gerçek Boyutu Nasıl Beraber Takip Edeceğiz?

İşin sırrı, Zabbix’in esnek expression (ifade) yapısında gizli. Tek bir değişkene bağlı kalmak zorunda değiliz. Akıllı bir trigger yapısı, hem yüzde oranını kontrol etmeli hem de kalan ham disk boyutunu (free space) hesaba katmalı. Böylece büyük disklerde gereksiz alarmların önüne geçerken, küçük disklerde de erken uyanmış oluruz.

Zabbix 6.0 ve üzeri sürümlerde bunu tek bir satırda, mantıksal operatörlerle çözebiliyoruz. İşte tam olarak kullanmanız gereken o akıllı mantık:

  • Kural 1: Disk doluluk oranı %90’ın üzerinde olsun…
  • VE
  • Kural 2: Kalan boş alan 10 Gigabayt’tan daha az olsun.

Bu iki şart aynı anda sağlanmadığı sürece Zabbix sessizliğini korur. 10 TB’lık diskinizde %91 doluluk olsa bile boşta 900 GB yer olduğu için telefonunuz çalmaz. Ama 50 GB’lık diskte %91 doluluk yaşandığında (kalan alan 4.5 GB olacağı için) anında uyarı alırsınız. Tam olarak aradığımız adalet bu değil mi?

Bu Akıllı Yapıyı Zabbix’te Nasıl Formüle Ederiz?

Lafı dolandırmadan doğrudan teknik tarafa geçelim. Zabbix üzerinde kullanacağınız trigger ifadesi tam olarak şuna benzemeli. Tabii ki burada kendi makrolarınızı veya Zabbix’in standart metrik anahtarlarını (item keys) kullanabilirsiniz:

last(/Linux by Zabbix agent/vfs.fs.dependent.size[{#FSNAME},pused]) > 90 and last(/Linux by Zabbix agent/vfs.fs.dependent.size[{#FSNAME},free]) < 10G

Burada yaptığımız şey çok basit. Sistemdeki dosya sisteminin (FSNAME) doluluk yüzdesini (pused) kontrol ediyoruz ve hemen arkasına “and” operatörüyle boş alan miktarını (free) bağlıyoruz. Buradaki “10G” değerini kendi yapınıza göre 5G veya 20G olarak güncelleyebilirsiniz. Hatta bunu doğrudan Zabbix arayüzünde global bir makro (örneğin {$DISK.FREE.MIN}) tanımlayarak yönetmek çok daha profesyonel bir yaklaşım olacaktır.

Anlık Dalgalanmaları Engellemek İçin “Trend” Analizini Nasıl Kullanırız?

Diyelim ki harika bir trigger yazdınız. Ancak sunucuda her gün saat 12:00’de çalışan bir yedekleme (backup) scripti var. Bu script çalışırken disk anlık olarak şişiyor, ardından yedek uzak sunucuya aktarılınca disk tekrar boşalıyor. Bu 15 dakikalık süreçte yine boş yere alarm almak istemezsiniz.

Çözüm, anlık verilere bakmak yerine geçmişe, yani trende bakmakta. Zabbix’in forecast fonksiyonu tam olarak bu iş için biçilmiş kaftan. Bu fonksiyon sayesinde Zabbix’e şunu sorabiliyoruz: “Bu diskin son 1 saatteki dolma hızını analiz et ve önümüzdeki 4 saat içinde diskin tamamen dolup dolmayacağını tahmin et.” Eğer tahmin olumluysa alarmı tetikle. Böylece anlık inip çıkan grafikler başınızı ağrıtmaz, sadece istikrarlı bir şekilde felakete sürüklenen sunucular için bildirim alırsınız.

Sistem izleme işi bir sanat gibidir; ne kadar az ve öz gürültü çıkarırsanız, o kadar saygı görürsünüz. Alarmlarınızı bu mantıkla revize ettikten sonra, geceleri telefonunuzu sessize almadan, huzurla uyuyabildiğinizi fark edeceksiniz; sonuçta artık gerçekten bir sorun olduğunda çalacağını biliyorsunuz.

Visited 5 times, 1 visit(s) today

Leave A Comment