Raccogliere log e metriche delle applicazioni Apache Spark con l'account di archiviazione di Azure (anteprima)
L'estensione dell'emettitore di diagnostica Apache Spark di Fabric è una libreria che consente alle applicazioni Apache Spark di generare i log, i registri eventi e le metriche in più destinazioni, tra cui Azure Log Analytics, Archiviazione di Azure e Hub eventi di Azure.
Questa esercitazione illustra come usare l'estensione dell'emettitore di diagnostica Apache Spark di Fabric per inviare log, registri eventi e metriche dell'applicazione Apache Spark nell'account di archiviazione di Azure.
Raccogliere log e metriche nell'account di archiviazione
Passaggio 1: Creare un account di archiviazione
Per raccogliere i log di diagnostica e le metriche è possibile usare un account di archiviazione di Azure esistente. Se non si dispone di questo tipo di account, è possibile creare un account di archiviazione BLOB di Azure o creare un account di archiviazione da usare con Azure Data Lake Storage Gen2.
Passaggio 2: Creare un artefatto dell'ambiente Fabric con la configurazione di Apache Spark
Opzione 1: configurare con Archiviazione di Azure URI e chiave di accesso
Creare un artefatto dell'ambiente di Fabric in Fabric
Aggiungere le proprietà Spark seguenti con i valori appropriati all'artefatto dell'ambiente oppure selezionare Aggiungi da .yml nella barra multifunzione per scaricare il file yaml di esempio, che contiene già le proprietà seguenti.
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.
Inserire i parametri seguenti nel file di configurazione:
<my-blob-storage>
,<container-name>
,<folder-name>
,<storage-access-key>
. Per altri dettagli su questi parametri, vedere Configurazioni archiviazione di Azure.
Opzione 2: configurare con Azure Key Vault
Nota
Problema noto: impossibile avviare una sessione usando l'opzione 2 provvisoriamente. Attualmente, l'archiviazione dei segreti in Key Vault impedisce l'avvio delle sessioni Spark. Assegnare priorità alla configurazione usando il metodo descritto nell'opzione 1.
Assicurarsi che agli utenti che inviano applicazioni Apache Spark siano concesse le autorizzazioni di lettura segreta. Per ulteriori informazioni, vedere Fornire l'accesso a chiavi, certificati e segreti di Key Vault con un controllo degli accessi in base al ruolo di Azure.
Per configurare Azure Key Vault per archiviare la chiave dell'area di lavoro:
Creare e andare all'insieme di credenziali delle chiavi nel portale di Azure.
Nella pagina di impostazioni dell'insieme di credenziali delle chiavi selezionare Segreti, poi Genera importazione.
Nella schermata Crea un segreto selezionare i seguenti valori:
- Nome: immettere un nome per il segreto.
- Valore: immettere per
<storage-access-key>
il segreto. - Lasciare invariati gli altri valori predefiniti. Selezionare Crea.
Creare un artefatto dell'ambiente di Fabric in Fabric.
Aggiungere le seguenti proprietà Spark. In alternativa, selezionare Aggiungi da .yml sulla barra multifunzione per caricare il file yaml di esempio che include le proprietà spark seguenti.
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.
Inserire i parametri seguenti nel file di configurazione:
<my-blob-storage>
,<container-name>
,<folder-name>
,<AZURE_KEY_VAULT_NAME>
,<AZURE_KEY_VAULT_SECRET_KEY_NAME>
. Per altri dettagli su questi parametri, vedere Configurazioni archiviazione di Azure.Salva e pubblica le modifiche.
Passaggio 3: Collegare l'artefatto dell'ambiente ai notebook o alle definizioni dei processi Spark oppure impostarlo come predefinito per l'area di lavoro
Per collegare l'ambiente a notebook o a definizioni di processi Spark:
- Passare alla definizione specifica del notebook o del processo Spark in Fabric.
- Selezionare il menu Ambiente nella scheda Home e selezionare l'ambiente con le proprietà di diagnostica di Spark configurate.
- La configurazione viene applicata all'avvio di una Sessione Spark.
Per impostare l'ambiente dell'area di lavoro come predefinito:
- Passare a Impostazioni dell'area di lavoro in Fabric.
- Trovare le impostazioni di Spark nelle impostazioni dell'area di lavoro (Impostazione area di lavoro -> Impostazioni Ingegneria/Scienza dei dati -> Impostazioni Spark).
- Selezionare la scheda Ambiente e scegliere l'ambiente con le proprietà Spark di diagnostica configurate e fare clic su Salva.
Nota
Solo gli amministratori dell'area di lavoro possono gestire le configurazioni dell'area di lavoro. Le modifiche apportate verranno applicate a tutti i notebook e alle definizioni dei processi Spark associate alle impostazioni dell'area di lavoro. Per altre informazioni, vedere Impostazioni dell'area di lavoro Fabric.
Passaggio 4: visualizzare i file di log nell'account di archiviazione di Azure
Dopo aver inviato un processo alla sessione di Spark configurata, è possibile visualizzare i log e i file delle metriche nell'account di archiviazione di destinazione. I log vengono archiviati nei percorsi corrispondenti in base ad applicazioni diverse, identificate da <workspaceId>.<fabricLivyId>
. Tutti i file di log sono in formato di righe JSON (detto anche JSON delimitato da nuova riga o ndjson), che è utile per l'elaborazione dei dati.
Configurazioni disponibili
Impostazione | Descrizione |
---|---|
spark.synapse.diagnostic.emitters |
Obbligatorio. Nomi di destinazione delimitati da virgole degli emettitori di diagnostica. Ad esempio, MyDest1,MyDest2 |
spark.synapse.diagnostic.emitter.<destination>.type |
Obbligatorio. Tipo di destinazione predefinito. Per abilitare la destinazione di archiviazione di Azure, è necessario includere AzureStorage in questo campo. |
spark.synapse.diagnostic.emitter.<destination>.categories |
Facoltativo. Categorie di log selezionate separate da virgole. I valori disponibili includono DriverLog , ExecutorLog , EventLog e Metrics . Se non è impostato, il valore predefinito è tutte le categorie. |
spark.synapse.diagnostic.emitter.<destination>.auth |
Obbligatorio. AccessKey per l'uso dell'autorizzazione della chiave di accesso dell'account di archiviazione. SAS per l'autorizzazione delle firme di accesso condiviso. |
spark.synapse.diagnostic.emitter.<destination>.uri |
Obbligatorio. L'URI della cartella del contenitore BLOB di destinazione. Deve corrispondere al criterio https://<my-blob-storage>.blob.core.windows.net/<container-name>/<folder-name> . |
spark.synapse.diagnostic.emitter.<destination>.secret |
Facoltativo. Il contenuto di (AccessKey o SAS) segreto. |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault |
Obbligatorio se .secret non è specificato. Nome dell'insieme di credenziali delle chiavi di Azure in cui è archiviato il (AccessKey o SAS) segreto. |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.secretName |
Obbligatorio se si specifica .secret.keyVault . Il nome segreto dell'insieme di credenziali delle chiavi di Azure in cui è archiviato il (AccessKey o SAS) segreto. |
spark.synapse.diagnostic.emitter.<destination>.filter.eventName.match |
Facoltativo. I nomi degli eventi spark delimitati da virgole; è possibile specificare gli eventi da raccogliere. Ad esempio: SparkListenerApplicationStart,SparkListenerApplicationEnd |
spark.synapse.diagnostic.emitter.<destination>.filter.loggerName.match |
Facoltativo. I nomi dei logger Log4j delimitati da virgole; è possibile specificare i log da raccogliere. Ad esempio: org.apache.spark.SparkContext,org.example.Logger |
spark.synapse.diagnostic.emitter.<destination>.filter.metricName.match |
Facoltativo. I suffissi del nome della metrica Spark delimitati da virgole; è possibile specificare le metriche da raccogliere. Ad esempio: jvm.heap.used |
spark.fabric.pools.skipStarterPools |
Obbligatorio. Questa proprietà Spark viene usata per forzare una sessione Spark su richiesta. È necessario impostare il valore su True quando si usa il pool predefinito per attivare le librerie per generare log e metriche. |
Esempio di dati di log
Di seguito è riportato un record di log di esempio in formato 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"
//...
}
}
Aree di lavoro di Fabric con Rete virtuale gestita
Creare un endpoint privato gestito per l'Archiviazione BLOB di Azure di destinazione. Per istruzioni dettagliate, si veda Creare e usare endpoint privati gestiti in Microsoft Fabric - Microsoft Fabric.
Dopo l'approvazione dell'endpoint privato gestito, gli utenti possono iniziare a generare log e metriche nell'Archiviazione BLOB di Azure di destinazione.