prometheus-grafana-entegrasyonu
tr/operations/yonetici-kilavuzlari/gateway-metrics-entegrasyonu/gateway-prometheus-scraping.mdxtr/operations/yonetici-kilavuzlari/gateway-metrics-entegrasyonu/gateway-prometheus-scraping.mdx--- title: "Apinizer'ın Prometheus ve Grafana Entegrasyonu: Kapsamlı Bir Rehber" description: "Apinizer metriklerini Prometheus ve Grafana'ya entegre ederek izler, görselleştirir ve performans analizi sağlar."
Günümüzün mikroservis mimarisinde, sistem performansını ve davranışını izlemek optimal operasyonları sürdürmek için hayati önem taşır. Güçlü bir API yönetim platformu olan Apinizer, Prometheus ve Grafana gibi endüstri standardı izleme araçlarıyla entegre edilebilen sağlam metrik toplama özellikleri sunar. Bu makale, API gateway ve önbellek performansınız hakkında değerli içgörüler elde etmek için Apinizer'ın metrik özelliklerinden nasıl yararlanabileğinize dair detaylı bir rehber sunmaktadır.
Apinizer'ın Metrik Sistemine Genel Bakış
Apinizer'ın metrik sistemi, Micrometer üzerine inşa edilmiştir. Platform, iki ana bileşen üzerinden geniş bir metrik yelpazesi toplar:
- 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
Bu metrikler, API yönetim altyapınızın performansı ve sağlığı hakkında kapsamlı görünürlük sağlayarak, darboğazların proaktif olarak tanımlanmasını, sorunların giderilmesini ve kapasite planlamasını mümkün kılar.
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
Her metrik iki formda mevcuttur:
- 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.
Prometheus Entegrasyonunun Kurulumu
1. Apinizer Bileşenlerinde Metriklerin Etkinleştirilmesi
Apinizer Gateway için:
Worker deployment'ını düzenleyin ve METRICS_ENABLED=true ortam değişkenini ekleyin. Ayrıca container spec'e 9091 portu da eklenmelidir.
# Ortam değişkenini ekle
kubectl -n <namespace> set env deployment/worker METRICS_ENABLED=true
# Container port 9091'i ekle
kubectl -n <namespace> patch deployment worker --type=json -p='[
{
"op": "add",
"path": "/spec/template/spec/containers/0/ports/-",
"value": {"containerPort": 9091, "name": "metrics", "protocol": "TCP"}
}
]'
Apinizer Cache için:
Cache deployment'ını düzenleyin ve METRICS_ENABLED=TRUE ortam değişkenini ekleyin.
Kubernetes CLI üzerinden:
kubectl edit deploy -n <namespace> cache
# Aşağıdaki ortam değişkenini ekleyin
- name: METRICS_ENABLED
value: "true"
2. Prometheus'un Metrik Toplamak için Yapılandırılması
Prometheus'u Apinizer bileşenlerinden metrik toplamak için iki farklı yöntemle yapılandırabilirsiniz:
Sabit (Constant) Scraping
Apinizer bileşenlerini 9091 portunda hedefleyen bir servis oluşturun:
apiVersion: v1
kind: Service
metadata:
name: cache-prometheus-service # veya gateway-prometheus-service
namespace: <NAMESPACE>
spec:
ports:
- name: metrics
port: 9091
protocol: TCP
targetPort: 9091
selector:
app: cache # veya Gateway için worker
type: ClusterIP
Ardından Prometheus'u bu servislerden metrik toplayacak şekilde yapılandırın:
scrape_configs:
- job_name: 'apinizer-components'
static_configs:
- targets: ['cache-prometheus-service.<NAMESPACE>.svc.cluster.local:9091', 'worker-prometheus-service.<NAMESPACE>.svc.cluster.local:9091']
Kubernetes Service Discovery ile Dinamik Scraping
Daha esnek yapılandırmalar için pod anotasyonları ile Kubernetes servis keşfini kullanabilirsiniz:
- Deployment'a anotasyonlar ekleyin:
template:
metadata:
annotations:
prometheus.io/port: "9091"
prometheus.io/scrape: "true"
- Prometheus'u Kubernetes servis keşfini kullanacak şekilde yapılandırın:
scrape_configs:
- job_name: 'kubernetes-pods'
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep
regex: true
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_port, __meta_kubernetes_pod_ip]
action: replace
regex: (\d+);((([0-9]+?)(\.|$)){4})
replacement: $2:$1
target_label: __address__
# Ek relabeling yapılandırmaları...
PromQL ile Apinizer Metriklerinin Analizi
Prometheus Apinizer bileşenlerinden metrik toplamaya başladıktan sonra, verileri analiz etmek için PromQL (Prometheus Query Language) kullanabilirsiniz. İşte bazı yararlı sorgu örnekleri:
Gateway API Trafik Analizi
# Son 5 dakikadaki toplam API istek hızı
sum(rate(apinizer_api_traffic_total_count_total[5m]))
# Başarılı istek oranı (%)
(sum(rate(apinizer_api_traffic_success_count_total[5m])) / sum(rate(apinizer_api_traffic_total_count_total[5m]))) * 100
# Ortalama yanıt süresi (milisaniye)
(sum(rate(apinizer_api_traffic_total_time_tagged_seconds_sum[5m])) / sum(rate(apinizer_api_traffic_total_time_tagged_seconds_count[5m]))) * 1000