Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
DOTYCZY: Developer | Premium
W tym artykule opisano kroki wdrażania składnika bramy w Azure API Management w klastrze Kubernetes oraz automatyczne wysyłanie wszystkich metryk do modułu zbierającego OpenTelemetry.
Nauczysz się, jak:
- Konfigurowanie i wdrażanie autonomicznego modułu zbierającego OpenTelemetry na platformie Kubernetes
- Wdróż bramę hostowaną samodzielnie przy użyciu metryk OpenTelemetry.
- Generowanie metryk przez korzystanie z interfejsów API w bramie hostowanej samodzielnie.
- Użyj metryk z kolektora OpenTelemetry.
Wymagania wstępne
- Utwórz wystąpienie usługi Azure API Management
- Utwórz klaster usługi Azure Kubernetes przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell lub witryny Azure Portal.
- Skonfiguruj zasób własnej bramy w usłudze API Management w swoim wystąpieniu.
Wprowadzenie do platformy OpenTelemetry
OpenTelemetry to zestaw narzędzi i struktur typu open source do rejestrowania, metryk i śledzenia w sposób neutralny dla dostawcy.
Samohostowaną bramę można skonfigurować tak, aby automatycznie zbierała i wysyłała metryki do OpenTelemetry Collector. Dzięki temu możesz korzystać z własnego rozwiązania do zbierania i raportowania metryk dla samodzielnie zarządzanej bramy.
Metryki
Brama hostowana samodzielnie automatycznie zacznie mierzyć następujące metryki:
- Żądania
- CzasTrwaniaWMs
- BackendDurationInMs
- ClientDurationInMs
- GatewayDurationInMs
Są one automatycznie eksportowane do skonfigurowanego Kolektora OpenTelemetry co minutę z dodatkowymi wymiarami.
Wdrażanie kolektora OpenTelemetry
Zaczniemy od wdrożenia autonomicznego modułu zbierającego OpenTelemetry na platformie Kubernetes przy użyciu programu Helm.
Napiwek
Chociaż będziemy używać wykresu Helm Collector, udostępniają również operator OpenTelemetry Collector.
Na początek musimy dodać repozytorium chartu Helm.
Dodaj repozytorium Helm
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-chartsZaktualizuj repozytorium, aby pobrać najnowsze wykresy programu Helm.
helm repo updateZweryfikuj konfigurację programu Helm, wyświetlając listę wszystkich dostępnych wykresów.
$ 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
Po skonfigurowaniu repozytorium wykresów możemy wdrożyć moduł zbierający OpenTelemetry w klastrze:
Utwórz lokalny plik konfiguracji o nazwie
opentelemetry-collector-config.ymlz następującą konfiguracją: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
Dzięki temu możemy użyć autonomicznego modułu zbierającego z eksporterem Prometheus udostępnianym na porcie 8889. Aby uwidocznić metryki Prometheus, prosimy o skonfigurowanie usługi LoadBalancer przy użyciu wykresu Helm.
Uwaga
Wyłączamy kompaktowy port Jaeger, ponieważ używa protokołu UDP, a LoadBalancer usługa nie zezwala na jednoczesne używanie wielu protokołów.
Zainstaluj chart Helm przy użyciu naszej konfiguracji:
helm install opentelemetry-collector open-telemetry/opentelemetry-collector --values .\opentelemetry-collector-config.ymlZweryfikuj instalację, uzyskując wszystkie zasoby dla wykresu programu Helm
$ 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 27mZanotuj zewnętrzny adres IP usługi, abyśmy mogli wysłać do niej zapytanie później.
Po zainstalowaniu modułu zbierającego OpenTelemetry możemy teraz wdrożyć bramę hostowaną samodzielnie w naszym klastrze.
Wdrażanie bramy hostowanej samodzielnie
Ważne
Aby zapoznać się ze szczegółowym omówieniem sposobu wdrażania własnej bramy za pomocą programu Helm i sposobu uzyskiwania wymaganej konfiguracji, zalecamy przeczytanie tego artykułu.
W tej sekcji wdrożymy bramę hostowaną samodzielnie w klastrze za pomocą programu Helm i skonfigurujemy ją tak, aby wysyłała metryki OpenTelemetry do modułu zbierającego OpenTelemetry.
Zainstaluj chart Helm i skonfiguruj go do korzystania z metryk OpenTelemetry.
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
Uwaga
opentelemetry-collector w powyższym poleceniu jest nazwą modułu zbierającego OpenTelemetry. Zaktualizuj nazwę, jeśli usługa ma inną nazwę.
Zweryfikuj instalację, uzyskując wszystkie zasoby dla wykresu programu Helm
$ 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 63mZanotuj zewnętrzny adres IP usługi samohostowanej bramy, abyśmy mogli wysłać później zapytanie.
Generowanie i używanie metryk OpenTelemetry
Po wdrożeniu zarówno Kolektora OpenTelemetry, jak i własnej bramy sieciowej, możemy rozpocząć używanie API w celu wygenerowania metryk.
Uwaga
Na potrzeby tego przewodnika będziemy korzystać z domyślnego "Echo API".
Upewnij się, że jest on skonfigurowany do:
- Zezwalaj na żądania HTTP
- Zezwól własnej bramie na uwidocznienie jej
Sprawdź Echo API w bramie hostowanej lokalnie:
$ 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:00001111-aaaa-2222-bbbb-3333cccc4444 X-Powered-By: Azure API Management - http://api.azure.com/,ASP.NET X-AspNet-Version: 4.0.30319
Brama hostowana samodzielnie będzie teraz mierzyć żądanie i wysyłać metryki do kolektora OpenTelemetry.
Wykonaj zapytanie dotyczące punktu końcowego Prometheus w modułze zbierającym w systemie
http://<collector-service-ip>:8889/metrics. Powinny zostać wyświetlone metryki podobne do następujących:# 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
Czyszczenie
Teraz, gdy samouczek się skończył, możesz łatwo wyczyścić klaster w następujący sposób:
Odinstaluj Helm chart bramy samodzielnie hostowanej.
helm uninstall apim-gatewayOdinstaluj moduł zbierający OpenTelemetry:
helm uninstall opentelemetry-collector
Powiązana zawartość
- Aby dowiedzieć się więcej na temat bramy hostowanej lokalnie, zobacz Omówienie bramy hostowanej lokalnie.
- Aby dowiedzieć się więcej na temat możliwości obserwacji bram usługi Azure API Management.