Diagnostic Endpoint Adresleri
Genel Bakış
Diagnostic endpoint'ler, Worker ve Cache modüllerinin çalışma durumu hakkında detaylı bilgi toplama imkanı sunar. Bu endpoint'ler ile JVM metrikleri, thread bilgileri, connection durumları, environment değişkenleri ve daha fazlasına erişim sağlayabilirsiniz.
Kullanım Alanları
JVM memory kullanımı, thread sayıları ve sistem kaynaklarını anlık olarak izleyebilirsiniz.
Thread dump ve heap dump alarak memory leak ve deadlock sorunlarını tespit edebilirsiniz.
Sistem kaynak kullanımını izleyerek ölçeklendirme kararları alabilirsiniz.
Tüm pod'ları toplu olarak sorgulayarak cluster genelinde durum analizi yapabilirsiniz.
Erişim Yöntemleri
Diagnostic endpoint'lere iki farklı şekilde erişim sağlayabilirsiniz:
- Server Management Ekranı
- API Erişimi
API Manager'daki System → Server Management ekranından görsel arayüz üzerinden tüm pod'ların diagnostic bilgilerine erişebilirsiniz. Bu yöntem, manual kontrol ve hızlı analiz için uygundur.
Doğrudan HTTP istekleri ile endpoint'lere erişim sağlayabilirsiniz. Bu yöntem, otomasyon, monitoring sistemleri ve script tabanlı kontroller için idealdir.
İş Akışı
Diagnostic endpoint'lerin çalışma mantığı aşağıdaki diyagramda gösterilmektedir:
Broadcast Mekanizması
internal=false (veya parametre verilmediğinde), istenen pod tüm cluster içindeki diğer pod'lara istekleri iletir ve sonuçları toplar:
Authorization
Worker (Gateway): /apinizer/diagnostics/* isteklerinde Authorization header'ına yalnızca ortamın Environment ID değerini gönderin (Bearer öneki yok; değer header ile birebir eşleşmelidir). Eşleşmezse 401 Unauthorized döner.
Authorization: <ENVIRONMENT_ID>
Cache: Diagnostic HTTP uçları runtime'da Environment ID ile doğrulanmaz; erişimi ağ segmentasyonu ve yalnızca güvenilen ağlardan çağrı ile sınırlandırın. Manager UI ve REST proxy'si Worker için olduğu gibi Authorization: <ENVIRONMENT_ID> header'ını iletir — Cache pod'u bu header'ı yok sayabilir.
Environment ID'yi API Manager'dan Environment ayarlarından veya sistem yöneticisinden edinebilirsiniz. Worker diagnostic çağrılarında eksik/yanlış ID reddedilir.
Docker / sanal sunucu erişimi
Kubernetes dışında (Docker Compose, standalone paket) diagnostic uçları doğrudan modül HTTP portundan çağrılır:
| Modül | Varsayılan taban URL |
|---|---|
| Worker (Gateway) | http://<host>:8091/apinizer/diagnostics/... |
| Cache | http://<host>:8090/apinizer/diagnostics/... |
Kimlik doğrulamasız liveness için Worker'da GET /apinizer/management/health, Cache'de aynı yol 8090 üzerinde kullanılır (diagnostic uçlarından ayrıdır).
Worker Diagnostic Endpoint'leri
Worker modülü için kullanılabilir endpoint'ler:
JVM Metrikleri
JVM memory kullanımı, heap/non-heap bilgileri, garbage collection istatistikleri.
- Kubernetes İçinden
- Kubernetes Dışından
# Tekli pod
kubectl exec -it <any_pod_name> -n <namespace> -- curl -X GET \
-H "Authorization: <ENVIRONMENT_ID>" \
"http://worker-http-service.prod.svc.cluster.local:8091/apinizer/diagnostics/jvm?internal=true"
# Tüm pod'lar (broadcast)
kubectl exec -it <any_pod_name> -n <namespace> -- curl -X GET \
-H "Authorization: <ENVIRONMENT_ID>" \
"http://worker-http-service.prod.svc.cluster.local:8091/apinizer/diagnostics/jvm"
# Tekli pod
curl -X GET \
-H "Authorization: <ENVIRONMENT_ID>" \
"http://<WORKER_ACCESS_URL>/apinizer/diagnostics/jvm?internal=true"
# Tüm pod'lar (broadcast)
curl -X GET \
-H "Authorization: <ENVIRONMENT_ID>" \
"http://<WORKER_ACCESS_URL>/apinizer/diagnostics/jvm"
Thread Bilgileri
Aktif thread sayısı, thread durumları, thread pool kullanımı.
- Kubernetes İçinden
- Kubernetes Dışından
kubectl exec -it <any_pod_name> -n <namespace> -- curl -X GET \
-H "Authorization: <ENVIRONMENT_ID>" \
"http://worker-http-service.prod.svc.cluster.local:8091/apinizer/diagnostics/threads?internal=true"
curl -X GET \
-H "Authorization: <ENVIRONMENT_ID>" \
"http://<WORKER_ACCESS_URL>/apinizer/diagnostics/threads"
Thread Dump
Tüm thread'lerin detaylı stack trace bilgileri. Deadlock tespiti için kullanılır.
- Kubernetes İçinden
- Kubernetes Dışından
kubectl exec -it <any_pod_name> -n <namespace> -- curl -X GET \
-H "Authorization: <ENVIRONMENT_ID>" \
"http://worker-http-service.prod.svc.cluster.local:8091/apinizer/diagnostics/threaddump?internal=true"
curl -X GET \
-H "Authorization: <ENVIRONMENT_ID>" \
"http://<WORKER_ACCESS_URL>/apinizer/diagnostics/threaddump"
Heap Dump
JVM heap memory'nin binary dump'ı. Memory analizi için kullanılır.
Heap dump endpoint'i broadcast desteklemez ve çıktı olarak binary dosya (.hprof) döner. Bu nedenle internal parametresi kullanılmaz ve sonuç bir dosyaya kaydedilmelidir.
- Kubernetes İçinden
- Kubernetes Dışından
kubectl exec -it <any_pod_name> -n <namespace> -- curl -X GET \
-H "Authorization: <ENVIRONMENT_ID>" \
"http://worker-http-service.prod.svc.cluster.local:8091/apinizer/diagnostics/heapdump" \
--output heapdump-$(date +%Y%m%d-%H%M%S).hprof
curl -X GET \
-H "Authorization: <ENVIRONMENT_ID>" \
"http://<WORKER_ACCESS_URL>/apinizer/diagnostics/heapdump" \
--output heapdump-$(date +%Y%m%d-%H%M%S).hprof
Connection Bilgileri
Aktif HTTP connection'lar, connection pool durumları, backend bağlantıları.
- Kubernetes İçinden
- Kubernetes Dışından
kubectl exec -it <any_pod_name> -n <namespace> -- curl -X GET \
-H "Authorization: <ENVIRONMENT_ID>" \
"http://worker-http-service.prod.svc.cluster.local:8091/apinizer/diagnostics/connections?internal=true"
curl -X GET \
-H "Authorization: <ENVIRONMENT_ID>" \
"http://<WORKER_ACCESS_URL>/apinizer/diagnostics/connections"