Monitorare le metriche delle applicazioni Apache Spark con Prometheus e Grafana

Panoramica

In questa esercitazione si apprenderà come distribuire la soluzione di metriche dell'applicazione Apache Spark in un cluster servizio Azure Kubernetes (AKS) e come integrare i dashboard di Grafana.

È possibile usare questa soluzione per raccogliere ed eseguire query sui dati delle metriche di Apache Spark quasi in tempo reale. I dashboard integrati di Grafana consentono di diagnosticare e monitorare l'applicazione Apache Spark. Il codice sorgente e le configurazioni sono stati open source in GitHub.

Prerequisiti

  1. Interfaccia della riga di comando di Azure
  2. Client Helm 3.30+
  3. kubectl
  4. Servizio Azure Kubernetes (AKS)

In alternativa, usare Azure Cloud Shell, che include già l'interfaccia della riga di comando di Azure, il client Helm e kubectl predefiniti.

Accedere ad Azure

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

Creare un'istanza del servizio Azure Kubernetes

Usare il comando dell'interfaccia della riga di comando di Azure per creare un cluster Kubernetes nella sottoscrizione.

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>

Nota: questo passaggio può essere ignorato se si dispone già di un cluster del servizio Azure Kubernetes.

Creare un'entità servizio e concedere l'autorizzazione all'area di lavoro di Synapse

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

Il risultato dovrebbe essere simile al seguente:

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

Prendere nota dell'id app, della password e dell'ID tenant.

screenshot grant permission srbac

  1. Accedere all'area di lavoro di Azure Synapse Analytics come Synapse Amministrazione istrator

  2. Nel riquadro sinistro di Synapse Studio selezionare Gestisci > controllo di accesso

  3. Fare clic sul pulsante Aggiungi in alto a sinistra per aggiungere un'assegnazione di ruolo

  4. Per Ambito scegliere Area di lavoro

  5. Per Ruolo scegliere Operatore di calcolo Synapse

  6. Per Selezionare l'utente immettere il <service_principal_name> e fare clic sull'entità servizio

  7. Fare clic su Applica (attendere 3 minuti per rendere effettiva l'autorizzazione).

Nota

Assicurarsi che l'entità servizio sia almeno "Lettore" nell'area di lavoro di Synapse. Passare alla scheda Controllo di accesso (IAM) del portale di Azure e controllare le impostazioni delle autorizzazioni.

Installare il connettore, il server Prometheus, il dashboard di Grafana

  1. Aggiungere il repository synapse-charts al client Helm.
helm repo add synapse-charts https://github.com/microsoft/azure-synapse-spark-metrics/releases/download/helm-chart
  1. Installare i componenti tramite il client 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: nome dell'area di lavoro di Synapse.
  • subscription_id: ID sottoscrizione dell'area di lavoro di Synapse.
  • workspace_resource_group_name: nome del gruppo di risorse dell'area di lavoro di Synapse.
  • tenant_id: ID tenant dell'area di lavoro di Synapse.
  • service_principal_app_id: l'entità servizio "appId"
  • service_principal_password: password dell'entità servizio creata.

Accedere a Grafana

Ottenere la password e l'indirizzo predefiniti di Grafana. È possibile modificare la password nelle impostazioni di Grafana.

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

Ottenere l'ip del servizio, copiare e incollare l'ip esterno nel browser e accedere con il nome utente "admin" e la password.

Usare i dashboard di Grafana

Trovare Il dashboard di Synapse nell'angolo superiore sinistro della pagina Grafana (Home -> Area di lavoro Synapse/Applicazione Synapse), provare a eseguire un codice di esempio in Synapse Studio e attendere alcuni secondi per il pull delle metriche.

È anche possibile usare i dashboard "Area di lavoro/area di lavoro Synapse/ Area di lavoro Synapse/Pool di Apache Spark" per ottenere una panoramica dell'area di lavoro e dei pool di Apache Spark.

Disinstalla

Rimuovere i componenti dal comando Helm come indicato di seguito.

helm delete <release_name> -n <namespace>

Eliminare il cluster del servizio Azure Kubernetes.

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

Introduzione ai componenti

Azure Synapse Analytics offre un grafico Helm basato su Prometheus Operator e Synapse Prometheus Connessione or. Il grafico Helm include il server Prometheus, il server Grafana e i dashboard di Grafana per le metriche a livello di applicazione Apache Spark. È possibile usare Prometheus, un popolare sistema di monitoraggio open source, per raccogliere queste metriche quasi in tempo reale e usare Grafana per la visualizzazione.

Synapse Prometheus Connessione or

Synapse Prometheus Connessione or consente di connettere il pool di Apache Spark di Azure Synapse e il server Prometheus. Implementa:

  1. Autenticazione: si tratta dell'autenticazione basata su AAD e può aggiornare automaticamente il token AAD dell'entità servizio per l'individuazione delle applicazioni, l'inserimento delle metriche e altre funzioni.
  2. Individuazione di applicazioni Apache Spark: quando si inviano applicazioni nell'area di lavoro di destinazione, Synapse Prometheus Connessione or può individuare automaticamente queste applicazioni.
  3. Metadati dell'applicazione Apache Spark: raccoglie informazioni di base sull'applicazione ed esporta i dati in Prometheus.

Synapse Prometheus Connessione or viene rilasciato come immagine Docker ospitata in Registro Contenitori Microsoft. È open source e si trova nelle metriche dell'applicazione Apache Spark di Azure Synapse.

Server Prometheus

Prometheus è un toolkit di monitoraggio e avvisi open source. Prometheus si è laureato presso la Cloud Native Computing Foundation (CNF) ed è diventato lo standard de facto per il monitoraggio nativo del cloud. Prometheus può essere utile per raccogliere, eseguire query e archiviare grandi quantità di dati di serie temporali e può essere facilmente integrato con Grafana. In questa soluzione viene distribuito il componente Prometheus in base al grafico helm.

Grafana e dashboard

Grafana è un software di analisi e visualizzazione open source. Consente di eseguire query, visualizzare, inviare avvisi ed esplorare le metriche. Azure Synapse Analytics offre un set di dashboard Grafana predefiniti per visualizzare le metriche a livello di applicazione Apache Spark.

Il dashboard "Area di lavoro/area di lavoro Synapse" offre una visualizzazione a livello di area di lavoro di tutti i pool di Apache Spark, i conteggi delle applicazioni, i core cpu e così via.

screenshot dashboard workspace

Il dashboard "Synapse Workspace/Apache Spark pools" contiene le metriche delle applicazioni Apache Spark in esecuzione nel pool di Apache Spark selezionato durante il periodo di tempo.

screenshot dashboard sparkpool

Il dashboard "Area di lavoro Synapse/Applicazione Apache Spark" contiene l'applicazione Apache Spark selezionata.

screenshot dashboard application

I modelli di dashboard precedenti sono stati open source nelle metriche dell'applicazione Apache Spark di Azure Synapse.