Journalisation des diagnostics dans Azure Databricks Diagnostic logging in Azure Databricks

Important

Cette fonctionnalité est disponible en préversion publique.This feature is in Public Preview.

Azure Databricks fournit des journaux de diagnostic de bout en bout complets des activités effectuées par les utilisateurs de Azure Databricks, ce qui permet à votre entreprise de surveiller les modèles d’utilisation de Azure Databricks détaillés.Azure Databricks provides comprehensive end-to-end diagnostic logs of activities performed by Azure Databricks users, allowing your enterprise to monitor detailed Azure Databricks usage patterns.

Configurer la remise des journaux de diagnosticConfigure diagnostic log delivery

Notes

Les journaux de diagnostic nécessitent le plan de Azure Databricks Premium.Diagnostic Logs require the Azure Databricks Premium Plan.

  1. Connectez-vous au Portail Azure en tant que propriétaire ou contributeur pour l’espace de travail Azure Databricks et cliquez sur votre ressource de service Azure Databricks.Log in to the Azure portal as an Owner or Contributor for the Azure Databricks workspace and click your Azure Databricks Service resource.

  2. Dans la section surveillance de la barre latérale, cliquez sur l’onglet paramètres de diagnostic .In the Monitoring section of the sidebar, click the Diagnostic settings tab.

  3. Cliquez sur Activer les diagnostics.Click Turn on diagnostics.

    Paramètres de diagnostic Azure DatabricksAzure Databricks diagnostic settings

  4. Dans la page Paramètres de diagnostic, indiquez la configuration suivante :On the Diagnostic settings page, provide the following configuration:

    NomName

    Entrez un nom pour les journaux d’activité à créer.Enter a name for the logs to create.

    Archiver dans un compte de stockageArchive to a storage account

    Pour utiliser cette option, vous avez besoin d’un compte de stockage existant auquel vous connecter.To use this option, you need an existing storage account to connect to. Pour créer un compte de stockage dans le portail, consultez Créer un compte de stockage et suivez les instructions pour créer un compte Azure Resource Manager à usage général.To create a new storage account in the portal, see Create a storage account and follow the instructions to create an Azure Resource Manager, general-purpose account. Puis revenez à cette page dans le portail pour sélectionner votre compte de stockage.Then return to this page in the portal to select your storage account. L’affichage des comptes de stockage nouvellement créés dans le menu déroulant peut prendre quelques minutes.It might take a few minutes for newly created storage accounts to appear in the drop-down menu. Pour plus d’informations sur les coûts supplémentaires engendrés par l’écriture dans un compte de stockage, consultez tarification Azure Storage.For information about additional costs incurred by writing to a storage account, see Azure Storage pricing.

    Diffuser vers un hub d’événementsStream to an event hub

    Pour utiliser cette option, vous avez besoin d’un espace de noms Azure Event Hubs existant et Event Hub auquel vous connecter.To use this option, you need an existing Azure Event Hubs namespace and event hub to connect to. Pour créer un espace de noms Event Hubs, consultez Créer un espace de noms Event Hubs et un Event Hub à l’aide du portail Azure.To create an Event Hubs namespace, see Create an Event Hubs namespace and an event hub by using the Azure portal. Revenez ensuite à cette page dans le portail pour sélectionner l’espace de noms et le nom de la stratégie Event Hubs.Then return to this page in the portal to select the Event Hubs namespace and policy name. Pour plus d’informations sur les coûts supplémentaires engendrés par l’écriture dans une Event Hub, consultez la page tarification d’Azure Event hubs.For information about additional costs incurred by writing to an event hub, see Azure Event Hubs pricing.

    Envoyer à Log AnalyticsSend to Log Analytics

    Pour utiliser cette option, vous pouvez utiliser un espace de travail Log Analytics existant ou en créer un en suivant les étapes de création d’un espace de travail dans le portail.To use this option, either use an existing Log Analytics workspace or create a new one by following the steps to Create a new workspace in the portal. Pour plus d’informations sur les coûts supplémentaires engendrés par l’envoi de journaux à des Log Analytics, consultez tarification Azure Monitor.For information about additional costs incurred by sending logs to Log Analytics, see Azure Monitor pricing.

    Paramètres de diagnostic Azure DatabricksAzure Databricks diagnostic settings

  5. Choisissez les services pour lesquels vous souhaitez des journaux de diagnostic et définissez des stratégies de rétention.Choose the services you want diagnostic logs for and set retention policies.

    La rétention s’applique uniquement aux comptes de stockage.Retention applies only to storage accounts. Si vous ne souhaitez pas appliquer une stratégie de rétention et que vous souhaitez conserver les données indéfiniment, définissez la rétention (jours) sur 0.If you do not want to apply a retention policy and you want to retain data forever, set Retention (days) to 0.

  6. Sélectionnez Enregistrer.Select Save.

  7. Si vous recevez une erreur indiquant «échec de la mise à jour des diagnostics pour .If you receive an error that says “Failed to update diagnostics for . L’abonnement n’est pas inscrit pour utiliser Microsoft. Insights», suivez les instructions de résolution des problèmes Azure Diagnostics pour inscrire le compte, puis recommencez cette procédure.The subscription is not registered to use microsoft.insights,” follow the Troubleshoot Azure Diagnostics instructions to register the account and then retry this procedure.

  8. Si vous souhaitez modifier la façon dont vos journaux de diagnostic seront enregistrés à l’avenir, revenez à cette page pour modifier les paramètres de journal de diagnostic pour votre compte.If you want to change how your diagnostic logs are saved at any point in the future, return to this page to modify the diagnostic log settings for your account.

