Partage via


Collecter les journaux et les métriques de vos applications Apache Spark avec Azure Event Hubs (préversion)

L’extension d’émetteur de diagnostic Apache Spark de Fabric est une bibliothèque qui permet aux applications Apache Spark d’envoyer des journaux, des journaux des évènements et des mesures vers différentes destinations, incluant Azure Log Analytics, Stockage Azure et Azure Event Hubs.

Dans ce tutoriel, vous découvrez comment utiliser l’extension d’émetteur de diagnostic Apache Spark de Fabric pour envoyer des journaux, des journaux des événements et des mesures des applications Apache Spark à votre instance Azure Event Hubs.

Collecter des journaux et des métriques pour les envoyer vers Azure Event Hubs

Étape 1 : Créer une instance Azure Event Hubs

Pour collecter des journaux de diagnostic et des mesures, vous pouvez utiliser une instance Azure Event Hubs existante. Si vous n’en avez pas, vous pouvez créer un hub d’événements.

Étape 2 : Créer un artefact d’environnement Fabric avec une configuration Apache Spark

Option 1 : Configurer avec une chaîne de connexion Azure Event Hubs

  1. Créer un artefact d’environnement Fabric dans Fabric

  2. Ajoutez les propriétés Spark suivantes avec les valeurs appropriées à l’artefact d’environnement, ou sélectionnez Ajouter à partir de .yml dans le ruban pour télécharger l’exemple de fichier yaml qui contient déjà les propriétés suivantes.

    spark.synapse.diagnostic.emitters: MyEventHub
    spark.synapse.diagnostic.emitter.MyEventHub.type: "AzureEventHub"
    spark.synapse.diagnostic.emitter.MyEventHub.categories: "Log,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.MyEventHub.secret: <connection-string>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Renseignez les paramètres <connection-string> dans le fichier de configuration. Pour plus d’informations, consultez Configurations d’Azure Event Hubs.

Option 2 : Configuration avec Azure Key Vault

Remarque

Problème connu : Impossible de démarrer temporairement une session en utilisant l’Option 2. Actuellement, le stockage des secrets dans Key Vault empêche les sessions Spark de démarrer. Configurez-le prioritairement en utilisant la méthode décrite dans l’option 1.

Vérifiez que les utilisateurs qui soumettent des applications Apache Spark reçoivent les autorisations de lire les secrets. 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 Azure Key Vault pour le stockage de la clé d’espace de travail :

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

  2. Dans la page des paramètres du coffre de clés, sélectionnez Secrets, puis Générer/Importer.

  3. Sur l’écran Créer un secret, choisissez les valeurs suivantes :

    • Nom : donnez un nom au secret.
    • Valeur : entrez <connection-string> comme secret.
    • Conservez les valeurs par défaut des autres options. Sélectionnez ensuite Créer.
  4. Créez un artefact d’environnement Fabric dans Fabric.

  5. Ajoutez les propriétés Spark suivantes. Vous pouvez aussi sélectionner Ajouter à partir de .yml sur le ruban pour télécharger l’exemple de fichier yaml, qui inclut les propriétés Spark suivantes.

    spark.synapse.diagnostic.emitters: MyEventHub
    spark.synapse.diagnostic.emitter.MyEventHub.type: "AzureEventHub"
    spark.synapse.diagnostic.emitter.MyEventHub.categories: "Log,EventLog,Metrics"
    spark.synapse.diagnostic.emitter.MyEventHub.secret.keyVault: <AZURE_KEY_VAULT_NAME>
    spark.synapse.diagnostic.emitter.MyEventHub.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME>
    spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
    

    Renseignez les paramètres suivants dans le fichier de configuration : <AZURE_KEY_VAULT_NAME>, <AZURE_KEY_VAULT_SECRET_KEY_NAME>. Pour plus d’informations sur ces paramètres, reportez-vous à Configurations d’Azure Event Hubs.

  6. Enregistrez et publiez les modifications.

Étape 3 : Attacher l’artefact d’environnement à des notebooks ou des définitions de travail Spark, ou le définir comme espace de travail par défaut

Pour attacher l’environnement à des notebooks ou des définitions de travail Spark :

  1. Accédez à votre notebook ou votre définition de travail Spark spécifique dans Fabric.
  2. Sélectionnez le menu Environnement sous l’onglet Accueil, puis sélectionnez l’environnement avec les propriétés Spark des diagnostics configurés.
  3. La configuration est appliquée quand vous démarrez une session Spark.

