Zabbix "Calculated Item" İşlemi
Tags: zabbix, calculate, item, snmp
Published: 2024-04-29 10:14:03

# Giriş
## Zabbix Nedir?

Zabbix, çeşitli ağ cihazları, sunucular ve diğer IT bileşenleri üzerinde gerçek zamanlı izleme sağlayan açık kaynaklı bir yazılımdır. Zabbix, performans metriklerini toplar, veri işler ve sistem yöneticilerine potansiyel sorunları erkenden belirlemeleri için uyarılar gönderir. Bu platform, geniş ölçeklenebilirliği ve esnek yapılandırma seçenekleri ile büyük ve karmaşık IT altyapılarını desteklemek için idealdir.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zr5x4p39l65q0r20snk4.png)


## IT Altyapılarının İzlenmesinde Zabbix'in Rolü

IT altyapısının sürekli izlenmesi, iş sürekliliği ve verimliliğin sağlanması açısından kritik bir öneme sahiptir. Zabbix, sistem sağlığı, ağ trafiği, sunucu yükü ve daha fazlası gibi kritik parametreleri izleyerek IT ekiplerine derinlemesine bir görünüm sunar.

## Hesaplama İşlemleri ve Özel Fonksiyonların Zabbix'deki Önemi

Zabbix'in güçlü yanlarından biri, veriler üzerinde karmaşık hesaplamalar yapma ve özel izleme senaryoları oluşturma yeteneğidir. Kullanıcılar, mevcut metriklerden yeni anlamlar çıkarmak için özel fonksiyonlar ve hesaplamalar tanımlayabilirler. Bu fonksiyonlar sayesinde, daha önce belirlenmiş kriterlere göre otomatik olarak tetiklenen uyarılar ve eylemler mümkün hale gelir. 
- Örneğin, ağ trafiği belirli bir eşiği aştığında ya da disk kullanımı beklenenden daha hızlı arttığında sistem otomatik olarak uyarı verebilir. Bu tür özelleştirilmiş hesaplamalar, IT ekiplerinin proaktif bir şekilde yönetim yapmalarını ve potansiyel sorunları daha büyük sorunlar haline gelmeden önce çözmelerini sağlar.

Biz bu yazımızda daha çok özel fonksiyonlar ve hesaplamalar kısmına odaklanacağız.

# Zabbix Hesaplama Fonksiyonları

Zabbix, IT altyapısının durumunu anlamak için çeşitli hesaplama fonksiyonları sunar. Bu fonksiyonlar, toplanan veriler üzerinde matematiksel işlemler yaparak, metriklerin anlamını ve kullanımını derinleştirir. İşte Zabbix'de sıklıkla kullanılan temel hesaplama fonksiyonları ve kullanım alanları:

## Ortalama (avg)
avg fonksiyonu, belirlenen bir zaman aralığında bir ölçümün ortalama değerini hesaplar. Bu fonksiyon, performans metriklerinin uzun vadeli trendlerini değerlendirmek için kullanılır. Örneğin, bir sunucunun CPU kullanımı üzerinden ortalama değeri hesaplayarak, yüksek yük altında kalan zamanları tespit etmek mümkün olur.

```
avg("system.cpu.load[percpu,avg1]", "1h")
```

## Maksimum (max)

max fonksiyonu, belirli bir dönem içinde kaydedilen maksimum değeri bulur. Bu, sistem üzerindeki pik yükleri, en yüksek ağ trafiğini veya disk kullanımını belirlemek için faydalıdır. Maksimum değerler, kapasite planlaması ve potansiyel performans sıkıntılarını öngörme açısından önemlidir.

```
max("net.if.in[eth0]", "1d")
```

## Minimum (min)
min fonksiyonu, belirli bir süre zarfında alınan en düşük değeri hesaplar. Bu fonksiyon, sistem kaynaklarının az kullanıldığı zamanları belirlemek için kullanılır. Özellikle gece saatlerindeki düşük kullanım gibi düzenleri tespit etmek için idealdir.

```
min("vm.memory.size[available]", "1w")
```

## Sayım (count)
count fonksiyonu, belirli bir koşulu karşılayan öğelerin sayısını hesaplar. Örneğin, bir hata durumunun kaç kez meydana geldiğini veya belirli bir eşiği aşan olayların sayısını belirlemek için kullanılır. Bu, sık sık ortaya çıkan sorunları ve sistem üzerindeki anormal davranışları belirlemede yardımcı olur.

```
count("trapper.items", "error", "1d")
```

Bu fonksiyonlar, Zabbix kullanıcılarına geniş bir esneklik sağlar ve farklı senaryolara göre özelleştirilebilir uyarılar ve raporlar oluşturmak için temel teşkil eder. Etkili bir izleme stratejisi, bu tür fonksiyonların bilinçli kullanımı ile pekiştirilir.

