Superviser les métriques des applications Apache Spark avec Prometheus et Grafana
Vue d’ensemble
Dans ce tutoriel, vous découvrirez comment déployer la solution de métrique de l’application Apache Spark sur un cluster Azure Kubernetes Service (AKS) et intégrer les tableaux de bord Grafana.
Vous pouvez utiliser cette solution pour collecter et interroger les données de métriques Apache Spark en quasi-temps réel. Les tableaux de bord Grafana intégrés vous permettent de diagnostiquer et de surveiller votre application Apache Spark. Le code source et les configurations sont désormais en open source sur GitHub.
Prérequis
Vous pouvez aussi utiliser Azure Cloud Shell, qui intègre déjà Azure CLI, le client Helm et kubectl prêts à l’emploi.
Connexion à Azure
az login
az account set --subscription "<subscription_id>"
Créer une instance de service Azure Kubernetes (AKS)
Utilisez la commande Azure CLI pour créer un cluster Kubernetes dans votre abonnement.
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>
Remarque : vous pouvez ignorer cette étape si vous possédez déjà un cluster AKS.
Créer un principal du service et octroyer l’autorisation à l’espace de travail Synapse
az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>
Le résultat doit avoir l’aspect suivant :
{
"appId": "abcdef...",
"displayName": "<service_principal_name>",
"name": "http://<service_principal_name>",
"password": "abc....",
"tenant": "<tenant_id>"
}
Notez l’appId, le mot de passe et le tenantID.
Connectez-vous à votre espace de travail Azure Synapse Analytics en tant qu’administrateur Synapse
Dans Synapse Studio, sélectionnez Gérer > Contrôle d’accès dans le volet de gauche
Cliquez sur le bouton Ajouter situé en haut à gauche pour ajouter une attribution de rôle
Pour Étendue, choisissez Espace de travail
Pour Rôle, choisissez Opérateur de capacité de calcul Synapse
Pour Sélectionner un utilisateur, entrez votre <service_principal_name> et cliquez sur votre principal de service
Cliquez sur Appliquer (attendez 3 minutes pour que l’autorisation prenne effet.)
Notes
Vérifiez que votre principal de service joue au moins un rôle de « Lecteur » dans votre espace de travail Synapse. Accédez à l’onglet Access Control (IAM) du portail Azure et vérifiez les paramètres d’autorisation.
Installer le connecteur, le serveur Prometheus et le tableau de bord Grafana
- Ajoutez le référentiel synapse-charts au client Helm.
helm repo add synapse-charts https://github.com/microsoft/azure-synapse-spark-metrics/releases/download/helm-chart
- Installez les composants à l’aide du 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 : nom de l’espace de travail Synapse.
- subscription_id : ID de l’abonnement de l’espace de travail Synapse.
- workspace_resource_group_name : nom du groupe de ressources de l’espace de travail Synapse.
- tenant_id : ID de locataire de l’espace de travail Synapse.
- service_principal_app_id : principal de service « appId »
- service_principal_password : mot de passe du principal de service que vous avez créé.
Se connecter à Grafana
Obtenez le mot de passe et l’adresse par défaut de Grafana. Vous pouvez modifier le mot de passe dans les paramètres Grafana.
kubectl get secret --namespace spo spo-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
kubectl -n spo get svc spo-grafana
Obtenez l’IP de service, copiez et collez l’adresse IP externe dans le navigateur, puis connectez-vous avec le nom d’utilisateur « admin » et le mot de passe.
Utiliser les tableaux de bord Grafana
Recherchez le tableau de bord Synapse en haut à gauche de la page Grafana (Accueil -> Espace de travail Synapse/Application Synapse). Essayez d’exécuter un exemple de code dans Synapse Studio et patientez quelques secondes pour que les métriques soient extraites.
Vous pouvez aussi utiliser les tableaux de bord « Espace de travail Synapse/Espace de travail » et « Espace de travail Synapse/Pools Apache Spark » pour obtenir une vue d’ensemble de votre espace de travail et de vos pools Apache Spark.
Désinstaller l’interface
Procédez comme suit pour supprimer les composants à l’aide de la commande Helm.
helm delete <release_name> -n <namespace>
Supprimez le cluster AKS.
az aks delete --name <kubernetes_cluster_name> --resource-group <kubernetes_cluster_rg>
Présentation des composants
Azure Synapse Analytics fournit un graphique Helm en fonction de l’opérateur Prometheus et du connecteur Synapse Prometheus. Le graphique Helm comprend le serveur Prometheus, le serveur Grafana et les tableaux de bord Grafana pour les métriques de l’application Apache Spark. Vous pouvez utiliser Prometheus, un système de surveillance open source populaire, pour collecter ces métriques en quasi-temps réel et utiliser Grafana pour la visualisation.
Connecteur Synapse Prometheus
Le connecteur Synapse Prometheus vous permet de connecter le pool Azure Synapse Apache Spark et le serveur Prometheus. Ce dernier implémente :
- L’authentification : authentification AAD permettant d’actualiser automatiquement le jeton AAD du principal de service pour la découverte d’applications, l’ingestion des métriques et d’autres fonctions.
- La découverte des applications Apache Spark : lorsque vous soumettez des applications dans l’espace de travail cible, le connecteur Synapse Prometheus découvre automatiquement ces applications.
- Les métadonnées de l’application Apache Spark : collecte les informations de base de l’application et exporte les données vers Prometheus.
Le connecteur Synapse Prometheus est publié en tant qu’image Docker hébergée sur Microsoft Container Registry. Il s’agit d’un connecteur open source qui se trouve dans les métriques de l’application Azure Synapse Apache Spark.
Serveur Prometheus
Prometheus est un kit de ressources de surveillance et d’alerte open source. Prometheus a été désigné projet Graduated par la Cloud Native Computing Foundation (CNCF) et est devenu la norme de facto pour la surveillance cloud native. Prometheus peut vous aider à collecter, interroger et stocker un grand nombre de données de séries chronologiques, et il peut être facilement intégré à Grafana. Dans cette solution, nous déployons le composant Prometheus selon le graphique Helm.
Grafana et tableaux de bord
Grafana est un logiciel de visualisation et d’analyse open source. Ce logiciel vous permet d’interroger, de visualiser, d’alerter et d’explorer vos métriques. Azure Synapse Analytics fournit un ensemble de tableaux de bord Grafana par défaut pour visualiser les métriques de l’application Apache Spark.
Grâce au tableau de bord « Espace de travail Synapse/Espace de travail », vous pouvez voir l’espace de travail de tous les pools Apache Spark, le nombre d’applications, les cœurs de processeurs, etc.
Le tableau de bord « Espace de travail Synapse/Pools Apache Spark » contient les métriques des applications Apache Spark s’exécutant dans le pool Apache Spark sélectionné au cours de la période.
Le tableau de bord « Espace de travail Synapse/Application Apache Spark » contient l’application Apache Spark sélectionnée.
Les modèles de tableau de bord ci-dessus sont désormais en open source dans les métriques de l’application Azure Synapse Apache Spark.