Dela via


Övervaka Mått för Apache Spark-program med Prometheus och Grafana

Översikt

I den här självstudien får du lära dig hur du distribuerar Apache Spark-programmåttlösningen till ett AkS-kluster (Azure Kubernetes Service) och lär dig hur du integrerar Grafana-instrumentpanelerna.

Du kan använda den här lösningen för att samla in och köra frågor mot Apache Spark-måttdata nästan i realtid. Med de integrerade Grafana-instrumentpanelerna kan du diagnostisera och övervaka ditt Apache Spark-program. Källkoden och konfigurationerna har öppen källkod på GitHub.

Förutsättningar

  1. Azure CLI
  2. Helm-klient 3.30+
  3. kubectl
  4. Azure Kubernetes Service (AKS)

Eller använd Azure Cloud Shell, som redan innehåller Azure CLI, Helm-klienten och kubectl direkt.

Logga in på Azure

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

Skapa en Azure Kubernetes-tjänstinstans (AKS)

Använd Azure CLI-kommandot för att skapa ett Kubernetes-kluster i din prenumeration.

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>

Obs! Det här steget kan hoppas över om du redan har ett AKS-kluster.

Skapa ett huvudnamn för tjänsten och bevilja behörighet till Synapse-arbetsytan

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

Resultatet bör se ut så här:

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

Anteckna appId, lösenord och tenantID.

screenshot grant permission srbac

  1. Logga in på din Azure Synapse Analytics-arbetsyta som Synapse-administratör

  2. I Synapse Studio går du till fönstret till vänster och väljer Hantera > åtkomstkontroll

  3. Klicka på knappen Lägg till längst upp till vänster för att lägga till en rolltilldelning

  4. För Omfång väljer du Arbetsyta

  5. För Roll väljer du Synapse Compute Operator

  6. För Välj användare anger du service_principal_name <> och klickar på tjänstens huvudnamn

  7. Klicka på Använd (Vänta 3 minuter för att behörigheten ska börja gälla.)

Kommentar

Kontrollera att tjänstens huvudnamn är minst rollen Läsare i Synapse-arbetsytan. Gå till fliken Åtkomstkontroll (IAM) i Azure-portalen och kontrollera behörighetsinställningarna.

Installera anslutningsapp, Prometheus-server, Grafana-instrumentpanel

  1. Lägg till lagringsplatsen synapse-charts i Helm-klienten.
helm repo add synapse-charts https://github.com/microsoft/azure-synapse-spark-metrics/releases/download/helm-chart
  1. Installera komponenter via Helm-klienten:
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: Synapse-arbetsytans namn.
  • subscription_id: Prenumerations-ID för Synapse-arbetsyta.
  • workspace_resource_group_name: Resursgruppsnamn för Synapse-arbetsyta.
  • tenant_id: Klient-ID för Synapse-arbetsyta.
  • service_principal_app_id: Tjänstens huvudnamn "appId"
  • service_principal_password: Lösenordet för tjänstens huvudnamn som du skapade.

Logga in på Grafana

Hämta standardlösenordet och adressen till Grafana. Du kan ändra lösenordet i Grafana-inställningarna.

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

Hämta tjänstens ip, kopiera och klistra in den externa ip-adressen i webbläsaren och logga in med användarnamnet "admin" och lösenordet.

Använda Grafana-instrumentpaneler

Hitta Synapse-instrumentpanelen i det övre vänstra hörnet på Grafana-sidan (Start –> Synapse-arbetsyta/Synapse-program), försök att köra en exempelkod i Synapse Studio och vänta några sekunder på att måtten ska hämtas.

Du kan också använda instrumentpanelerna "Synapse Workspace/Workspace" och "Synapse Workspace/Apache Spark-pooler" för att få en översikt över din arbetsyta och dina Apache Spark-pooler.

Avinstallera

Ta bort komponenterna med Helm-kommandot på följande sätt.

helm delete <release_name> -n <namespace>

Ta bort AKS-klustret.

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

Introduktion av komponenter

Azure Synapse Analytics innehåller ett Helm-diagram baserat på Prometheus Operator och Synapse Prometheus Anslut or. Helm-diagrammet innehåller Prometheus-server, Grafana-server och Grafana-instrumentpaneler för Apache Spark-mått på programnivå. Du kan använda Prometheus, ett populärt övervakningssystem med öppen källkod, för att samla in dessa mått nästan i realtid och använda Grafana för visualisering.

Synapse Prometheus Anslut or

Synapse Prometheus Anslut or hjälper dig att ansluta Azure Synapse Apache Spark-poolen och din Prometheus-server. Den implementerar:

  1. Autentisering: Det är AAD-baserad autentisering och kan automatiskt uppdatera AAD-token för tjänstens huvudnamn för programidentifiering, måttinmatning och andra funktioner.
  2. Identifiering av Apache Spark-program: När du skickar program på målarbetsytan kan Synapse Prometheus Anslut eller identifiera dessa program automatiskt.
  3. Apache Spark-programmetadata: Den samlar in grundläggande programinformation och exporterar data till Prometheus.

Synapse Prometheus Anslut or släpps som en docker-avbildning som finns i Microsoft Container Registry. Den är öppen källkod och finns i Azure Synapse Apache Spark-programmått.

Prometheus-server

Prometheus är ett verktyg för övervakning och aviseringar med öppen källkod. Prometheus tog examen från Cloud Native Computing Foundation (CNCF) och blev de facto standard för molnbaserad övervakning. Prometheus kan hjälpa oss att samla in, fråga och lagra enorma mängder tidsseriedata, och det kan enkelt integreras med Grafana. I den här lösningen distribuerar vi Prometheus-komponenten baserat på helm-diagrammet.

Grafana och instrumentpaneler

Grafana är programvara för visualisering och analys med öppen källkod. Det gör att du kan fråga, visualisera, avisera på och utforska dina mått. Azure Synapse Analytics tillhandahåller en uppsättning Grafana-standardinstrumentpaneler för att visualisera Mått på programnivå i Apache Spark.

Instrumentpanelen "Synapse Workspace/Workspace" innehåller en vy på arbetsytans nivå över alla Apache Spark-pooler, antal program, processorkärnor osv.

screenshot dashboard workspace

Instrumentpanelen "Synapse Workspace/Apache Spark-pooler" innehåller måtten för Apache Spark-program som körs i den valda Apache Spark-poolen under tidsperioden.

screenshot dashboard sparkpool

Instrumentpanelen "Synapse Workspace/Apache Spark Application" innehåller det valda Apache Spark-programmet.

screenshot dashboard application

Ovanstående instrumentpanelsmallar har öppen källkod i Azure Synapse Apache Spark-programmått.