Activation de la journalisation à l’aide de PowerShellTurn on logging using PowerShell

  1. Démarrez une session Azure PowerShell et connectez-vous à votre compte Azure avec la commande suivante :Start an Azure PowerShell session and sign in to your Azure account with the following command:

    Connect-AzAccount
    

    Si vous n’avez pas déjà installé Azure PowerShell, utilisez les commandes suivantes pour installer Azure PowerShell et importer le module Azure RM.If you do not have Azure Powershell installed already, use the following commands to install Azure PowerShell and import the Azure RM module.

    Install-Module -Name Az -AllowClobber
    Import-Module AzureRM
    
  2. Dans la fenêtre contextuelle de votre navigateur, entrez votre nom d’utilisateur et votre mot de passe Azure.In the pop-up browser window, enter your Azure account user name and password. Azure PowerShell obtient alors tous les abonnements associés à ce compte et utilise par défaut le premier.Azure PowerShell gets all of the subscriptions that are associated with this account, and by default, uses the first one.

    Si vous disposez de plusieurs abonnements, vous devrez peut-être en spécifier un en particulier, celui qui a été utilisé pour créer votre coffre de clés Azure.If you have more than one subscription, you might have to specify the specific subscription that was used to create your Azure key vault. Pour afficher les abonnements de votre compte, entrez la commande suivante :To see the subscriptions for your account, type the following command:

    Get-AzSubscription
    

    Pour spécifier l’abonnement associé au compte de Azure Databricks que vous journalisez, tapez la commande suivante :To specify the subscription that’s associated with the Azure Databricks account that you’re logging, type the following command:

    Set-AzContext -SubscriptionId <subscription ID>
    
  3. Définissez votre nom de ressource Log Analytics sur une variable nommée logAnalytics , où ResourceName est le nom de l’espace de travail log Analytics.Set your Log Analytics resource name to a variable named logAnalytics, where ResourceName is the name of the Log Analytics workspace.

    $logAnalytics = Get-AzResource -ResourceGroupName <resource group name> -ResourceName <resource name> -ResourceType "Microsoft.OperationalInsights/workspaces"
    
  4. Définissez le nom de la ressource de service Azure Databricks sur une variable nommée databricks , où ResourceName est le nom du service Azure Databricks.Set the Azure Databricks service resource name to a variable named databricks, where ResourceName is the name of the Azure Databricks service.

    $databricks = Get-AzResource -ResourceGroupName <your resource group name> -ResourceName <your Azure Databricks service name> -ResourceType "Microsoft.Databricks/workspaces"
    
  5. Pour activer la journalisation des Azure Databricks, utilisez l’applet de commande Set-AzDiagnosticSetting avec des variables pour le nouveau compte de stockage, Azure Databricks service et la catégorie à activer pour la journalisation.To enable logging for Azure Databricks, use the Set-AzDiagnosticSetting cmdlet with variables for the new storage account, Azure Databricks service, and the category to enable for logging. Exécutez la commande suivante et définissez l' -Enabled indicateur sur $true :Run the following command and set the -Enabled flag to $true:

    Set-AzDiagnosticSetting -ResourceId $databricks.ResourceId -WorkspaceId $logAnalytics.ResourceId -Enabled $true -name "<diagnostic setting name>" -Category <comma separated list>
    

Activer la journalisation à l’aide de Azure CLIEnable logging by using Azure CLI

  1. Ouvrez PowerShell.Open PowerShell.

  2. Utilisez la commande suivante pour vous connecter à votre compte Azure :Use the following command to connect to your Azure account:

    az login
    
  3. Exécutez la commande de paramètre de diagnostic suivante :Run the following diagnostic setting command:

    az monitor diagnostic-settings create --name <diagnostic name>
    --resource-group <log analytics workspace resource group>
    --workspace <log analytics name or object ID>
    --resource <target resource object ID>
    --logs '[
    {
      \"category\": <category name>,
      \"enabled\": true
    }
    ]'
    

