Partager via


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 :

É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 :

  1. Créez votre coffre de clés et accédez-y sur le Portail Azure.

  2. Sur les pages de paramètres du coffre de clés, sélectionnez Secrets.

  3. Sélectionnez Générer/Importer.

  4. 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.
  5. 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 de SparkLogAnalyticsSecret.
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 :

  1. Suivez toutes les étapes de la section précédente, « Option 2 ».

  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.

  3. 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.

  1. Sélectionnez Gérer>Configurations Apache Spark.

  2. Sélectionnez le bouton Nouveau pour créer une configuration Apache Spark.

  3. La page Nouvelle configuration Apache Spark s’ouvre une fois que vous avez sélectionné le bouton Nouveau.

    Capture d’écran montrant la création d’une configuration Spark.

  4. Pour Nom, vous pouvez entrer votre nom préféré valide.

  5. Pour Description, vous pouvez entrer une description.

  6. 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.

  7. 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.

    Capture d’écran avec un exemple de mise à jour des propriétés de configuration.

Envoyer une application Apache Spark, et voir les journaux et les métriques

Voici comment procéder :

  1. 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.
  2. 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

  1. Téléchargez le classeur.

  2. Ouvrez et copiez le contenu du fichier de classeur.

  3. Sur le Portail Azure, sélectionnez Espace de travail Log Analytics>Classeurs.

  4. Ouvrez le classeur Vide. Utilisez le mode Éditeur avancé en sélectionnant l’icône </>.

  5. Collez le contenu copié par-dessus le code JSON existant.

  6. Sélectionnez Appliquer, puis Modification terminée.

    Capture d’écran montrant un nouveau classeur.

    Capture d’écran montrant comment importer un classeur.

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.

Capture d’écran montrant un classeur.

Il est possible de personnaliser le classeur. Par exemple, vous pouvez utiliser des requêtes Kusto et configurer des alertes.

Capture d’écran montrant la personnalisation d’un classeur avec une requête et 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 :

  1. S’il n’existe aucune étendue AMPLS, consultez Configuration d’une connexion Azure Monitor utilisant Private Link pour en créer une.
  2. 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.
  3. 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.

    Capture d’écran de la création d’un point de terminaison privé géré AMPLS 1.

  4. Choisissez l’étendue de liaison privée Azure Monitor que vous avez créée, puis sélectionnez le bouton Créer.

    Capture d’écran de la création d’un point de terminaison privé géré AMPLS 2.

  5. Attendez quelques minutes que le provisionnement du point de terminaison privé soit terminé.
  6. 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é.