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
Créer un artefact d’environnement Fabric dans Fabric
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 :
Créez votre coffre de clés et accédez-y sur le Portail Azure.
Dans la page des paramètres du coffre de clés, sélectionnez Secrets, puis Générer/Importer.
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.
Créez un artefact d’environnement Fabric dans Fabric.
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.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 :
- Accédez à votre notebook ou votre définition de travail Spark spécifique dans Fabric.
- Sélectionnez le menu Environnement sous l’onglet Accueil, puis sélectionnez l’environnement avec les propriétés Spark des diagnostics configurés.
- La configuration est appliquée quand vous démarrez une session Spark.
Pour définir l’environnement comme espace de travail par défaut :
- Accédez à Paramètres de l’espace de travail dans Fabric.
- 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).
- 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.