
Apinizer’ın Metrik Sistemine Genel Bakış

- Apinizer Gateway: API trafiği, harici bağlantılar, JVM sağlığı ve sistem kaynakları ile ilgili metrikleri toplar
- Apinizer Cache: Önbellek işlemlerini, API isteklerini, JVM performansını ve sistem sağlığını izler
/api/v1/query REST API’sine sorgu atarak toplar. Böylece ek bir Zabbix-Prometheus eklentisi gerekmeden, mevcut Prometheus altyapınız Zabbix’in veri kaynağına dönüşür.
Apinizer Tarafından Toplanan Metrikler

Apinizer Gateway Metrikleri
Gateway bileşeni çeşitli kategorilerde metrikler toplar:API Trafik Metrikleri
Bu metrikler Apinizer Gateway üzerinden geçen istekleri takip eder:- Toplam API trafik istekleri
- Başarılı/başarısız/engellenen API istekleri
- İstek işleme süreleri (pipeline, yönlendirme, toplam)
- İstek ve yanıt boyutları
- Önbellek isabet istatistikleri
- Toplam metrikler (örn., tüm API’ler genelinde toplam API istekleri)
- Detaylı boyutlara sahip etiketli metrikler (örn., API Kimliği, API adı başına istekler)
Harici Bağlantı Metrikleri
Bunlar harici servislere yapılan bağlantıları takip eder:- Toplam harici istekler
- Harici hata sayısı
- Harici yanıt süreleri
JVM Metrikleri
Bunlar Java Sanal Makinesi hakkında içgörüler sağlar:- Bellek kullanımı (heap, non-heap)
- Garbage collection istatistikleri
- Thread sayıları ve durumları
Sistem Metrikleri
Bunlar altta yatan sistemi izler:- CPU kullanımı
- İşlemci sayısı
- Sistem yük ortalaması
- File descriptor sayıları
Apinizer Cache Metrikleri
Cache bileşeni şunları toplar:Önbellek İşlem Metrikleri
- Önbellek get/put sayıları
- Önbellek boyutu ve giriş sayıları
- Önbellek işlem gecikmeleri
- Önbellek girişleri tarafından bellek kullanımı
API Metrikleri
- API istek sayıları
- API yanıt süreleri
- API hata sayıları
JVM ve Sistem Metrikleri
Gateway’e benzer şekilde, Cache bileşeni de JVM performansını ve sistem kaynak kullanımını takip eder.Zabbix Entegrasyonunun Kurulumu
1. Apinizer Bileşenlerinde Metriklerin Etkinleştirilmesi
Apinizer Gateway için:
Worker deployment’ını düzenleyin veMETRICS_ENABLED=true ortam değişkenini ekleyin. Ayrıca container spec’e 9091 portu da eklenmelidir.
Apinizer Cache için:
Cache deployment’ını düzenleyin veMETRICS_ENABLED=TRUE ortam değişkenini ekleyin.
Kubernetes CLI üzerinden:
2. Prometheus’un Yapılandırılması
Apinizer pod’larının Prometheus tarafından scrape edilebilmesi için worker ve cache deployment’larına annotation’lar eklemeniz, Prometheus’un da bu pod’ları keşfedecek şekilde yapılandırılmış olması gerekir.Pod annotation’ları ekleyin:
Prometheus scrape config’ini Apinizer namespace’lerini kapsayacak şekilde genişletin:
3. Prometheus’un Zabbix’ten Erişilebilir Olması
Zabbix Server’ın Prometheus HTTP endpoint’ine erişebilmesi gerekir. En basit yöntem NodePort ile dışarı açmaktır:4. Zabbix Tarafının Hazırlanması
Zabbix Agent kurulumu
Apinizer’ın çalıştığı Kubernetes node’una Zabbix Agent kurun. Böylece host düzeyindeki metrikler (CPU, RAM, disk) Apinizer metrikleriyle birlikte toplanır:Zabbix Template’ini import edin
Apinizer için hazırlanmış HTTP Agent tabanlı template (41 item, 8 trigger, 9 macro) Zabbix arayüzünden import edilir: Data collection → Templates → Import menüsündenapinizer_by_prometheus.yaml dosyasını seçin. Advanced options altında tüm kategoriler için Update existing, Create new ve Delete missing seçeneklerini işaretleyip Import’a basın.
Host yaratın ve macro’ları yapılandırın
Apinizer ortamı için bir Zabbix host oluşturun:- Host name:
<node-hostname>(Zabbix Agent ile aynı) - Templates:
Linux by Zabbix agentveApinizer by Prometheus - Macros (Inherited and host macros sekmesinden override edin):
{$PROM.URL}→http://<cluster-node-ip>:30190{$PROM.NAMESPACE}→tester(veya hedef namespace)
PromQL ile Apinizer Metriklerinin Analizi
Zabbix HTTP Agent item’ları, Prometheus’un/api/v1/query endpoint’ine PromQL sorgusu atar ve dönen JSON cevaptaki değeri JSONPath ile çıkartır. Aşağıdaki sorgular hem template’in dahili olarak kullandığı sorgulardır hem de Zabbix’te yeni bir item tanımlarken kullanabileceğiniz örneklerdir:
Gateway API Trafik Analizi
Önbellek Performans Analizi
JVM Analizi
Zabbix Dashboard’larının Oluşturulması
Zabbix dashboard’ları,dashboard.create API çağrısıyla tek seferde, Python script üzerinden oluşturulabilir. Hazır script ile 5 sayfa ve 72 widget’lık bir dashboard tek API çağrısında üretilir. Aşağıda her sayfa için içerikler özetlenmiştir.
Panel 1: Apinizer UP
- Item:
Apinizer apimanager availability(TCP service check) - Görselleştirme: Item value (1 = ayakta, 0 = down)
- Metrik:
(sum(rate(apinizer_api_traffic_success_count_total[5m])) / sum(rate(apinizer_api_traffic_total_count_total[5m]))) * 100 - Görselleştirme: Gauge (yeşil 95+, sarı 90-95, kırmızı 90 altı)
- Metrik: blocked / total * 100
- Görselleştirme: Gauge (sarı 10+, kırmızı 30+)
- Metrik: cache_hits / total * 100
- Görselleştirme: Gauge (mavi tonlamalı)
- Metrikler: total / success / error / blocked rate’leri
- Görselleştirme: Graph (classic), 4 çizgi
- Host’a bağlı tüm aktif trigger’lar
- Görselleştirme: Problems widget
Traffic & Latency Sayfası
Panel 1: Latency Breakdown- Metrikler:
- Total response time:
1000 * sum(rate(apinizer_api_traffic_total_time_seconds_sum[5m])) / sum(rate(apinizer_api_traffic_total_time_seconds_count[5m])) - Request pipeline: aynı formül
request_pipeline_time_secondsile - Routing: aynı formül
routing_time_secondsile - Response pipeline: aynı formül
response_pipeline_time_secondsile - Görselleştirme: Graph (classic), 4 çizgi
- İstek boyutu:
sum(rate(apinizer_api_traffic_request_size_bytes_sum[5m])) / sum(rate(apinizer_api_traffic_request_size_bytes_count[5m])) - Yanıt boyutu:
sum(rate(apinizer_api_traffic_response_size_bytes_sum[5m])) / sum(rate(apinizer_api_traffic_response_size_bytes_count[5m])) - Görselleştirme: Graph (classic)
- Metrik:
sum(increase(apinizer_api_traffic_total_count_total[5m])) - Görselleştirme: Item value
JVM & Infrastructure Sayfası
Panel 1: JVM Heap %- Metrik:
sum(jvm_memory_used_bytes{area="heap"}) / sum(jvm_memory_max_bytes{area="heap"}) * 100 - Görselleştirme: Gauge (sarı 70+, kırmızı 85+)
- Metrik 1 (tester):
sum(jvm_memory_used_bytes{namespace="tester",application="apinizer",area="heap"}) / 1024 / 1024 - Metrik 2 (zwebsocket): aynı sorgu farklı namespace ile
- Görselleştirme: Graph (classic), 2 çizgi farklı renkte
- Metrik:
sum(rate(jvm_gc_pause_seconds_sum[5m])) - Görselleştirme: Graph (classic)
- Metrik:
sum(httpcomponents_httpclient_pool_total_connections) / sum(httpcomponents_httpclient_pool_total_max) * 100 - Görselleştirme: Gauge
- Metrikler:
- Backend istek hızı:
sum(rate(apinizer_external_requests_total_count_total[5m])) - Backend hata hızı:
sum(rate(apinizer_external_errors_total_count_total[5m])) - Görselleştirme: Graph (classic)
Cache Pod Sayfası
Panel 1: Cache Pod Heap %- Metrik:
sum(jvm_memory_used_bytes{application="apinizer-cache",area="heap"}) / sum(jvm_memory_max_bytes{application="apinizer-cache",area="heap"}) * 100 - Görselleştirme: Gauge
- Metrik:
sum(jvm_threads_live_threads{application="apinizer-cache"}) - Görselleştirme: Item value
- Metrik:
sum(rate(apinizer_cache_errors_total_count_total[5m])) - Görselleştirme: Graph (classic)
Host Sağlık Sayfası
Bu sayfa, Apinizer’ın çalıştığı Kubernetes node’unun OS düzeyindeki metriklerini gösterir. VerilerLinux by Zabbix agent template’inden gelir; Prometheus üzerinden değil, doğrudan Zabbix Agent’tan toplanır.
Panel 1: CPU Utilization
- Item: Linux template’in
system.cpu.utilitem’ı - Görselleştirme: Gauge ve Graph (classic)
- Item:
vm.memory.utilization - Görselleştirme: Gauge ve Graph (classic)
- Item:
system.cpu.load[all,avg1] - Görselleştirme: Graph (classic)
Zabbix Trigger’ları (Alarm)
Apinizer template’i, varsayılan olarak 8 trigger ile gelir. Her trigger ayrı bir macro üzerinden eşik değerini alır, böylece host bazında özelleştirilebilir:| Trigger | Varsayılan Eşik | Macro |
|---|---|---|
| Yüksek error oranı (5dk) | %5 | {$APINIZER.ERROR_RATIO.MAX} |
| Yüksek total response süresi (5dk) | 2000 ms | {$APINIZER.LATENCY.MAX} |
| Yüksek backend error oranı (5dk) | 1 rps | {$APINIZER.EXT_ERROR.MAX} |
| JVM heap doluluğu yüksek (5dk) | %85 | {$APINIZER.HEAP.MAX} |
| Yüksek GC baskısı (5dk) | 0.1 s/s | {$APINIZER.GC.MAX} |
| HTTP pool doldu (5dk) | %90 | {$APINIZER.POOL.MAX} |
| Trafik metriği gelmiyor (nodata 5dk) | yok | (override yok) |
| Blocked request artışı (5dk) | 10 rps | {$APINIZER.BLOCKED.MAX} |
Best Practices
1. Metrik Saklama Süresi
Zabbix tarafında item başına history (ham veri) ve trends (saatlik agregasyon) süreleri ayrı yapılandırılır. Apinizer template’i varsayılan olarak şu değerleri kullanır:- History: 30 gün
- Trends: 365 gün
2. Çoklu Ortam (Multi-Environment) Yapılandırması
Apinizer birden fazla namespace’te çalıştığında (tester, uat, prod) her ortam için ayrı bir Zabbix host yaratın. AynıApinizer by Prometheus template’ini her host’a bağlayın ve {$PROM.NAMESPACE} macro’sunu host düzeyinde override ederek hedef namespace’i belirtin. Böylece:
- Her ortamın metrikleri birbirinden izole tutulur
- Her ortam için ayrı dashboard üretilebilir
- Trigger eşikleri ortam bazında farklılaştırılabilir (örn. prod’da error oranı %2, test’te %10)
3. Aynı Dashboard’da Çoklu Worker Karşılaştırması
İki worker’ı (örneğin canary release sırasında) aynı dashboard’da karşılaştırmak için, template’e ikinci worker namespace’ine işaret eden ek item’lar eklenir. JVM & Infrastructure sayfasındaki Heap, Threads, GC ve CPU grafiklerinde her iki worker’ın çizgisi farklı renklerde aynı grafiğe çizilir. Bu, performans karşılaştırması için en hızlı görsel yöntemdir.4. Etiket (Label) Kullanımı
Apinizer’ın yaydığı her metric series şu label’ları taşır:namespace— pod’un Kubernetes namespace’ipod— pod adı (restart’ta değişir)application— apinizer (worker) veya apinizer-cache (cache pod)environment— Apinizer’ın iç environment tanımlayıcısı
application="apinizer" filtresini kullanın; aksi halde sum() fonksiyonu worker ve cache metric’lerini birlikte toplar ve sonuç yanıltıcı olur.
Sonuç
Apinizer’ı Prometheus üzerinden Zabbix ile entegre etmek, kurumların halihazırda kullandığı operasyonel izleme platformunda Apinizer’a özel görünürlük kazandırır. Metrik toplama Prometheus tarafından yapılır; Zabbix HTTP Agent item’ları üzerinden bu metrikleri sorgulayarak kendi history/trends/dashboard/trigger ekosistemine dahil eder. Bu entegrasyon her bileşenin güçlü yönlerinden yararlanır:- Apinizer’ın kapsamlı metrik toplama özelliği
- Prometheus’un verimli zaman serisi veritabanı ve PromQL sorgu dili
- Zabbix’in olgun trigger, escalation ve bildirim yönlendirme yetenekleri
- Zabbix Agent’ın işletim sistemi düzeyindeki host metriklerini Apinizer metrikleriyle aynı dashboard’da birleştirme imkânı
Kaynaklar
Daha fazla bilgi için:- Apinizer Dökümantasyonu
- Prometheus Dokümantasyonu
- Zabbix Dokümantasyonu

