Raccogliere log e metriche delle applicazioni Apache Spark con Hub eventi di Azure
L'estensione dell'emettitore di diagnostica Apache Spark di Synapse è una libreria che consente all'applicazione Apache Spark di generare i log, i registri eventi e le metriche in una o 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 Synapse per generare log, registri eventi e metriche delle applicazioni Apache Spark negli Hub eventi di Azure.
Raccogliere log e metriche negli Hub eventi di Azure
Passaggio 1: Creare un'istanza di Hub eventi di Azure
Per raccogliere i log di diagnostica e le metriche negli Hub eventi di Azure, è possibile usare l’istanza degli Hub eventi di Azure esistente. In alternativa, se non è disponibile, è possibile creare un hub eventi.
Passaggio 2: creare un file di configurazione di Apache Spark
Creare un diagnostic-emitter-azure-event-hub-conf.txt
e copiare il contenuto seguente nel file. In alternativa, scaricare un file di modello di esempio per la configurazione del pool di Apache Spark.
spark.synapse.diagnostic.emitters MyDestination1
spark.synapse.diagnostic.emitter.MyDestination1.type AzureEventHub
spark.synapse.diagnostic.emitter.MyDestination1.categories Log,EventLog,Metrics
spark.synapse.diagnostic.emitter.MyDestination1.secret <connection-string>
Inserire i parametri seguenti nel file di configurazione: <connection-string>
.
Per una descrizione più dettagliata dei parametri, è possibile fare riferimento a Hub eventi di Azure configurazioni.
Passaggio 3: caricare il file di configurazione di Apache Spark nel pool di Apache Spark
- Andare al pool di Apache Spark in Synapse Studio (Gestisci -> pool di Apache Spark)
- Fare clic sul pulsante "..." a destra del pool di Apache Spark e selezionare Configurazione di Apache Spark
- Fare clic su Carica e scegliere il file di configurazione ".txt", quindi fare clic su Applica.
Configurazioni disponibili
Impostazione | Descrizione |
---|---|
spark.synapse.diagnostic.emitters |
Obbligatorio. Nomi di destinazione delimitati da virgole degli emettitori di diagnostica. |
spark.synapse.diagnostic.emitter.<destination>.type |
Obbligatorio. Tipo di destinazione predefinito. Per abilitare la destinazione di Hub eventi di Azure, il valore deve essere AzureEventHub . |
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>.secret |
Facoltativo. Stringa di connessione dell'istanza di Hub eventi di Azure. Questo campo deve corrispondere a questo modello Endpoint=sb://<FQDN>/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>;EntityPath=<PathName> |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault |
Obbligatorio se .secret non viene specificato. Nome dell’insieme di credenziali delle chiavi di Azure in cui è archiviato il (stringa di connessione) 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 (stringa di connessione) segreto. |
spark.synapse.diagnostic.emitter.<destination>.secret.keyVault.linkedService |
Facoltativo. Il nome del Servizio collegato di Azure Key Vault. Se abilitata nella pipeline di Synapse, è necessario ottenere il segreto da Azure Key Vault. (assicurarsi che l'identità del servizio gestito disponga dell'autorizzazione di lettura per Azure Key Vault). |
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 |
Nota
La stringa di connessione dell'istanza di Hub eventi di Azure deve sempre contenere EntityPath
, ovvero il nome dell'istanza di Hub eventi di Azure.
Esempio di dati di log
Di seguito è riportato un record di log di esempio in formato JSON:
{
"timestamp": "2021-01-02T12:34:56.789Z",
"category": "Log|EventLog|Metrics",
"workspaceName": "<my-workspace-name>",
"sparkPool": "<spark-pool-name>",
"livyId": "<livy-session-id>",
"applicationId": "<application-id>",
"applicationName": "<application-name>",
"executorId": "<driver-or-executor-id>",
"properties": {
// The message properties of logs, events and metrics.
"timestamp": "2021-01-02T12:34:56.789Z",
"message": "Registering signal handler for TERM",
"logger_name": "org.apache.spark.util.SignalUtils",
"level": "INFO",
"thread_name": "main"
// ...
}
}
Area di lavoro di Synapse con protezione dall'esfiltrazione dati abilitata
Le aree di lavoro di Azure Synapse Analytics supportano l'abilitazione della protezione dell'esfiltrazione dei dati per le aree di lavoro. Con la protezione dall'esfiltrazione, non è possibile inviare i log e le metriche direttamente agli endpoint di destinazione. In questo scenario è possibile creare endpoint privati gestiti corrispondenti per endpoint di destinazione differenti, oppure creare regole del firewall IP.