API RESTREST API

Utilisez l’API LogSettings .Use the LogSettings API.

RequêteRequest

PUT https://management.azure.com/{resourceUri}/providers/microsoft.insights/diagnosticSettings/{name}?api-version=2017-05-01-preview

Corps de la demandeRequest body

{
    "properties": {
    "workspaceId": "<log analytics resourceId>",
    "logs": [
      {
        "category": "<category name>",
        "enabled": true,
        "retentionPolicy": {
          "enabled": false,
          "days": 0
        }
      }
    ]
  }
}

Remise du journal de diagnosticDiagnostic log delivery

Une fois que la journalisation est activée pour votre compte, Azure Databricks commence automatiquement à envoyer les journaux de diagnostic à votre emplacement de remise.Once logging is enabled for your account, Azure Databricks automatically starts sending diagnostic logs to your delivery location. Les journaux sont disponibles dans un délai de 15 minutes après l’activation.Logs are available within 15 minutes of activation. Azure Databricks événements pouvant être audités apparaissent généralement dans les journaux de diagnostic dans un délai de 15 minutes dans les régions commerciales d’Azure.Azure Databricks auditable events typically appear in diagnostic logs within 15 minutes in Azure Commercial regions.

Notes

Les journaux de connexion SSH sont fournis avec une latence élevée.SSH login logs are delivered with high latency.

Schéma des journaux de diagnosticDiagnostic log schema

Le schéma des enregistrements du journal de diagnostic est le suivant :The schema of diagnostic log records is as follows:

ChampField DescriptionDescription
operationversionoperationversion Version de schéma du format du journal de diagnostic.The schema version of the diagnostic log format.
timetime Horodatage UTC de l’action.UTC timestamp of the action.
Propriétés. sourceIPAddressproperties.sourceIPAddress Adresse IP de la demande source.The IP address of the source request.
Propriétés. userAgentproperties.userAgent Navigateur ou client d’API utilisé pour effectuer la requête.The browser or API client used to make the request.
Properties. sessionIdproperties.sessionId ID de session de l’action.Session ID of the action.
identitiesidentities Informations sur l’utilisateur qui effectue les demandes :Information about the user that makes the requests:

* e-mail: adresse de messagerie de l’utilisateur.* email: User email address.
categorycategory Service qui a consigné la demande.The service that logged the request.
operationNameoperationName Action, telle que la connexion, la déconnexion, la lecture, l’écriture, etc.The action, such as login, logout, read, write, etc.
Propriétés. requestIdproperties.requestId ID de demande unique.Unique request ID.
Propriétés. requestParamsproperties.requestParams Paires clé-valeur de paramètre utilisées dans l’événement.Parameter key-value pairs used in the event.
Properties. Responseproperties.response Réponse à la demande :Response to the request:

* ErrorMessage: message d’erreur en cas d’erreur.* errorMessage: The error message if there was an error.
* résultat: résultat de la demande.* result: The result of the request.
* statusCode: code d’État http qui indique si la demande est réussie ou non.* statusCode: HTTP status code that indicates whether the request succeeds or not.
Propriétés. logIdproperties.logId Identificateur unique des messages du journal.The unique identifier for the log messages.

ÉvénementsEvents

Les category operationName Propriétés et identifient un événement dans un enregistrement de journal.The category and operationName properties identify an event in a log record. Azure Databricks fournit des journaux de diagnostic pour les services suivants :Azure Databricks provides diagnostic logs for the following services:

  • DBFSDBFS
  • ClustersClusters
  • PoolsPools
  • ComptesAccounts
  • travauxJobs
  • NotebookNotebook
  • SSHSSH
  • Espace de travailWorkspace
  • SecretsSecrets
  • Autorisations SQLSQL Permissions

Si les actions prennent beaucoup de temps, la demande et la réponse sont journalisées séparément, mais la paire demande et réponse ont le même properties.requestId .If actions take a long time, the request and response are logged separately, but the request and response pair have the same properties.requestId.

À l’exception des opérations relatives au montage, les journaux de diagnostic Azure Databricks n’incluent pas les opérations liées à DBFS.With the exception of mount-related operations, Azure Databricks diagnostic logs do not include DBFS-related operations.

Notes

