Udostępnij za pośrednictwem


Monitorowanie metryk aplikacji platformy Apache Spark przy użyciu rozwiązań Prometheus i Grafana

Przegląd

Z tego samouczka dowiesz się, jak wdrożyć rozwiązanie metryk aplikacji platformy Apache Spark w klastrze usługi Azure Kubernetes Service (AKS) i dowiedzieć się, jak zintegrować pulpity nawigacyjne platformy Grafana.

To rozwiązanie umożliwia zbieranie i wykonywanie zapytań dotyczących danych metryk platformy Apache Spark niemal w czasie rzeczywistym. Zintegrowane pulpity nawigacyjne narzędzia Grafana umożliwiają diagnozowanie i monitorowanie aplikacji platformy Apache Spark. Kod źródłowy i konfiguracje zostały otwarte w witrynie GitHub.

Wymagania wstępne

  1. Azure CLI
  2. Klient programu Helm w wersji 3.30 lub nowszej
  3. kubectl
  4. Azure Kubernetes Service (AKS)

Możesz też użyć usługi Azure Cloud Shell, która zawiera już interfejs wiersza polecenia platformy Azure, klienta programu Helm i gotowe rozwiązanie kubectl.

Logowanie się do platformy Azure

az login
az account set --subscription "<subscription_id>"

Tworzenie wystąpienia usługi Azure Kubernetes Service (AKS)

Użyj polecenia interfejsu wiersza polecenia platformy Azure, aby utworzyć klaster Kubernetes w ramach subskrypcji.

az aks create --name <kubernetes_name> --resource-group <kubernetes_resource_group> --location <location> --node-vm-size Standard_D2s_v3
az aks get-credentials --name <kubernetes_name> --resource-group <kubernetes_resource_group>

Uwaga: ten krok można pominąć, jeśli masz już klaster usługi AKS.

Utwórz jednostkę usługi i udziel uprawnień do obszaru roboczego Synapse

az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>

Wynik powinien wyglądać następująco:

{
  "appId": "abcdef...",
  "displayName": "<service_principal_name>",
  "name": "http://<service_principal_name>",
  "password": "abc....",
  "tenant": "<tenant_id>"
}

Zanotuj identyfikator appId, hasło i TenantID.

Zrzut ekranu z przyznaniem uprawnień srbac

  1. Zaloguj się do obszaru roboczego usługi Azure Synapse Analytics jako administrator usługi Synapse

  2. W programie Synapse Studio w okienku po lewej stronie wybierz pozycję Zarządzaj > kontrolą dostępu

  3. Kliknij przycisk Dodaj w lewym górnym rogu, aby dodać przypisanie roli

  4. W obszarze Zakres wybierz pozycję Obszar roboczy

  5. Dla Roli wybierz Operator obliczeniowy Synapse

  6. W obszarze Wybierz użytkownika wprowadź <service_principal_name> i kliknij swój obiekt główny usługi

  7. Kliknij przycisk Zastosuj (poczekaj 3 minuty, aby uprawnienia zaczęły obowiązywać).

Uwaga

Upewnij się, że tożsamość usługi posiada przynajmniej rolę "Czytelnik" w środowisku roboczym Synapse. Przejdź do karty Kontrola dostępu (IAM) w witrynie Azure Portal i sprawdź ustawienia uprawnień.

Instalowanie łącznika, serwera Prometheus, pulpitu nawigacyjnego narzędzia Grafana

  1. Dodaj repozytorium synapse-charts do klienta programu Helm.
helm repo add synapse-charts https://github.com/microsoft/azure-synapse-spark-metrics/releases/download/helm-chart
  1. Instalowanie składników za pośrednictwem klienta programu Helm:
helm install spo synapse-charts/synapse-prometheus-operator --create-namespace --namespace spo \
    --set synapse.workspaces[0].workspace_name="<workspace_name>" \
    --set synapse.workspaces[0].tenant_id="<tenant_id>" \
    --set synapse.workspaces[0].service_principal_name="<service_principal_app_id>" \
    --set synapse.workspaces[0].service_principal_password="<service_principal_password>" \
    --set synapse.workspaces[0].subscription_id="<subscription_id>" \
    --set synapse.workspaces[0].resource_group="<workspace_resource_group_name>"
  • workspace_name: nazwa obszaru roboczego usługi Synapse.
  • subscription_id: identyfikator subskrypcji obszaru roboczego usługi Synapse.
  • workspace_resource_group_name: nazwa grupy zasobów obszaru roboczego usługi Synapse.
  • tenant_id: identyfikator dzierżawcy obszaru roboczego usługi Synapse.
  • service_principal_app_id: główny składnik usługi "appId"
  • service_principal_password: hasło jednostki usługi, które utworzyłeś.

Zaloguj się do aplikacji Grafana

