OpenTelemetry tümleştirmesi ile Kubernetes'e şirket içinde barındırılan ağ geçidi dağıtma
ŞUNLAR IÇIN GEÇERLIDIR: Geliştirici | Premium
Bu makalede, Azure API Management'ın şirket içinde barındırılan ağ geçidi bileşenini bir Kubernetes kümesine dağıtma ve tüm ölçümleri otomatik olarak bir OpenTelemetry Toplayıcısı'na gönderme adımları açıklanmaktadır.
Önemli
Azure API Management şirket içinde barındırılan ağ geçidi için OpenTelemetry desteği şu anda önizleme aşamasındadır ve etiket veya daha yüksek bir değer gerektirir 2.0.0
.
Şunları yapmayı öğreneceksiniz:
- Kubernetes'te tek başına OpenTelemetry Toplayıcısı yapılandırma ve dağıtma
- OpenTelemetry ölçümleriyle şirket içinde barındırılan ağ geçidini dağıtın.
- Şirket içinde barındırılan ağ geçidinde API'leri kullanarak ölçümler oluşturun.
- OpenTelemetry Collector'ın ölçümlerini kullanın.
Önkoşullar
- Azure API Management örneği oluşturma
- Azure CLI kullanarak, Azure PowerShell kullanarak veya Azure portalını kullanarak bir Azure Kubernetes kümesi oluşturun.
- API Management örneğinizde şirket içinde barındırılan bir ağ geçidi kaynağı sağlayın.
OpenTelemetry'ye giriş
OpenTelemetry , satıcıdan bağımsız bir şekilde günlüğe kaydetmeye, ölçümlere ve izlemeye yönelik açık kaynak araçlar ve çerçeveler kümesidir.
Önemli
Azure API Management şirket içinde barındırılan ağ geçidi için OpenTelemetry desteği şu anda önizleme aşamasındadır ve etiket veya daha yüksek bir değer gerektirir 2.0.0
.
Şirket içinde barındırılan ağ geçidi, ölçümleri otomatik olarak toplayacak ve OpenTelemetry Toplayıcısı'na gönderecek şekilde yapılandırılabilir. Bu, şirket içinde barındırılan ağ geçidi için kendi ölçüm toplama ve raporlama çözümünüzü getirmenizi sağlar.
Not
OpenTelemetry, Cloud Native Computing Foundation (CNCF) ekosisteminin bir inkübating projesidir.
Ölçümler
Şirket içinde barındırılan ağ geçidi otomatik olarak aşağıdaki ölçümleri ölçmeye başlar:
- İstekler
- DurationInMs
- BackendDurationInMs
- ClientDurationInMs
- GatewayDurationInMs
Bunlar otomatik olarak yapılandırılmış OpenTelemetry Collector'a her 1 dakikada bir ek boyutlar ile dışarı aktarılır.
OpenTelemetry Toplayıcısı'nı dağıtma
Helm kullanarak Kubernetes'te tek başına bir OpenTelemetry Toplayıcısı dağıtarak başlayacağız.
İlk olarak Helm grafik deposunu eklemeliyiz:
Helm deposunu ekleme
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
En son Helm grafiklerini getirmek için depoyu güncelleştirin.
helm repo update
Kullanılabilir tüm grafikleri listeleyerek Helm yapılandırmanızı doğrulayın.
$ helm search repo open-telemetry NAME CHART VERSION APP VERSION DESCRIPTION open-telemetry/opentelemetry-collector 0.8.1 0.37.1 OpenTelemetry Collector Helm chart for Kubernetes open-telemetry/opentelemetry-operator 0.4.0 0.37.0 OpenTelemetry Operator Helm chart for Kubernetes
Grafik deposunu yapılandırdığımıza göre, OpenTelemetry Collector'ı kümemize dağıtabiliriz:
Aşağıdaki yapılandırmayla adlı
opentelemetry-collector-config.yml
bir yerel yapılandırma dosyası oluşturun:mode: deployment config: exporters: prometheus: endpoint: "0.0.0.0:8889" namespace: azure_apim send_timestamps: true service: pipelines: metrics: exporters: - prometheus service: type: LoadBalancer ports: jaeger-compact: enabled: false prom-exporter: enabled: true containerPort: 8889 servicePort: 8889 protocol: TCP
Bu, tek başına bir toplayıcı kullanmamıza izin verir Prometheus ihracatçısı bağlantı noktasında 8889
kullanıma sunuldu. Prometheus ölçümlerini kullanıma açmak için Helm grafiğinden bir LoadBalancer
hizmet yapılandırmasını istiyoruz.
Not
UDP kullandığından kompakt Jaeger bağlantı noktasını devre dışı bırakıyoruz ve LoadBalancer
hizmet aynı anda birden çok protokole sahip olmanıza izin vermiyor.
Helm grafiğini yapılandırmamızla yükleyin:
helm install opentelemetry-collector open-telemetry/opentelemetry-collector --values .\opentelemetry-collector-config.yml
Helm grafiğimizin tüm kaynaklarını alarak yüklemeyi doğrulayın
$ kubectl get all -l app.kubernetes.io/instance=opentelemetry-collector NAME READY STATUS RESTARTS AGE pod/opentelemetry-collector-58477c8c89-dstwd 1/1 Running 0 27m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/opentelemetry-collector LoadBalancer 10.0.175.135 20.103.18.53 14250:30982/TCP,14268:32461/TCP,4317:31539/TCP,4318:31581/TCP,8889:32420/TCP,9411:30003/TCP 27m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/opentelemetry-collector 1/1 1 1 27m NAME DESIRED CURRENT READY AGE replicaset.apps/opentelemetry-collector-58477c8c89 1 1 1 27m
Daha sonra sorgulayabilmemiz için hizmetin dış IP'sini not alın.
OpenTelemetry Collector'ı yükledikten sonra şirket içinde barındırılan ağ geçidini kümemize dağıtabiliriz.
Şirket içinde barındırılan ağ geçidini dağıtma
Önemli
Helm ile şirket içinde barındırılan ağ geçidini dağıtma ve gerekli yapılandırmayı alma hakkında ayrıntılı bir genel bakış için bu makaleyi okumanızı öneririz.
Bu bölümde helm ile kümemize şirket içinde barındırılan ağ geçidini dağıtacak ve OpenTelemetry ölçümlerini OpenTelemetry Collector'a gönderecek şekilde yapılandıracağız.
Helm grafiğini yükleyin ve OpenTelemetry ölçümlerini kullanacak şekilde yapılandırın:
helm install azure-api-management-gateway \ --set gateway.configuration.uri='<your configuration url>' \ --set gateway.auth.key='<your auth token>' \ --set observability.opentelemetry.enabled=true \ --set observability.opentelemetry.collector.uri=http://opentelemetry-collector:4317 \ --set service.type=LoadBalancer \ azure-apim-gateway/azure-api-management-gateway
Not
opentelemetry-collector
yukarıdaki komutta OpenTelemetry Toplayıcısı'nın adıdır. Hizmetinizin adı farklıysa adı güncelleştirin.
Helm grafiğimizin tüm kaynaklarını alarak yüklemeyi doğrulayın
$ kubectl get all -l app.kubernetes.io/instance=apim-gateway NAME READY STATUS RESTARTS AGE pod/apim-gateway-azure-api-management-gateway-fb77c6d49-rffwq 1/1 Running 0 63m NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/apim-gateway-azure-api-management-gateway LoadBalancer 10.0.67.177 20.71.82.110 8080:32267/TCP,8081:32065/TCP 63m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/apim-gateway-azure-api-management-gateway 1/1 1 1 63m NAME DESIRED CURRENT READY AGE replicaset.apps/apim-gateway-azure-api-management-gateway-fb77c6d49 1 1 1 63m
Şirket içinde barındırılan ağ geçidi hizmetinin dış IP'sini not alarak daha sonra sorgulayabiliriz.
OpenTelemetry ölçümlerini oluşturma ve kullanma
Artık hem OpenTelemetry Toplayıcımız hem de şirket içinde barındırılan ağ geçidi dağıtıldığından, ölçümleri oluşturmak için API'leri kullanmaya başlayabiliriz.
Not
Bu kılavuz için varsayılan "Echo API'sini" tüketeceğiz.
Şu şekilde yapılandırıldığından emin olun:
- HTTP isteklerine izin ver
- Şirket içinde barındırılan ağ geçidinizin bunu kullanıma sunmasına izin verme
Şirket içinde barındırılan ağ geçidinde Echo API'sini sorgula:
$ curl -i "http://<self-hosted-gateway-ip>:8080/echo/resource?param1=sample&subscription-key=abcdef0123456789" HTTP/1.1 200 OK Date: Mon, 20 Dec 2021 12:58:09 GMT Server: Microsoft-IIS/8.5 Content-Length: 0 Cache-Control: no-cache Pragma: no-cache Expires: -1 Accept: */* Host: echoapi.cloudapp.net User-Agent: curl/7.68.0 X-Forwarded-For: 10.244.1.1 traceparent: 00-3192030c89fd7a60ef4c9749d6bdef0c-f4eeeee46f770061-01 Request-Id: |3192030c89fd7a60ef4c9749d6bdef0c.f4eeeee46f770061. Request-Context: appId=cid-v1:c24f5e00-aa25-47f2-bbb5-035847e7f52a X-Powered-By: Azure API Management - http://api.azure.com/,ASP.NET X-AspNet-Version: 4.0.30319
Şirket içinde barındırılan ağ geçidi artık isteği ölçecek ve ölçümleri OpenTelemetry Collector'a gönderecek.
üzerinde toplayıcıda Prometheus uç noktasını sorgula
http://<collector-service-ip>:8889/metrics
. Aşağıdakine benzer ölçümler görmeniz gerekir:# HELP azure_apim_BackendDurationInMs # TYPE azure_apim_BackendDurationInMs histogram azure_apim_BackendDurationInMs_bucket{Hostname="20.71.82.110",le="5"} 0 1640093731340 [...] azure_apim_BackendDurationInMs_count{Hostname="20.71.82.110"} 22 1640093731340 # HELP azure_apim_ClientDurationInMs # TYPE azure_apim_ClientDurationInMs histogram azure_apim_ClientDurationInMs_bucket{Hostname="20.71.82.110",le="5"} 22 1640093731340 [...] azure_apim_ClientDurationInMs_count{Hostname="20.71.82.110"} 22 1640093731340 # HELP azure_apim_DurationInMs # TYPE azure_apim_DurationInMs histogram azure_apim_DurationInMs_bucket{Hostname="20.71.82.110",le="5"} 0 1640093731340 [...] azure_apim_DurationInMs_count{Hostname="20.71.82.110"} 22 1640093731340 # HELP azure_apim_GatewayDurationInMs # TYPE azure_apim_GatewayDurationInMs histogram azure_apim_GatewayDurationInMs_bucket{Hostname="20.71.82.110",le="5"} 0 1640093731340 [...] azure_apim_GatewayDurationInMs_count{Hostname="20.71.82.110"} 22 1640093731340 # HELP azure_apim_Requests # TYPE azure_apim_Requests counter azure_apim_Requests{BackendResponseCode="200",BackendResponseCodeCategory="2xx",Cache="None",GatewayId="Docs",Hostname="20.71.82.110",LastErrorReason="None",Location="GitHub",ResponseCode="200",ResponseCodeCategory="2xx",Status="Successful"} 22 1640093731340
Temizleme
Öğretici sona erdiği için kümenizi aşağıdaki gibi kolayca temizleyebilirsiniz:
Şirket içinde barındırılan ağ geçidi Helm grafiğini kaldırın:
helm uninstall apim-gateway
OpenTelemetry Toplayıcısı'nı kaldırın:
helm uninstall opentelemetry-collector
Sonraki adımlar
- Şirket içinde barındırılan ağ geçidi hakkında daha fazla bilgi edinmek için bkz . Şirket içinde barındırılan ağ geçidine genel bakış.