Pour définir l’environnement comme espace de travail par défaut :

  1. Accédez à Paramètres de l’espace de travail dans Fabric.
  2. Recherchez les paramètres Spark dans les paramètres de votre espace de travail (Paramètres de l’espace de travail –> Engineering données/Science des données –> Paramètres Spark).
  3. Sélectionnez l’onglet Environnement et choisissez l’environnement avec les propriétés Spark des diagnostics configurées, puis cliquez sur Enregistrer.

Remarque

Seuls les administrateurs d’espace de travail peuvent gérer les configurations d’espace de travail. Les modifications apportées ici s’appliquent à tous les notebooks et toutes les définitions de travail Spark attachés aux paramètres de l’espace de travail. Pour plus d’informations, consultez Paramètres des espaces de travail Fabric.

Configurations disponibles

Configuration Description
spark.synapse.diagnostic.emitters Obligatoire. Noms des destinations des émetteurs de diagnostic séparés par des virgules.
spark.synapse.diagnostic.emitter.<destination>.type Obligatoire. Type de destination intégrée. Pour pouvoir activer la destination Azure Event Hubs, la valeur doit être AzureEventHub.
spark.synapse.diagnostic.emitter.<destination>.categories facultatif. Catégories de journaux sélectionnées séparées par des virgules. Les valeurs disponibles sont les suivantes : DriverLog, ExecutorLog, EventLog, Metrics. Si aucune valeur n’est définie, la valeur par défaut sera all (toutes les catégories).
spark.synapse.diagnostic.emitter.<destination>.secret facultatif. Chaîne de connexion d’instance Azure Event Hubs. Ce champ doit correspondre à ce modèle Endpoint=sb://<FQDN>/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<PathName>
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault Obligatoire si .secret n’est pas spécifié. Nom du coffre de clés Azure dans lequel est stocké le secret (chaîne de connexion).
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName Obligatoire si .secret.keyVault est spécifié. Nom du coffre de clés Azure dans lequel est stocké le secret (chaîne de connexion).
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match facultatif. Noms des événements Spark séparés par des virgules. Vous pouvez spécifier les événements à collecter. Par exemple : SparkListenerApplicationStart,SparkListenerApplicationEnd
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match facultatif. Les noms des enregistreurs Log4j séparés par des virgules. Vous pouvez spécifier les journaux à collecter. Par exemple : org.apache.spark.SparkContext,org.example.Logger
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match facultatif. Suffixes des noms de métriques Spark séparés par des virgules. Vous pouvez spécifier les métriques à collecter. Par exemple : jvm.heap.used

Notes

La chaîne de connexion de l’instance Azure Event Hubs doit toujours contenir le EntityPath, qui est le nom de l’instance Azure Event Hubs.

Exemple de données de journal

Voici un exemple d’enregistrement de journal au format JSON :

{
  "timestamp": "2024-09-06T03:09:37.235Z",
  "category": "Log|EventLog|Metrics",
  "fabricLivyId": "<fabric-livy-id>",
  "applicationId": "<application-id>",
  "applicationName": "<application-name>",
  "executorId": "<driver-or-executor-id>",
  "fabricTenantId": "<my-fabric-tenant-id>",
  "capacityId": "<my-fabric-capacity-id>",
  "artifactType": "SynapseNotebook|SparkJobDefinition",
  "artifactId": "<my-fabric-artifact-id>",
  "fabricWorkspaceId": "<my-fabric-workspace-id>",
  "fabricEnvId": "<my-fabric-environment-id>",
  "executorMin": "<executor-min>",
  "executorMax": "<executor-max>",
  "isHighConcurrencyEnabled": "true|false",
  "properties": {
    // The message properties of logs, events and metrics.
    "timestamp": "2024-09-06T03:09:37.235Z",
    "message": "Initialized BlockManager: BlockManagerId(1, vm-04b22223, 34319, None)",
    "logger_name": "org.apache.spark.storage.BlockManager",
    "level": "INFO",
    "thread_name": "dispatcher-Executor"
    //...
  }
}

Espaces de travail Fabric avec un réseau virtuel managé

Créez un point de terminaison privé managé pour l’instance Azure Event Hubs cible. Pour obtenir des instructions détaillées, reportez-vous à Créer et utiliser des points de terminaison privés managés dans Microsoft Fabric – Microsoft Fabric.

Une fois le point de terminaison privé managé approuvé, les utilisateurs peuvent commencer à émettre des journaux et des mesures vers l’instance Azure Event Hubs cible.

Étapes suivantes