Les actions automatisées, telles que le redimensionnement d’un cluster en raison de la mise à l’échelle automatique ou du lancement d’un travail en raison d’une planification, sont effectuées par l’utilisateur système-utilisateur.Automated actions—such as resizing a cluster due to autoscaling or launching a job due to scheduling—are performed by the user System-User.

Exemple de sortie de journalSample log output

L’exemple JSON suivant est un exemple de sortie de journal Azure Databricks :The following JSON sample is an example of Azure Databricks log output:

{
    "TenantId": "<your tenant id",
    "SourceSystem": "|Databricks|",
    "TimeGenerated": "2019-05-01T00:18:58Z",
    "ResourceId": "/SUBSCRIPTIONS/SUBSCRIPTION_ID/RESOURCEGROUPS/RESOURCE_GROUP/PROVIDERS/MICROSOFT.DATABRICKS/WORKSPACES/PAID-VNET-ADB-PORTAL",
    "OperationName": "Microsoft.Databricks/jobs/create",
    "OperationVersion": "1.0.0",
    "Category": "jobs",
    "Identity": {
        "email": "mail@contoso.com",
        "subjectName": null
    },
    "SourceIPAddress": "131.0.0.0",
    "LogId": "201b6d83-396a-4f3c-9dee-65c971ddeb2b",
    "ServiceName": "jobs",
    "UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36",
    "SessionId": "webapp-cons-webapp-01exaj6u94682b1an89u7g166c",
    "ActionName": "create",
    "RequestId": "ServiceMain-206b2474f0620002",
    "Response": {
        "statusCode": 200,
        "result": "{\"job_id\":1}"
    },
    "RequestParams": {
        "name": "Untitled",
        "new_cluster": "{\"node_type_id\":\"Standard_DS3_v2\",\"spark_version\":\"5.2.x-scala2.11\",\"num_workers\":8,\"spark_conf\":{\"spark.databricks.delta.preview.enabled\":\"true\"},\"cluster_creator\":\"JOB_LAUNCHER\",\"spark_env_vars\":{\"PYSPARK_PYTHON\":\"/databricks/python3/bin/python3\"},\"enable_elastic_disk\":true}"
    },
    "Type": "DatabricksJobs"
}

Analyser les journaux de diagnosticAnalyze diagnostic logs

Si vous avez sélectionné l’option Envoyer vers log Analytics lorsque vous avez activé la journalisation des diagnostics, les données de diagnostic de votre conteneur sont généralement transmises à Azure Monitor journaux dans un délai de 15 minutes.If you selected the Send to Log Analytics option when you turned on diagnostic logging, diagnostic data from your container is typically forwarded to Azure Monitor logs within 15 minutes.

Avant d’afficher vos journaux, vérifiez si votre log Analytics espace de travail a été mis à niveau pour utiliser le nouveau langage de requête Kusto.Before you view your logs, verify if your Log Analytics workspace has been upgraded to use the new Kusto query language. Pour vérifier, ouvrez le portail Azure et sélectionnez log Analytics à l’extrême gauche.To check, open the Azure portal and select Log Analytics on the far left. Sélectionnez ensuite votre espace de travail Log Analytics.Then select your Log Analytics workspace. Si vous recevez un message à mettre à niveau, consultez mettre à niveau votre espace de travail Azure log Analytics vers la nouvelle recherche dans les journaux.If you get a message to upgrade, see Upgrade your Azure Log Analytics workspace to new log search.

Pour afficher vos données de diagnostic dans les journaux de Azure Monitor, ouvrez la page recherche dans les journaux à partir du menu de gauche ou de la zone de gestion de la page.To view your diagnostic data in Azure Monitor logs, open the Log Search page from the left menu or the Management area of the page. Ensuite, entrez votre requête dans la zone recherche dans les journaux .Then enter your query into the Log search box.

Azure Log AnalyticsAzure Log Analytics

RequêtesQueries

Voici quelques requêtes supplémentaires que vous pouvez entrer dans la zone recherche dans les journaux.Here are some additional queries that you can enter into the Log search box. Ces requêtes sont écrites en langage de requête Kusto.These queries are written in Kusto Query Language.

  • Pour interroger tous les utilisateurs ayant accédé à l’espace de travail Azure Databricks et à leur emplacement :To query all users who have accessed the Azure Databricks workspace and their location:

    DatabricksAccounts
    | where ActionName contains "login"
    | extend d=parse_json(Identity)
    | project UserEmail=d.email, SourceIPAddress
    
  • Pour vérifier les versions Spark utilisées :To check the Spark versions used:

    DatabricksClusters
    | where ActionName == "create"
    | extend d=parse_json(RequestParams)
    | extend SparkVersion= d.spark_version
    | summarize Count=count() by tostring(SparkVersion)