Collecter les journaux et les métriques de vos applications Apache Spark avec Azure Event Hubs
L’extension d’émission de diagnostic Synapse Apache Spark est une bibliothèque qui permet à une application Apache Spark d’envoyer des journaux, des journaux des événements et des métriques vers une ou plusieurs destinations, y compris Azure Log Analytics, le stockage Azure et Azure Event Hubs.
Dans ce tutoriel, vous apprenez à utiliser l’extension d’émission de diagnostic Synapse Apache Spark pour envoyer à vos hubs d’événements Azure les journaux, journaux d’événements et métriques des applications Apache Spark.
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 les journaux de diagnostic et les métriques afin de les envoyer dans Azure Event Hubs, vous pouvez utiliser l’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 fichier de configuration pour Apache Spark
Créez un fichier diagnostic-emitter-azure-event-hub-conf.txt
puis copiez-y le contenu suivant. Vous pouvez également télécharger un exemple de modèle pour la configuration du pool 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>
Dans le fichier de configuration, configurez les paramètres suivants : <connection-string>
.
Pour une description plus approfondie des paramètres, consultez Configurations Azure Event Hubs.
Étape 3 : Charger le fichier de configuration Apache Spark dans un pool Apache Spark
- Accédez à votre pool Apache Spark dans Synapse Studio (Gérer -> Pools Apache Spark)
- Cliquez sur le bouton « ... » situé à droite de votre pool Apache Spark, puis sélectionnez Configuration Apache Spark
- Cliquez sur Charger, choisissez le fichier de configuration « .txt », puis cliquez sur Appliquer.
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 |
Requis 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>.secret.keyVault.linkedService |
Optionnel. Nom du service lié au coffre de clés Azure. Quand il est activé dans le pipeline Synapse, ceci est nécessaire pour obtenir le secret auprès d’AKV. (Vérifiez que MSI dispose de l’autorisation de lecture sur le coffre de clés Azure). |
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. Noms des enregistreurs d’événements 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": "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"
// ...
}
}
Espace de travail Synapse où est activée la protection contre l’exfiltration de données
Les espaces de travail Azure Synapse Analytics prennent en charge l’activation de la protection contre l’exfiltration de données pour les espaces de travail. Avec la protection contre l’exfiltration de données, les journaux et les métriques ne peuvent pas être envoyés directement aux points de terminaison de destination. Vous pouvez créer des points de terminaison privés managés pour différents points de terminaison de destination ou créer des règles de pare-feu IP dans ce scénario.