Apinizer Gateway Metriklerinin Genel Bakışı
ApinizerMetricsService, API trafiği, harici bağlantılar, cache operasyonları ve JVM durumu hakkında çeşitli metrikler toplar. Bu metrikler şu kategorilere ayrılır:
- API Trafik Metrikleri: API istekleri, başarı/hata oranları, yanıt süreleri ve boyutları
- Harici Bağlantı Metrikleri: Dış servislere yapılan istekler, başarı/hata oranları, yanıt süreleri
- Cache Metrikleri: Cache operasyonları, başarı/hata oranları, yanıt süreleri
- JVM Metrikleri: Bellek kullanımı, GC, thread durumu, işlemci kullanımı
Her metrik iki formatta toplanır:
- Genel Metrik: Etiket içermeyen toplam değerler (örneğin, tüm API isteklerinin toplam sayısı)
- Etiketli Metrik: Detaylı analiz için etiketlerle zenginleştirilmiş metrikler (örneğin, API kimliğine göre istekler)
Prometheus Metrik Tipleri
Gateway metrikleri, Prometheus'un dört temel metrik tipi kullanılarak toplanır. Bu tipler, farklı veri türlerini ve davranışlarını en iyi şekilde temsil etmek üzere tasarlanmıştır. Her metrik tipi, veriyi nasıl topladığınıza ve nasıl analiz edeceğinize bağlı olarak farklı amaçlara hizmet eder.
Counter
Counter (Sayaç), yalnızca artan bir değerdir. Uygulama çalışırken sıfırdan başlayarak artar ve yalnızca uygulama yeniden başlatıldığında sıfırlanır. Counter tipi metrikler, toplam istek sayısı, hata sayısı veya tamamlanan işlem sayısı gibi sürekli artan değerleri izlemek için idealdir.
Kullanılabilecek İşlemler:
- sum: Toplam değerin kendisi.
- rate: Zaman içindeki artış hızını hesaplar (saniyede ne kadar arttığı gibi).
- increase: Belirli bir zaman aralığındaki toplam artışı hesaplar.
Gauge
Gauge (Gösterge), anlık bir değeri temsil eder. Bu değer artabilir, azalabilir veya sabit kalabilir. Gauge tipi metrikler, mevcut bellek kullanımı, anlık CPU kullanımı veya aktif çalışan thread sayısı gibi bir anlık durumu veya seviyeyi izlemek için kullanılır.
Kullanılabilecek İşlemler:
- sum: Etiketlere göre gruplanmış Gauge değerlerinin toplamı.
- mean (ortalama): Etiketlere göre gruplanmış Gauge değerlerinin ortalaması.
- min/max: Etiketlere göre gruplanmış değerlerin minimum veya maksimumu.
Timer
Timer (Zamanlayıcı), bir işlemin ne kadar sürdüğünü (genellikle milisaniye veya saniye cinsinden) ölçer. Teknik olarak Prometheus'ta özel bir tip olmasa da, Micrometer gibi kütüphaneler tarafından DistributionSummary ve Counter kombinasyonuyla oluşturulan bir metriktir. Bu metrikler, ortalama süre, maksimum süre ve yüzdelik dilimler gibi bilgileri sağlar.
Kullanılabilecek İşlemler:
- sum: Toplam süreyi verir.
- count: İşlemin toplam kaç kez yapıldığını verir.
- mean (ortalama): İşlemin ortalama süresini hesaplar.
- max: Gözlemlenen en uzun süreyi verir.
- histogram_quantile: Yüzdelik dilimleri hesaplar.
DistributionSummary
DistributionSummary (Dağılım Özeti), bir değerin dağılımını izlemek için kullanılır. Timer'a benzer şekilde çalışır, ancak zaman ölçmek yerine istek boyutu, dosya boyutu gibi keyfi sayısal değerleri ölçer. Bu metrik de ortalama, maksimum ve yüzdelik dilimler gibi istatistiksel bilgileri sağlar.
Kullanılabilecek İşlemler:
- sum: Toplam değeri verir.
- count: Gözlemlenen değer sayısını verir.
- mean (ortalama): Değerlerin ortalamasını hesaplar.
- max: Gözlemlenen en büyük değeri verir.
- histogram_quantile: Yüzdelik dilimleri hesaplar
API Trafik Metrikleri
Bu metrikler, Apinizer üzerinden geçen API isteklerini izlemek ve performanslarını ölçmek için kullanılır. Toplam istek, başarı, hata ve önbellek isabet oranları sayısal olarak takip edilirken, istek işleme süresi ve veri boyutları performans analizi için ölçülür. API bazlı detaylı inceleme yapmak için bazı metrikler api_id ve api_name etiketleri ile sunulmaktadır.
Metrik Adı | Açıklama | Tip | Etiketler |
---|---|---|---|
apinizer_api_traffic_total_count | Toplam API trafiği istekleri | Counter | - |
apinizer_api_traffic_success_count | Başarılı API istekleri | Counter | - |
apinizer_api_traffic_error_count | Hatalı API istekleri | Counter | - |
apinizer_api_traffic_blocked_count | Engellenen API istekleri | Counter | - |
apinizer_api_traffic_request_pipeline_time | API isteği pipeline süresi (ms) | Timer | - |
apinizer_api_traffic_routing_time | API yönlendirme süresi (ms) | Timer | - |
apinizer_api_traffic_response_pipeline_time | API yanıt pipeline süresi (ms) | Timer | - |
apinizer_api_traffic_total_time | API toplam süre (ms) | Timer | - |
apinizer_api_traffic_request_size | API istek boyutu (byte) | DistributionSummary | - |
apinizer_api_traffic_response_size | API yanıt boyutu (byte) | DistributionSummary | - |
apinizer_api_traffic_cache_hits_count | API cache isabet sayısı | Counter | - |
apinizer_api_traffic_total_count_tagged | Toplam API trafiği istekleri | Counter | api_id, api_name |
apinizer_api_traffic_success_count_tagged | Başarılı API istekleri | Counter | api_id, api_name |
apinizer_api_traffic_error_count_tagged | Hatalı API istekleri | Counter | api_id, api_name |
apinizer_api_traffic_blocked_count_tagged | Engellenen API istekleri | Counter | api_id, api_name |
apinizer_api_traffic_request_pipeline_time_tagged | API isteği pipeline süresi (ms) | Timer | api_id, api_name |
apinizer_api_traffic_routing_time_tagged | API yönlendirme süresi (ms) | Timer | api_id, api_name |
apinizer_api_traffic_response_pipeline_time_tagged | API yanıt pipeline süresi (ms) | Timer | api_id, api_name |
apinizer_api_traffic_total_time_tagged | API toplam süre (ms) | Timer | api_id, api_name |
apinizer_api_traffic_request_size_tagged | API istek boyutu (byte) | DistributionSummary | api_id, api_name |
apinizer_api_traffic_response_size_tagged | API yanıt boyutu (byte) | DistributionSummary | api_id, api_name |
apinizer_api_traffic_cache_hits_count_tagged | API cache isabet sayısı | Counter | api_id, api_name |
Harici Bağlantı Metrikleri
Bu metrikler, Apinizer üzerinden yapılan harici istekleri izlemek için kullanılır. Toplam istek, hata sayısı ve yanıt süresi ölçülerek harici servislerin performansı analiz edilir. URL bazlı detaylı inceleme için bazı metrikler url etiketi ile sunulmaktadır.
Metrik Adı | Açıklama | Tip | Etiketler |
---|---|---|---|
apinizer_external_requests_total_count | Toplam harici istek sayısı | Counter | - |
apinizer_external_errors_total_count | Toplam harici hata sayısı | Counter | - |
apinizer_external_response_time | Harici yanıt süresi (ms) | Timer | - |
apinizer_external_requests_total_count_tagged | Toplam harici istek sayısı | Counter | url |
apinizer_external_errors_total_count_tagged | Toplam harici hata sayısı | Counter | url |
apinizer_external_response_time_tagged | Harici yanıt süresi (ms) | Timer | url |
Cache Metrikleri
Bu metrikler, worker (gateway) pod’unun cache ile olan etkileşimini izlemek için kullanılır. Toplam istek, hata sayısı ve yanıt süresi ölçülerek, worker pod’unun cache operasyonlarını nasıl gerçekleştirdiği ve performansı analiz edilir.
Metrik Adı | Açıklama | Tip | Etiketler |
---|---|---|---|
apinizer_cache_requests_total_count | Toplam cache istek sayısı | Counter | - |
apinizer_cache_errors_total_count | Toplam cache hata sayısı | Counter | - |
apinizer_cache_response_time | Cache operasyon yanıt süresi (ms) | Timer | - |
JVM Metrikleri
Bu metrikler, worker (gateway) pod’undaki JVM performansını ve kaynak kullanımını izlemek için kullanılır. Bellek, GC (Garbage Collection) etkinliği ve thread durumu hakkında detaylı bilgi sağlayarak sistemin verimli çalışmasını analiz etmeye yardımcı olur.
Metrik Adı | Açıklama | Tip | Etiketler |
---|---|---|---|
jvm_buffer_count_buffers | JVM tarafından kullanılan buffer sayısı | Gauge | - |
jvm_buffer_memory_used_bytes | Kullanılan toplam buffer belleği (byte) | Gauge | - |
jvm_buffer_total_capacity_bytes | Buffer toplam kapasitesi (byte) | Gauge | - |
jvm_gc_live_data_size_bytes | GC sonrası hayatta kalan veri boyutu (byte) | Gauge | - |
jvm_gc_max_data_size_bytes | GC için maksimum veri boyutu (byte) | Gauge | - |
jvm_gc_memory_allocated_bytes_total | GC tarafından ayrılan bellek miktarı (byte) | Counter | - |
jvm_gc_memory_promoted_bytes_total | GC tarafından eden terfi edilen bellek (byte) | Counter | - |
jvm_gc_pause_seconds_count | GC duraklamalarının toplam sayısı | Counter | - |
jvm_gc_pause_seconds_max | En uzun GC duraklaması (saniye) | Gauge | - |
jvm_gc_pause_seconds_sum | Toplam GC duraklama süresi (saniye) | Gauge | - |
jvm_memory_committed_bytes | JVM tarafından tahsis edilen bellek (byte) | Gauge | - |
jvm_memory_max_bytes | JVM tarafından kullanılabilecek maksimum bellek (byte) | Gauge | - |
jvm_memory_used_bytes | JVM tarafından kullanılan bellek (byte) | Gauge | - |
jvm_threads_daemon_threads | Çalışan daemon thread sayısı | Gauge | - |
jvm_threads_live_threads | Aktif çalışan thread sayısı | Gauge | - |
jvm_threads_peak_threads | Erişilen en yüksek thread sayısı | Gauge | - |
jvm_threads_started_threads_total | Toplam başlatılan thread sayısı | Counter | - |
jvm_threads_states_threads | Farklı thread durumlarının sayısı | Gauge | state |
Sistem Metrikleri
Bu metrikler, worker (gateway) pod’unun CPU ve sistem yükünü izlemek için kullanılır. CPU çekirdek sayısı, kullanım oranı ve yük ortalaması hakkında bilgi sağlar.
Metrik Adı | Açıklama | Tip | Etiketler |
---|---|---|---|
system_cpu_count | Toplam CPU çekirdeği sayısı | Gauge | - |
system_cpu_usage | Sistem genelinde CPU kullanım oranı | Gauge | - |
system_load_average_1m | Son 1 dakika için sistem yük ortalaması | Gauge | - |
Süreç (Process) Metrikleri
Bu metrikler, worker (gateway) pod'unda çalışan JVM sürecinin kaynak kullanımını izler. CPU kullanımı, açık dosya sayısı ve maksimum dosya limiti hakkında bilgi sağlar.
Metrik Adı | Açıklama | Tip | Etiketler |
---|---|---|---|
process_cpu_usage | JVM'in CPU kullanım oranı | Gauge | - |
process_files_max_files | Açılabilecek maksimum dosya sayısı | Gauge | - |
process_files_open_files | Açık dosya sayısı | Gauge | - |