Selamlar arkadaşlar bu yazımda sizlere Zabbix 6.0’da Dependent Item kullanarak bir birlerine bağımlı item oluşturma işlemini anlatacağım.
Nedir bu Dependent Item dersek, Zabbix içerisinde oluşturmuş olduğumuz bir Item ile bağlantılı ve bağımlı olan bir Item düşünün. Master Item’ın toplamış olduğu dataları kullanarak, kendi datasını oluşturan bir collector. Yani bir Item’ın değerini diğer Item’ların değerlerine göre hesaplayarak oluşturuyorda diyebiliriz.
Nasıl çalıştığını söylemem gerekirse; Benim örneğimde “vfs.fs.get” Key’i yardımıyla cihazdaki disk bilgilerini alıyorum. Daha sonra oluşturmuş olduğum Master Item’ıma bağımlı, Type olarak Dependent Item olan Count Item’ı oluşturuyorum ve Preprocessing alanından yararlanarak JavaScript ile dataların içerisinde “fsname” geçen alanların uzunluğunu alarak cihazdaki disk ve share alanları sayıyorum. Bu sayede cihazımıda kaç adet HDD ve share alan olduğunu bulabiliyoruz.
İlk olarak Item’larımızı ekleyeceğiz. Ben örneğimde başka bir Item daha ekleyip iki farklı Item oluşturmuş olacağım.
Sistemdostu – Windows HDD Check adında bir Template oluşturdum ve Items alanında HDD Check adından Master Item’ımız olacak yukarıdaki şekildeki gibi bir Item oluşturdum.
Name : HDD Check
Type : Zabbix Agent
Key : vfs.fs.get
Type of information : Text
Olarak ayarladım ve Master Item’ımı ekledim.
Master Item’ımımın çekmiş olduğu Data yukarıda bulunan şekildeki gibidir.
Count adında olan Dependent Item’ımıda ekliyorum.
Name : Count
Type : Dependent Item
Key : Disk_Count
Type of information : Text
Master item : HDD Check Item’ını seçiyoruz.
Daha sonra Preprocessing alanına gidiyoruz ve 1 : JavaScript ve 2: Simple Change ekliyoruz. Burada JS ile disklerin sayısını aldığımı bir kod çalıştırıyoruz. Simple Change ile ise bu kod sonucunda değer dönmesi ya da aynı değer dönmesi durumunun 1 ya da 0 olma durumunu data çıktısı olarak kullanabilmek için ekliyoruz.
JavaScript kodumuzu da ekliyoruz ve Item’ımızı oluşturmak için Add Tuşuna basabiliriz.
JS Komutları :
var m = value.match(/"fsname"/g);
var sayi = m.length;
return sayi;
Komutumuzu açıklamam gerekirse. Içerisinde fsname geçenleri bul ve m değişkenine at. Daha sonra m değişkenin büyüklüğünü bul ve sayi değerine atayarak bu değeri Zabbix’e döndür. Daha sonra Simple Check ile değişiklik olup olmama durumunu aldığımız ve en sonunda bu değer Lastest Data alanında gözükeceği için değerimiz 0 ve ya 1 olacaktır.
En son olarak ise bu Item’ımız için Change Disk Count adında bir Trigger oluşturuyoruz.
Name : Change Disk Count
Severity : High
Expression : last(/Sistemdostu – Windows HDD Check/Disks_Count,#1)>0
OK event generation : None
Allow manual close : işaretlenir.
Burada açıklamam gereken alanlar ise Expression alanında değişen değer 0’dan büyük olursa Trigger’ı tetikle demektir. OK event generation alanında None yapmamızın sebebi eğer değer 0’a eşitlenirse bile Problem’i kapatma demektir ve son olarak Allow manual close alanını işaretlememiz durumunda ise Problem’i elle kapatmamız gerektiği anlamına gelir. Bunu aşağıda göstereceğim.
Monitoring > Problems yolunu izlediğinizde Change Disk Count’u High değeriyle göreceksiniz. Yanındaki Time alanının yanında bulunan kısmı işaretleyip Mass Update tuşuna basınca Update Problem penceresi açılacaktır. Close Problem alanına işaretleyerek elle kapatıp Close ardından Resolve durumuna getirebilirsiniz.
Diğer Item’ımızı ekliyoruz. Bu Min Free Space adında olan Item’ımızla amaçladığımız ise alınan HDD bilgisi içerisindeki Free Space alanını bulmak ve azaldığı durumda uyarı vermektir.
Name : Min Free Space
Type : Dependent Item
Key : Free_Spaces
Type of information : Numeric (unsigned)
Master Item : HDD Check Item’ını seçiyoruz.
Preprocessing alanında 1: JavaScript ekliyoruz ve Parametre alanında değişiklik yapmak için Kalem simgesine tıklıyoruz.
JavaScript kodumuzu da ekliyoruz ve Item’ımızı oluşturmak için Add Tuşuna basabiliriz.
JS Komutları :
var arr = [];
var m = value.match(/\"pfree\":(\d+)/g);
for (var i = 1; i<m.length; i++){
arr.push(parseInt((m[i].match(/(\d+)/g))[0]));
}
Array.prototype.min = function() {
return Math.min.apply(null, this);
};
if (arr.min() == Number.POSITIVE_INFINITY) {
return 100;
} else {
return arr.min();
}
Kodu açıklamam gerekirse pfree değerine sahip tüm hdd’ler de min değere inen her hangi bir hdd için sonuç döndür demek arkadaşlar.
Daha sonra bu Item içinde Free disks space decrease trigger’ı oluşturduk.
Name : Free disks space decrease
Severity : Average
Expression : max(/Sistemdostu – Windows HDD Check/Free_Spaces,#1)<20
Bu şekilde Free Disk değeri 20’nin altında olan cihaz için hata verecektir. Hata açılıp daha sonra alandan gerekli datalar silinerek %20’nin üzerine çıkarttığınızda Free alanı, Problem kapanacaktır.
Dependent Item’ları örnekle anlatmaya çalıştığımda bunları sizlerle paylaşabilirim arkadaşlar. Neden mi bu şekilde bir yol izledim ve HDD bilgilerine baktım derseniz hemen cevaplamak istiyorum. Bu örnek Item’ları Ubuntu ve Windows cihazlarda HDD Check ve NFS Check gibi konularda kullandım arkadaşlar. Bu sayede Map’lediğiniz alanları vs. Kontrol edebilirsiniz. Araştırıp çözüm üretmeye çalışırken bu yolu izledik.
Eğer sizin NFS Check konusunda bilginiz varsa ve bu yazıdaki olaylardan daha kolaysa lütfenn benimlede yorumlar alanından paylaşın ve onuda öğreneyim arkadaşlar.
Umarım yararlı bir yazı olmuştur. Dediğim gibi sorularınızı, görüşlerinizi ve örneklerinizi yorumlar alanından benimle paylaşabilir, ayrıca desteklerinizi göstermek istersenizde YouTube üzerinde SistemDostu kanalımı takip edebilirsiniz arkadaşlar. Herkese kolay gelsin.