Pobierz domyślne hasło i adres Grafana. Hasło można zmienić w ustawieniach narzędzia Grafana.

kubectl get secret --namespace spo spo-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
kubectl -n spo get svc spo-grafana

Pobierz adres IP usługi, skopiuj i wklej zewnętrzny adres IP do przeglądarki, a następnie zaloguj się przy użyciu nazwy użytkownika "admin" i hasła.

Użyj pulpitów Grafana

Znajdź pulpit nawigacyjny usługi Synapse w lewym górnym rogu strony Grafana (Strona główna —> Obszar roboczy usługi Synapse / Aplikacja synapse), spróbuj uruchomić przykładowy kod w programie Synapse Studio i poczekać kilka sekund na ściąganie metryk.

Ponadto możesz skorzystać z pulpitów nawigacyjnych "Obszar roboczy usługi Synapse / Obszar roboczy" oraz "Obszar roboczy usługi Synapse / Pule Apache Spark", aby uzyskać przegląd swojego obszaru roboczego i pul Apache Spark.

Odinstalowywanie

Usuń składniki za pomocą polecenia programu Helm w następujący sposób.

helm delete <release_name> -n <namespace>

Usuń klaster usługi AKS.

az aks delete --name <kubernetes_cluster_name> --resource-group <kubernetes_cluster_rg>

Wprowadzenie do składników

Usługa Azure Synapse Analytics udostępnia pakiet Helm oparty na Prometheus Operator i Synapse Prometheus Connector. Helm chart zawiera serwer Prometheus, serwer Grafana oraz pulpity nawigacyjne Grafana dla metryk na poziomie aplikacji Apache Spark. Możesz użyć rozwiązania Prometheus, popularnego systemu monitorowania typu open source, aby zebrać te metryki niemal w czasie rzeczywistym i użyć narzędzia Grafana do wizualizacji.

Łącznik Synapse Prometheus

Łącznik Synapse Prometheus pomaga w połączeniu serwera Prometheus z pulą Spark usługi Azure Synapse. Implementuje:

  1. Uwierzytelnianie: jest to uwierzytelnianie oparte na AAD i może automatycznie odświeżyć token głównego użytkownika usługi AAD na potrzeby odnajdywania aplikacji, pozyskiwania metryk i innych funkcji.
  2. Odnajdywanie aplikacji Apache Spark: gdy przesyłasz aplikacje w docelowym obszarze roboczym, Synapse Prometheus Connector może automatycznie odnajdywać te aplikacje.
  3. Metadane aplikacji platformy Apache Spark: zbiera podstawowe informacje o aplikacji i eksportuje dane do rozwiązania Prometheus.

Łącznik Synapse Prometheus jest udostępniany jako obraz Docker hostowany w usłudze Microsoft Container Registry. Jest on typu open source i znajduje się w metrykach aplikacji platformy Apache Spark w usłudze Azure Synapse.

Serwer Prometheus

Prometheus to zestaw narzędzi do monitorowania i zgłaszania alertów typu open source. Prometheus ukończył Cloud Native Computing Foundation (CNCF) i stał się de facto standardem monitorowania natywnego dla chmury. Prometheus może pomóc nam zbierać, wykonywać zapytania i przechowywać ogromne ilości danych szeregów czasowych i można je łatwo zintegrować z narzędziem Grafana. W tym rozwiązaniu wdrożymy składnik Prometheus na podstawie wykresu helm.

Grafana i pulpity nawigacyjne

Grafana to oprogramowanie do wizualizacji i analizy typu open source. Umożliwia wykonywanie zapytań, wizualizowanie, zgłaszanie alertów i eksplorowanie metryk. Usługa Azure Synapse Analytics udostępnia zestaw domyślnych pulpitów nawigacyjnych narzędzia Grafana do wizualizacji metryk na poziomie aplikacji platformy Apache Spark.

Pulpit nawigacyjny "Obszar roboczy/obszar roboczy usługi Synapse" udostępnia widok na poziomie obszaru roboczego wszystkich pul platformy Apache Spark, liczby aplikacji, rdzeni procesora CPU itp.

zrzut ekranu przedstawiający obszar roboczy pulpitu nawigacyjnego

Pulpit nawigacyjny "Obszar roboczy usługi Synapse / pule platformy Apache Spark" zawiera metryki aplikacji platformy Apache Spark uruchomionych w wybranej puli platformy Apache Spark w danym okresie.

zrzut ekranu pulpitu nawigacyjnego sparkpool

Pulpit nawigacyjny "Obszar roboczy usługi Synapse / aplikacja Apache Spark" zawiera wybraną aplikację platformy Apache Spark.

zrzut ekranu aplikacji pulpitu nawigacyjnego

Powyższe szablony dashboardów zostały udostępnione jako open source w metrykach aplikacji Azure Synapse Apache Spark.