Monitorare le applicazioni Apache Spark con Azure Log Analytics
Questa esercitazione spiega come abilitare il connettore Synapse Studio integrato in Log Analytics. È quindi possibile raccogliere e inviare metriche e log dell'applicazione Apache Spark all'area di lavoro Log Analytics. Infine, è possibile usare una cartella di lavoro di Monitoraggio di Azure per visualizzare le metriche e i log.
Configurare informazioni sull’area di lavoro
Seguire questa procedura per configurare le informazioni necessarie in Synapse Studio.
Passaggio 1: creare un'area di lavoro Log Analytics
Per creare questa area di lavoro, vedere una delle risorse seguenti:
- Creare un'area di lavoro nel portale di Azure.
- Creare un'area di lavoro con l'interfaccia della riga di comando di Azure.
- Creare e configurare un'area di lavoro n Monitoraggio di Azure usando PowerShell.
Passaggio 2: preparare un file di configurazione di Apache Spark
Utilizzare una delle opzioni seguenti per preparare il file.
Opzione 1: configurare con l'ID e la chiave dell'area di lavoro Log Analytics
Copiare la configurazione di Apache Spark seguente, salvarla come spark_loganalytics_conf.txte compilare i parametri seguenti:
<LOG_ANALYTICS_WORKSPACE_ID>
: ID dell'area di lavoro Log Analytics.<LOG_ANALYTICS_WORKSPACE_KEY>
: chiave di Log Analytics. Per trovarla, nel portale di Azure andare a Area di lavoro Log Analytics>Agenti>Chiave primaria.
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.secret <LOG_ANALYTICS_WORKSPACE_KEY>
Opzione 2: configurare con Azure Key Vault
Nota
È necessario concedere l'autorizzazione del segreto di lettura agli utenti che invieranno applicazioni Apache Spark. 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. Quando si abilita questa funzionalità in una pipeline di Synapse, è necessario usare l'opzione 3. È necessario per ottenere il segreto da Azure Key Vault con identità gestita dell'area di lavoro.
Per configurare Azure Key Vault per archiviare la chiave dell'area di lavoro, seguire questa procedura:
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.
Seleziona Genera/Importa.
Nella schermata Crea un segreto selezionare i seguenti valori:
- Nome: immettere un nome per il segreto. Per impostazione predefinita, immettere
SparkLogAnalyticsSecret
. - Valore: immettere per
<LOG_ANALYTICS_WORKSPACE_KEY>
il segreto. - Lasciare invariati gli altri valori predefiniti. Selezionare Crea.
- Nome: immettere un nome per il segreto. Per impostazione predefinita, immettere
Copiare la configurazione di Apache Spark seguente, salvarla come spark_loganalytics_conf.txte compilare i parametri seguenti:
<LOG_ANALYTICS_WORKSPACE_ID>
: l'ID area di lavoro Azure Log Analytics.<AZURE_KEY_VAULT_NAME>
: nome dell'insieme di credenziali delle chiavi configurato.<AZURE_KEY_VAULT_SECRET_KEY_NAME>
(facoltativo): nome del segreto nell'insieme di credenziali delle chiavi per la chiave dell'area di lavoro. Il valore predefinito è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>
Nota
È anche possibile archiviare l'ID dell'area di lavoro in Key Vault. Fare riferimento ai passaggi precedenti e archiviare l'ID dell'area di lavoro con il nome del segreto SparkLogAnalyticsWorkspaceId
. In alternativa, è possibile usare la configurazione spark.synapse.logAnalytics.keyVault.key.workspaceId
per specificare il nome del segreto ID dell’area di lavoro in Key Vault.
Opzione 3. Configurare con un servizio collegato
Nota
In questa opzione è necessario concedere l'autorizzazione del segreto di lettura all'identità gestita dell'area di lavoro. 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 un servizio collegato di Key Vault in Synapse Studio per archiviare la chiave dell'area di lavoro, seguire questa procedura:
Seguire tutti i passaggi della sezione precedente, "Opzione 2".
Creare un servizio collegato Key Vault in Synapse Studio:
a. Andare a Studio>Gestisci>Servizi collegati e selezionare Nuovo.
b. Nella casella di ricerca cercare Azure Key Vault.
c. Immettere un nome per il servizio collegato.
d. Scegliere l'insieme di credenziali delle chiavi e selezionare Crea.
Aggiungere un elemento
spark.synapse.logAnalytics.keyVault.linkedServiceName
alla configurazione di Apache Spark.
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>
spark.synapse.logAnalytics.keyVault.linkedServiceName <LINKED_SERVICE_NAME>
Per un elenco delle configurazioni di Apache Spark, vedere Configurazioni di Apache Spark disponibili
Passaggio 3: caricare la configurazione di Apache Spark in un pool di Apache Spark
Nota
Questo passaggio verrà sostituito dal passaggio 4.
È possibile caricare il file di configurazione nel pool di Apache Spark di Azure Synapse Analytics. In Synapse Studio:
Selezionare Gestisci>Pool di Apache Spark.
Accanto al pool di Apache Spark selezionare il pulsante ....
Selezionare Configurazione di Apache Spark.
Selezionare Caricae scegliere il file spark_loganalytics_conf.txt.
Selezionare Carica e quindi Applica.
Nota
Tutte le applicazioni Apache Spark inviate al pool di Apache Spark useranno l'impostazione di configurazione per eseguire il push delle metriche e dei log dell'applicazione Apache Spark nell'area di lavoro specificata.
Passaggio 4: creare una configurazione di Apache Spark
È possibile creare una configurazione di Apache Spark nell'area di lavoro; inoltre, quando si crea la definizione del processo Apache Spark o Notebook è possibile selezionare la configurazione di Apache Spark che si desidera usare con il pool di Apache Spark. Quando si seleziona questa voce, vengono visualizzati i dettagli della configurazione.
Selezionare Gestisci>configurazioni di Apache Spark.
Fare clic sul pulsante Nuovo per creare una nuova configurazione di Apache Spark, oppure fare clic su Importa un file di .json locale nell'area di lavoro.
La pagina Nuova configurazione di Apache Spark verrà aperta dopo aver fatto clic sul pulsante Nuovo.
In Nomeè possibile immettere il nome preferito e valido.
In Descrizioneè possibile immettere una descrizione.
In Annotazioni, è possibile aggiungere annotazioni facendo clic sul pulsante Nuovo; è anche possibile eliminare le annotazioni esistenti selezionando e facendo clic sul pulsante Elimina.
In Proprietà di configurazione, personalizzare la configurazione facendo clic sul pulsante Aggiungi per aggiungere proprietà. Se non si aggiunge una proprietà, Azure Synapse userà il valore predefinito, se applicabile.
Inviare un'applicazione Apache Spark e visualizzare i log e le metriche
In tal caso, eseguire la procedura seguente:
Inviare un'applicazione Apache Spark al pool di Apache Spark configurato nel passaggio precedente. È possibile usare uno dei modi seguenti per eseguire questa operazione:
- Eseguire un notebook in Synapse Studio.
- In Synapse Studio inviare un processo batch Apache Spark tramite una definizione di processo Apache Spark.
- Eseguire una pipeline contenente l'attività Apache Spark.
Andare all'area di lavoro Log Analytics specificata e visualizzare le metriche e i log dell'applicazione all'avvio dell'esecuzione dell'applicazione Apache Spark.
Scrivere log di applicazioni personalizzati
È possibile usare la libreria Apache Log4j per scrivere log personalizzati.
Esempio per 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()
Esempio per 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")
Usare la cartella di lavoro di esempio per visualizzare le metriche e i log
Aprire e copiare il contenuto del file della cartella di lavoro.
Nel portale di Azure selezionare l'area di lavoro Log Analytics>Cartelle di lavoro.
Aprire la cartella di lavoro Vuota. Usare la modalità Editor avanzato selezionando l'icona </>.
Incollare su qualsiasi codice JSON esistente.
Selezionare Applica seguito da Fine modifica.
Inviare quindi l'applicazione Apache Spark al pool di Apache Spark configurato. Dopo che l'applicazione passa a uno stato in esecuzione, scegliere l'applicazione in esecuzione nell'elenco a discesa delle cartelle di lavoro.
È possibile personalizzare la cartella di lavoro. Ad esempio, è possibile usare query Kusto e configurare gli avvisi.
Eseguire query sui dati con Kusto
Di seguito è riportato un esempio di esecuzione di query sugli eventi di Apache Spark:
SparkListenerEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100
Di seguito è riportato un esempio di esecuzione di query sui log del driver e sugli executor dell'applicazione Apache Spark:
SparkLoggingEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100
Di seguito è riportato un esempio di query sulle metriche di 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
Creare e gestire avvisi
Gli utenti possono eseguire query per valutare metriche e log a una frequenza impostata e generare un avviso in base ai risultati. Per altre informazioni, vedere Creare, visualizzare e gestire i registri con Monitoraggio di Azure.
Area di lavoro di Synapse con protezione dall'esfiltrazione dati abilitata
Dopo aver creato l'area di lavoro di Synapse con la protezione dell'esfiltrazione dei dati abilitata.
Quando si desidera abilitare questa funzionalità, è necessario creare richieste di connessione dell'endpoint privato gestito per gli ambiti di collegamento privato di Monitoraggio di Azure (A M P L S) nei tenant di Microsoft Entra approvati dell'area di lavoro.
È possibile seguire questa procedura per creare una connessione endpoint privato gestita agli ambiti di collegamento privato di Monitoraggio di Azure (A M P L S):
- Se non esiste un A M P L S esistente, è possibile seguire la configurazione della connessione collegamento privato di Monitoraggio di Azure per crearne una.
- Andare a A M P L S nel portale di Azure, nella pagina Risorse di monitoraggio di Azure fare clic su Aggiungi per aggiungere la connessione all'area di lavoro di Log Analytics di Azure.
- Andare a Synapse Studio > Gestisci > endpointprivati gestiti, fare clic sul pulsante Nuovo, selezionare Ambiticollegamento privato di Monitoraggio di Azure e Continua.
- Scegliere l'ambito del collegamento privato di Monitoraggio di Azure creato e fare clic sul pulsante Crea.
- Attendere alcuni minuti per effettuare il provisioning di endpoint privati.
- Andare nuovamente a A M P L S nel portale di Azure, nella pagina Connessioni endpoint private, selezionare la connessione di cui è stato effettuato il provisioning e Approva.
Nota
- L'oggetto A M P L S presenta diversi limiti da considerare durante la pianificazione della configurazione del collegamento privato. Per una revisione più approfondita di questi limiti, vedere Limiti di M P L S.
- Controllare se si dispone dell'autorizzazione necessaria per creare un endpoint privato gestito.
Passaggi successivi
- Usare il pool di Apache Spark serverless in Synapse Studio.
- Eseguire un'applicazione Spark nel notebook.
- Creare una definizione di processo Apache Spark in Azure Studio.
- Raccogliere log e metriche delle applicazioni Apache Spark con l'account di archiviazione di Azure.
- Raccogliere log e metriche delle applicazioni Apache Spark con Hub eventi di Azure.