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
- Interfaccia della riga di comando di Azure
- Client Helm 3.30+
- kubectl
- 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.
Accedere all'area di lavoro di Azure Synapse Analytics come Synapse Amministrazione istrator
Nel riquadro sinistro di Synapse Studio selezionare Gestisci > controllo di accesso
Fare clic sul pulsante Aggiungi in alto a sinistra per aggiungere un'assegnazione di ruolo
Per Ambito scegliere Area di lavoro
Per Ruolo scegliere Operatore di calcolo Synapse
Per Selezionare l'utente immettere il <service_principal_name> e fare clic sull'entità servizio
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
- 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
- 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:
- 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.
- Individuazione di applicazioni Apache Spark: quando si inviano applicazioni nell'area di lavoro di destinazione, Synapse Prometheus Connessione or può individuare automaticamente queste applicazioni.
- 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.
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.
Il dashboard "Area di lavoro Synapse/Applicazione Apache Spark" contiene l'applicazione Apache Spark selezionata.
I modelli di dashboard precedenti sono stati open source nelle metriche dell'applicazione Apache Spark di Azure Synapse.