Collecter les mesures et les journaux d’applications Apache Spark en utilisant un compte de stockage Azure (préversion)
L’extension d’émission de diagnostic Fabric Apache Spark est une bibliothèque qui permet aux applications Apache Spark d’envoyer des journaux, des journaux d’évènement et des mesures vers plusieurs 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 d’application, des journaux des événements et des mesures Apache Spark à votre compte Stockage Azure.
Collecter les journaux et les métriques pour les envoyer vers un compte de stockage
Étape 1 : Créez un compte de stockage.
Pour collecter des mesures et des journaux de diagnostic, vous pouvez utiliser un compte Stockage Azure existant. Si vous n’en avez pas, vous pouvez créer un compte de stockage blob Azure ou créer un compte de stockage à utiliser avec Azure Data Lake Storage Gen2.
Étape 2 : créer un artefact d’environnement Fabric avec une configuration Apache Spark
Option 1 : configurer avec une clé d’accès et un URI Stockage Azure
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: MyStorageBlob spark.synapse.diagnostic.emitter.MyStorageBlob.type: "AzureStorage" spark.synapse.diagnostic.emitter.MyStorageBlob.categories: "DriverLog,ExecutorLog,EventLog,Metrics" spark.synapse.diagnostic.emitter.MyStorageBlob.uri: "https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>" spark.synapse.diagnostic.emitter.MyDestination1.auth: "AccessKey" spark.synapse.diagnostic.emitter.MyDestination1.secret: <storage-access-key> spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
Dans le fichier de configuration, configurez les paramètres suivants :
<my-blob-storage>
,<container-name>
,<folder-name>
,<storage-access-key>
. Pour découvrir plus d’informations sur ces paramètres, consultez Configurations de Stockage Azure.
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
<storage-access-key>
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 charger l’exemple de fichier yaml, qui inclut les propriétés Spark suivantes.
spark.synapse.diagnostic.emitters: <MyStorageBlob> spark.synapse.diagnostic.emitter.MyStorageBlob.type: "AzureStorage" spark.synapse.diagnostic.emitter.MyStorageBlob.categories: "DriverLog,ExecutorLog,EventLog,Metrics" spark.synapse.diagnostic.emitter.MyStorageBlob.uri: "https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name>" spark.synapse.diagnostic.emitter.MyStorageBlob.auth: "AccessKey" spark.synapse.diagnostic.emitter.MyStorageBlob.secret.keyVault: <AZURE_KEY_VAULT_NAME> spark.synapse.diagnostic.emitter.MyStorageBlob.secret.keyVault.secretName: <AZURE_KEY_VAULT_SECRET_KEY_NAME> spark.fabric.pools.skipStarterPools: "true" //Add this Spark property when using the default pool.
Remplissez les paramètres suivants du fichier de configuration :
<my-blob-storage>
,<container-name>
,<folder-name>
,<AZURE_KEY_VAULT_NAME>
,<AZURE_KEY_VAULT_SECRET_KEY_NAME>
. Pour découvrir plus d’informations sur ces paramètres, consultez Configurations de Stockage Azure.Enregistrez et publiez les modifications.
Étape 3 : attacher l’artefact d’environnement aux notebooks ou aux définitions de travail Spark, ou définir celui-ci 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 découvrir plus d’informations, consultez Paramètres des espaces de travail Fabric.
Étape 4 : Afficher les fichiers journaux dans le compte de stockage Azure
Après envoi d’un travail à la session Spark configurée, vous pouvez consulter les journaux d’activité et fichiers de mesures dans le compte de stockage de destination. Les journaux d’activité sont stockés dans les chemins correspondants en fonction de différentes applications identifiées par <workspaceId>.<fabricLivyId>
. Tous les fichiers journaux ont un format de lignes JSON (également appelé JSON délimité par un saut de ligne ou ndjson), ce qui est pratique pour le traitement des données.
Configurations disponibles
Configuration | Description |
---|---|
spark.synapse.diagnostic.emitters |
Obligatoire. Noms des destinations des émetteurs de diagnostic, séparés par des virgules. Par exemple, MyDest1,MyDest2 |
spark.synapse.diagnostic.emitter.<destination>.type |
Obligatoire. Type de destination intégrée. Pour activer la destination Azure Storage, vous devez inclure AzureStorage dans ce champ. |
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>.auth |
Obligatoire. AccessKey pour utiliser l’autorisation Clé d’accès du compte de stockage. SAS pour l’autorisation signatures d’accès partagé. |
spark.synapse.diagnostic.emitter.<destination>.uri |
Obligatoire. URI du dossier du conteneur d’objets blob de destination. Doit correspondre au modèle https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name> . |
spark.synapse.diagnostic.emitter.<destination>.secret |
facultatif. Contenu du secret (clé d’accès ou SAS). |
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 (clé d’accès ou SAS). |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName |
Obligatoire si .secret.keyVault est spécifié. Nom du coffre de clés Azure dans lequel le secret (clé d’accès ou SAS) est stocké. |
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 |
spark.fabric.pools.skipStarterPools |
Obligatoire. Cette propriété Spark est utilisée pour forcer une session Spark à la demande. Vous devez définir la valeur sur True lorsque vous utilisez le pool par défaut afin de déclencher les bibliothèques afin d’émettre des journaux d’activité et des mesures. |
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 Stockage Blob Azure 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 Stockage Blob Azure.