Monitorer des applications Apache Spark avec Azure Log Analytics
Dans ce tutoriel, vous allez apprendre à activer le connecteur Synapse Studio intégré à Log Analytics. Vous pourrez ensuite collecter et envoyer des métriques et des journaux de l’application Apache Spark à votre espace de travail log Analytics. Enfin, vous aurez la possibilité d’utiliser un classeur Azure Monitor pour visualiser ces métriques et journaux.
Configuration des informations de l’espace de travail
Pour configurer les informations nécessaires dans Synapse Studio, procédez comme suit.
Étape 1 : Créer un espace de travail Log Analytics
Pour créer cet espace de travail, consultez l’une des ressources suivantes :
- Créer un espace de travail dans le portail Azure.
- Créer un espace de travail avec Azure CLI.
- Créer et configurer un espace de travail dans Azure Monitor avec PowerShell.
Étape 2 : Collecter les informations de configuration
Utilisez l’une des options suivantes pour préparer la configuration.
Option 1 : Configuration avec l’ID et la clé de l’espace de travail Log Analytics
Collectez les valeurs suivantes pour la configuration Spark :
<LOG_ANALYTICS_WORKSPACE_ID>
: ID de l’espace de travail Log Analytics<LOG_ANALYTICS_WORKSPACE_KEY>
: clé Log Analytics. Pour la trouvez, accédez au portail Azure, puis à Espace de travail Azure Log Analytics>Agents>Clé primaire.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.secret <LOG_ANALYTICS_WORKSPACE_KEY>
Option 2 : Configuration avec Azure Key Vault
Notes
Vous devez octroyer une autorisation de lecture des secrets aux utilisateurs qui soumettent des applications Apache Spark. Pour plus d’informations, consultez Attribution de l’accès aux clés, certificats et secrets Key Vault avec un contrôle d’accès en fonction du rôle Azure. Quand vous activez cette fonctionnalité dans un pipeline Synapse, vous devez utiliser l’option 3. Celle-ci est nécessaire pour obtenir le secret auprès d’Azure Key Vault avec l’identité managée de l’espace de travail.
Pour configurer Azure Key Vault de façon à stocker la clé de l’espace de travail, procédez comme suit :
Créez votre coffre de clés et accédez-y sur le Portail Azure.
Sur les pages de paramètres du coffre de clés, sélectionnez Secrets.
Sélectionnez Générer/Importer.
Sur l’écran Créer un secret, choisissez les valeurs suivantes :
- Nom : donnez un nom au secret. Pour sélectionner la valeur par défaut, entrez
SparkLogAnalyticsSecret
. - Valeur : entrez
<LOG_ANALYTICS_WORKSPACE_KEY>
comme secret. - Conservez les valeurs par défaut des autres options. Sélectionnez ensuite Créer.
- Nom : donnez un nom au secret. Pour sélectionner la valeur par défaut, entrez
Collectez les valeurs suivantes pour la configuration Spark :
<LOG_ANALYTICS_WORKSPACE_ID>
: ID de l’espace de travail Log Analytics<AZURE_KEY_VAULT_NAME>
: nom du coffre de clés configuré<AZURE_KEY_VAULT_SECRET_KEY_NAME>
(facultatif) : nom du secret dans le coffre de clés pour la clé de l’espace de travail. Par défaut, il s’agit deSparkLogAnalyticsSecret
.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.keyVault.name <AZURE_KEY_VAULT_NAME>
spark.synapse.logAnalytics.keyVault.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>
Notes
Vous pouvez également stocker l’ID de l’espace de travail dans Key Vault. Pour le stocker avec le nom du secret SparkLogAnalyticsWorkspaceId
, reportez-vous à la procédure précédente. Vous pouvez également utiliser la configuration spark.synapse.logAnalytics.keyVault.key.workspaceId
pour spécifier le nom du secret de l’ID de l’espace de travail dans Key Vault.
Option 3. Configuration avec un service lié
Notes
Dans cette option, vous devez accorder l’autorisation de lecture du secret à l’identité managée de l’espace de travail. Pour plus d’informations, consultez Attribution de l’accès aux clés, certificats et secrets Key Vault avec un contrôle d’accès en fonction du rôle Azure.
Pour configurer un service lié Azure Key Vault dans Synapse Studio de façon à stocker la clé de l’espace de travail, procédez comme suit :
Suivez toutes les étapes de la section précédente, « Option 2 ».
Créez un service lié Key Vault dans Synapse Studio :
a. Accédez à Synapse Studio>Gérer>Services liés, puis sélectionnez Créer.
b. Dans la zone de recherche, recherchez Azure Key Vault.
c. Donnez un nom au service lié.
d. Choisissez votre coffre de clés, puis sélectionnez Créer.
Ajoutez un élément
spark.synapse.logAnalytics.keyVault.linkedServiceName
à la configuration Apache Spark.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.keyVault.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>
spark.synapse.logAnalytics.keyVault.linkedServiceName <LINKED_SERVICE_NAME>
Pour obtenir la liste des configurations Apache Spark, consultez Configurations Apache Spark disponibles
Étape 3 : Créer une configuration Apache Spark
Vous pouvez créer une configuration Apache Spark pour votre espace de travail. Quand vous créez un Notebook ou une définition de tâche Apache Spark, vous pouvez sélectionner la configuration Apache Spark à utiliser avec votre pool Apache Spark. Lorsque vous la sélectionnez, les détails de la configuration s’affichent.
Sélectionnez Gérer>Configurations Apache Spark.
Sélectionnez le bouton Nouveau pour créer une configuration Apache Spark.
La page Nouvelle configuration Apache Spark s’ouvre une fois que vous avez sélectionné le bouton Nouveau.
Pour Nom, vous pouvez entrer votre nom préféré valide.
Pour Description, vous pouvez entrer une description.
Pour Annotations, vous pouvez ajouter des annotations en cliquant sur le bouton Nouveau, et vous pouvez également supprimer des annotations existantes en sélectionnant et en cliquant sur le bouton Supprimer.
Pour Propriétés de configuration, ajoutez toutes les propriétés de l’option de configuration que vous avez choisie en sélectionnant le bouton Ajouter. Pour Propriété, ajoutez le nom de propriété tel qu’il est listé, et pour Valeur, utilisez la valeur que vous avez collectée à l’étape 2. Si vous n’ajoutez pas de propriété, Azure Synapse utilise la valeur par défaut, le cas échéant.
Envoyer une application Apache Spark, et voir les journaux et les métriques
Voici comment procéder :
Envoyez une application Apache Spark au pool Apache Spark configuré à l’étape précédente. Pour cela, vous avez plusieurs possibilités :
- Exécutez un notebook dans Synapse Studio.
- Dans Synapse Studio, envoyez un programme de traitement par lots Apache Spark avec une définition de travail Apache Spark.
- Exécutez un pipeline contenant une activité Apache Spark.
Accédez à l’espace de travail Log Analytics spécifié, puis visualisez les métriques et les journaux de l’application Apache Spark quand celle-ci commence à s’exécuter.
Écrire des journaux d’application personnalisés
Vous pouvez utiliser la bibliothèque Apache Log4j pour écrire des journaux personnalisés.
Exemple pour Scala :
%%spark
val logger = org.apache.log4j.LogManager.getLogger("com.contoso.LoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
//log exception
try {
1/0
} catch {
case e:Exception =>logger.warn("Exception", e)
}
// run job for task level metrics
val data = sc.parallelize(Seq(1,2,3,4)).toDF().count()
Exemple pour PySpark :
%%pyspark
logger = sc._jvm.org.apache.log4j.LogManager.getLogger("com.contoso.PythonLoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
Visualisation des métriques et journaux avec l’exemple de classeur
Ouvrez et copiez le contenu du fichier de classeur.
Sur le Portail Azure, sélectionnez Espace de travail Log Analytics>Classeurs.
Ouvrez le classeur Vide. Utilisez le mode Éditeur avancé en sélectionnant l’icône </>.
Collez le contenu copié par-dessus le code JSON existant.
Sélectionnez Appliquer, puis Modification terminée.
Soumettez ensuite votre application Apache Spark au pool Apache Spark configuré. Une fois l’application passée dans un état en cours d’exécution, choisissez-la dans la liste déroulante des classeurs.
Il est possible de personnaliser le classeur. Par exemple, vous pouvez utiliser des requêtes Kusto et configurer des alertes.
Interroger des données avec Kusto
Voici un exemple d’interrogation d’événements Apache Spark :
SparkListenerEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100
Voici un exemple d’interrogation des journaux du pilote et des exécuteurs de l’application Apache Spark :
SparkLoggingEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100
Enfin, voici un exemple d’interrogation de métriques Apache Spark :
SparkMetrics_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| where name_s endswith "jvm.total.used"
| summarize max(value_d) by bin(TimeGenerated, 30s), executorId_s
| order by TimeGenerated asc
Création et gestion des alertes
Les utilisateurs peuvent lancer des requêtes pour évaluer les métriques et les journaux à une fréquence définie et déclencher une alerte en fonction des résultats. Pour plus d’informations, consultez Création, affichage et gestion des alertes de journaux avec Azure Monitor.
Espace de travail Synapse où est activée la protection contre l’exfiltration de données
Après cela, l’espace de travail Synapse est créé avec la protection contre l’exfiltration de données activée.
Quand vous souhaitez activer cette fonctionnalité, vous devez créer des requêtes de connexion de point de terminaison privé géré vers des étendues de liaison privée Azure Monitor (AMPLS) dans les tenants (locataires) Microsoft Entra approuvés de l’espace de travail.
Vous pouvez suivre les étapes ci-dessous pour créer une connexion de point de terminaison privé managé à des étendues de liaison privée Azure Monitor :
- S’il n’existe aucune étendue AMPLS, consultez Configuration d’une connexion Azure Monitor utilisant Private Link pour en créer une.
- Accédez à votre étendue AMPLS dans le portail Azure, puis, dans la page Ressources Azure Monitor, sélectionnez Ajouter pour ajouter une connexion à votre espace de travail Azure Log Analytics.
- Accédez à Synapse Studio > Gérer > Points de terminaison privés gérés, sélectionnez le bouton Nouveau, sélectionnez Étendues de liaison privée Azure Monitor, puis Continuer.
- Choisissez l’étendue de liaison privée Azure Monitor que vous avez créée, puis sélectionnez le bouton Créer.
- Attendez quelques minutes que le provisionnement du point de terminaison privé soit terminé.
- Accédez à nouveau à votre AMPLS dans le portail Azure et, dans la page Connexions de point de terminaison privé, sélectionnez la connexion provisionnée, puis Approuver.
Remarque
- L’objet AMPLS a un certain nombre de limites à prendre en compte quand vous planifiez la configuration de votre liaison privée. Consultez Limites d’AMPLS pour une présentation plus approfondie de ces limites.
- Vérifiez si vous disposez de l’autorisation appropriée pour créer un point de terminaison privé managé.