# Örnek: Bellek Oranı için Calculate Oluşturulması

Kullanılan bellek oranını hesapladığımız bir örnek yapacağız.
Öncelikle kullandığım OID'ler şu şekilde:
```
sysadmin@sysadmin:~$ snmpwalk -v2c -c public 192.168.10.2 1.3.6.1.4.1.9.9.48.1.1.1.6
iso.3.6.1.4.1.9.9.48.1.1.1.6.1 = Gauge32: 329978168
iso.3.6.1.4.1.9.9.48.1.1.1.6.2 = Gauge32: 29904096
iso.3.6.1.4.1.9.9.48.1.1.1.6.13 = Gauge32: 16754372

sysadmin@sysadmin:~$ snmpwalk -v2c -c public 192.168.10.2 1.3.6.1.4.1.9.9.48.1.1.1.5
iso.3.6.1.4.1.9.9.48.1.1.1.5.1 = Gauge32: 50269532
iso.3.6.1.4.1.9.9.48.1.1.1.5.2 = Gauge32: 3650336
iso.3.6.1.4.1.9.9.48.1.1.1.5.13 = Gauge32: 22844
```
```
Used memory OID = 1.3.6.1.4.1.9.9.48.1.1.1.6
Free memory OID =  1.3.6.1.4.1.9.9.48.1.1.1.5
```

Router Free Memory Item Prototypes Yapılandırması:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/86omany7s0cyud0y2tc4.png)


Router Used Memory Item Prototypes Yapılandırması:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l6nh2vxe0l83kwbkxl0q.png)

**Configuration > Hosts > Host > Items** kısmından "Create item" seçeneği ile yeni bir item oluşturuyoruz:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h5w1pof9dbmpkiiurp5q.png)

Type kısmını **Calculated** seçmeyi ve fonksiyonunuzun içinde OID yerine **key** kullanmayı unutmayınız!

- Bellek oranı için tanımlanmış Item'da fonksiyon:
```
100*last(//routing_used_memory[13])/(last(//routing_used_memory[13]) + last(//routing_free_memory[13]))
```
Zabbix'te **last** fonksiyonu, bir öğenin en son toplanan değerini almak için kullanılır. Bu fonksiyon, özellikle anlık sistem durumunu kontrol etmek veya son veri noktasını izlemek için faydalıdır. 

Formül, öncelikle kullanılan belleğin son değerini ('routing_used_memory[13]') alır ve bu değeri, kullanılan bellek ve boş belleğin toplamına böler. Bu oran 100 ile çarpılarak yüzdesel bir değere dönüştürülür.
**Not:** Bu işlem "iso.3.6.1.4.1.9.9.48.1.1.1.5.13" için yapılmıştır.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ejauq7hkg4ogt38t9pl.png)

**Latest data**'da gözlemimiz bu şekildedir. 

Doğrulamak gerekirse: 100 * 16754372 / (16754372+22844) = 99,86

# Zabbix'te Özel Hesaplama Kuralları Oluşturma
## Trigger ve Threshold Değerlerinin Belirlenmesi
Zabbix, sistemde belirli bir eşik değerin üzerine çıkıldığında uyarı vermek üzere "trigger" (tetikleyici) ve "threshold" (eşik değer) kavramlarını kullanır. Özel hesaplama kuralları oluşturarak, bu tetikleyiciler performans sorunlarını önceden tahmin etmek ve gerekli önlemleri almak için konfigüre edilebilir. Örneğin, bellek kullanımı %90'ı geçtiğinde bir uyarı tetiklemek için aşağıdaki gibi bir kural tanımlanabilir:
```
{system.memory.used[percent].last()} > 90 
```
Bu ifade, son bellek kullanımının %90'ın üzerinde olup olmadığını kontrol eder ve eğer öyleyse bir uyarı tetikler.

# Sonuç
## Zabbix'in Esnekliği ve Özelleştirilebilir Hesaplama Yetenekleri
Zabbix, esnek ve özelleştirilebilir bir izleme çözümü sunarak, çeşitli IT altyapı ihtiyaçlarına uyum sağlar. Kullanıcıların özel hesaplama kuralları oluşturabilmesi, sistem üzerindeki kontrolünü artırır ve daha etkili bir izleme deneyimi sunar.

## İyi Bir İzleme Sistemi ile Proaktif Sistem Yönetiminin Önemi
Etkili bir izleme sistemi, proaktif sistem yönetiminin temel taşıdır. Zabbix'in sağladığı derinlemesine izleme ve uyarı yetenekleri, IT ekiplerinin potansiyel sorunları önceden belirlemesine ve daha büyük maliyetlerin veya sistem kesintilerinin önüne geçmesine olanak tanır. Bu yaklaşım, iş sürekliliğini sağlamak ve sistem performansını optimum seviyede tutmak için hayati öneme sahiptir.