Fournir et accéder aux logs d'utilisation facturables (hérité)
Aperçu
Cette fonctionnalité est en aperçu public.
Les Logs d'utilisation facturables n'enregistrent pas l'utilisation pour tous les produits. Databricks recommande d'utiliser des tables système pour consulter les Logs d'utilisation complets.
En tant qu'administrateur de compte Databricks, vous pouvez configurer la livraison quotidienne des journaux d'utilisation facturables au format de fichier CSV vers un compartiment de stockage AWS S3, où vous pouvez rendre les données disponibles pour l'analyse d'utilisation. Databricks fournit un fichier CSV distinct pour chaque Workspace de votre compte. Ce fichier CSV inclut des données historiques sur l'utilisation des clusters du Workspace en unités Databricks (DBU), triables par ID de cluster, SKU de facturation, créateur de cluster, cluster tags et plus encore. Pour une description de chaque colonne de fichier CSV, consultez le schéma de fichier CSV.
Pour utiliser une API pour download les Logs d’utilisation facturables sans configurer la livraison des Logs, voir Retourner les Logs d’utilisation facturables.
Les administrateurs de compte peuvent consulter l'utilisation sous forme de Graphe ou de tableau sur la page d'utilisation de la console de compte. Cette page comprend également un tableau d'utilisation qui affiche l'utilisation du compte en DBU, regroupées par type de charge de travail, et vous permet de directement download les données d'utilisation au format CSV.
Si votre compte est sur une autre version de la plateforme, les propriétaires de compte peuvent consulter l'utilisation sur l'tab Vue d'ensemble de l'utilisation de l'ancienne console de compte.
Vous pouvez éventuellement livrer des Logs à un compte AWS autre que le compte utilisé pour le rôle IAM que vous créez pour la livraison de Logs. Cela permet une flexibilité, par exemple la configuration de Workspaces à partir de plusieurs comptes AWS pour livrer au même compartiment S3. Cette option exige que vous configuriez une politique de compartiment S3 qui référence un rôle IAM inter-comptes. Des instructions et un Template de politique sont fournis dans cet article.
L'accès aux Logs du propriétaire du compte et de l'administrateur du compte dépend de la façon dont vous avez configuré le compartiment S3. Databricks livre les logs à votre compartiment S3 avec l'ACL prédéfini BucketOwnerFullControl intégré d'AWS afin que les propriétaires de compte et les personnes désignées puissent download les logs directement. Pour prendre en charge la propriété des compartiments pour les objets nouvellement créés, vous devez définir le paramètre S3 Object Ownership de votre compartiment sur la valeur Bucket owner preferred .
Si, au lieu de cela, vous définissez le paramètre Propriété d'objet S3 de votre compartiment sur Rédacteur d'objet , les nouveaux objets tels que vos Log restent la propriété du compte qui a fait l'upload, qui est par default le rôle IAM que vous avez créé et spécifié pour accéder à votre compartiment. Cela peut rendre l'accès aux logs difficile, car vous ne pouvez pas y accéder depuis la console AWS ou les outils d'automatisation avec lesquels vous vous êtes authentifié en tant que propriétaire du compartiment.
Databricks vous recommande de consulter les bonnes pratiques de sécurité pour S3 pour obtenir des conseils sur la protection des données de votre compartiment contre les accès indésirables.
Outre la livraison des logs pour les workspaces en cours d'exécution, les logs sont livrés pour les *workspaces annulés* afin de garantir que les logs représentant le dernier jour du workspace sont correctement livrés.
Options de configuration
Lorsque vous configurez la livraison des Logs d'utilisation facturable, vous disposez des options suivantes si vous avez plusieurs workspaces dans votre compte :
- Partagez la même configuration (compartiment S3 de livraison des Log et rôle IAM) pour tous les Workspace du compte. Ceci est le default.
- Utilisez des configurations distinctes pour chaque workspace du compte.
- Utilisez des configurations distinctes pour différents groupes de workspaces, chacun partageant une configuration.
Même si vous utilisez l'API de compte pour configurer la livraison des logs, vous pouvez configurer la livraison des logs avec n'importe quel workspace, y compris les workspaces qui n'ont pas été créés à l'aide de l'API de compte.
Flux de haut niveau
Le flux général de livraison des logs d'utilisation facturable :
- Configurer le stockage: dans AWS, créez un nouveau compartiment S3 AWS. À l'aide des APIs Databricks, appelez l'API de compte pour créer un objet de configuration de stockage qui utilise le nom du compartiment.
Pour livrer des logs à un compte AWS autre que celui utilisé pour le rôle IAM que vous créez pour la livraison des logs, vous devez ajouter une politique de compartiment S3. Vous n'ajoutez pas la politique à cette étape, mais à une étape ultérieure.
-
Configurer les identifiants: Dans AWS, créez le rôle IAM AWS approprié. À l'aide des APIs Databricks, appelez l'API de compte pour créer un objet de configuration d'identifiants qui utilise l'ARN du rôle IAM. La politique de rôle peut spécifier un préfixe de chemin pour la livraison de log au sein de votre compartiment S3. Vous pouvez choisir de définir un rôle IAM pour inclure plusieurs préfixes de chemin si vous souhaitez des configurations de livraison de Logs pour différents workspaces qui partagent le compartiment S3 mais utilisent des préfixes de chemin différents.
-
Support inter-comptes facultatif Pour livrer les logs à un compte AWS autre que le compte du rôle IAM que vous créez pour la livraison des logs, ajoutez une stratégie de compartiment S3. Cette politique fait référence aux ID pour le rôle IAM inter-comptes que vous avez créé à l'étape précédente.
-
Appelez l'API de livraison des Logs: Appelez l'API de compte pour créer une configuration de livraison des Logs qui utilise l'identifiant et les objets de configuration de stockage des étapes précédentes. Cette étape vous permet de spécifier si vous souhaitez associer la configuration de livraison des logs pour l'ensemble du compte (workspaces actuels et futurs) ou pour un ensemble spécifique de workspaces.
-
Accédez aux fichiers CSV pour analyse: l'emplacement de livraison est
<bucket-name>/<prefix>/billable-usage/csv/, où<prefix>est le nom du préfixe de chemin de livraison facultatif que vous avez configuré lors de la configuration de la livraison des Logs. Les fichiers sont nommésworkspaceId=<workspace-id>-usageMonth=<month>.csv. Les fichiers sont livrés quotidiennement en écrasant le fichier CSV du mois pour chaque Workspace. Vous pouvez importer ces données dans Databricks pour analyse. Il existe également un exemple de notebook que vous pouvez utiliser pour exécuter un tableau de bord d’analyse d’utilisation basé sur ces fichiers CSV. Consultez Analyser les données d'utilisation dans Databricks.
Il existe une limite au nombre de configurations de livraison de Logs que vous pouvez créer pour un compte. Vous pouvez créer un maximum de deux configurations activées qui utilisent le niveau du compte (sans filtre de Workspace) et deux configurations activées pour chaque Workspace spécifique (un workspaceId peut apparaître dans le filtre de Workspace pour deux configurations). Vous ne pouvez pas supprimer une configuration de livraison des logs, mais vous pouvez la désactiver. Vous pouvez réactiver une configuration désactivée, mais la requête échoue si elle viole les limites décrites précédemment.
Exigences
- Vous devez être administrateur de compte
- ID du compte. Vous trouverez l'ID du compte dans la console du compte.
Comment s'authentifier à l'API de compte
Pour vous authentifier auprès de l'API de compte, vous pouvez utiliser Databricks OAuth pour les Service Principal ou Databricks OAuth pour les utilisateurs. Databricks recommande vivement d'utiliser Databricks OAuth pour les utilisateurs ou les Service Principal. Un Service Principal est une identité que vous créez dans Databricks pour une utilisation avec des outils automatisés, des Jobs et des applications. Consultez Autoriser l'accès de Service Principal à Databricks avec OAuth.
Utilisez les exemples suivants pour vous authentifier auprès d'un compte Databricks. Vous pouvez utiliser OAuth pour les Service Principal ou OAuth pour les utilisateurs. Pour plus d'informations, consultez :
- Pour OAuth pour les Service Principals, consultez Autoriser l’accès des Service Principals à Databricks avec OAuth.
- Pour OAuth pour les utilisateurs, consultez Autoriser l'accès utilisateur à Databricks avec OAuth.
Pour des exemples d’authentification, choisissez parmi les suivants :
- OAuth for service principals
- OAuth for users
-
Installez Databricks CLI version 0,205 ou supérieure. Consultez Installer ou mettre à jour la Databricks CLI.
-
Suivez les étapes pour configurer l'authentification OAuth M2M pour les service principals dans le compte. Consultez Autoriser l'accès de service principal à Databricks avec OAuth.
-
Identifiez ou créez manuellement un profil de configuration Databricks dans votre fichier
.databrickscfg, avec les champs du profil correctement définis pour leshost,account_idetclient_idassociés etclient_secretmappant au service principal. Voir l'authentification OAuth machine-to-machine (M2M). -
Exécutez votre commande CLI Databricks cible, où
<profile-name>représente le nom du profil de configuration dans votre fichier.databrickscfg:Bashdatabricks account <command-name> <subcommand-name> -p <profile-name>Par exemple, pour répertorier tous les utilisateurs du compte :
Bashdatabricks account users list -p MY-AWS-ACCOUNT- Pour obtenir la liste des commandes de compte disponibles, exécutez la commande
databricks account -h. - Pour obtenir la liste des sous-commandes disponibles pour une commande de compte, exécutez la commande
databricks account <command-name> -h.
- Pour obtenir la liste des commandes de compte disponibles, exécutez la commande
-
Installez Databricks CLI version 0,205 ou supérieure. Consultez Installer ou mettre à jour la Databricks CLI.
-
Suivez les étapes pour configurer l'authentification OAuth U2M pour les utilisateurs du compte. Consultez Autoriser l'accès utilisateur à Databricks avec OAuth.
-
start le processus d'authentification utilisateur en exécutant la commande CLI Databricks suivante :
Bashdatabricks auth login --host <account-console-url> --account-id <account-id>Par exemple :
Bashdatabricks auth login --host https://accounts.cloud.databricks.com --account-id 00000000-0000-0000-0000-000000000000
Si vous avez un profil de configuration Databricks existant avec les champs host et account_id déjà configurés, vous pouvez remplacer --host <account-console-url> --account-id <account-id> par --profile <profile-name>.
-
Suivez les instructions à l'écran pour que la CLI Databricks crée automatiquement le profil de configuration Databricks associé dans votre fichier
.databrickscfg. -
Continuez à suivre les instructions à l'écran pour vous connecter à votre compte Databricks via votre navigateur web.
-
Exécutez votre commande CLI Databricks cible, où
<profile-name>représente le nom du profil de configuration dans votre fichier.databrickscfg:Bashdatabricks account <command-name> <subcommand-name> -p <profile-name>Par exemple, pour répertorier tous les utilisateurs du compte :
Bashdatabricks account users list -p ACCOUNT-00000000-0000-0000-0000-000000000000- Pour obtenir la liste des commandes de compte disponibles, exécutez la commande
databricks account -h. - Pour obtenir la liste des sous-commandes disponibles pour une commande de compte, exécutez la commande
databricks account <command-name> -h.
- Pour obtenir la liste des commandes de compte disponibles, exécutez la commande
Étape 1 : configurer le stockage
Databricks fournit les données d'utilisation facturables à un compartiment S3 de votre compte. Vous pouvez configurer plusieurs workspaces pour utiliser un seul compartiment S3, ou vous pouvez définir différents workspaces (ou groupes de workspaces) pour utiliser différents compartiments.
Cette procédure décrit comment configurer un objet de configuration unique avec une configuration commune pour un ou plusieurs espaces de travail dans le compte. Pour utiliser différents emplacements de stockage pour différents workspaces, répétez les procédures de cet article pour chaque workspace ou groupe de workspaces.
- Créez le compartiment S3, en suivant les instructions de Étape 1 : configurer le stockage des logs d'audit.
Pour livrer des logs à un compte AWS autre que celui utilisé pour votre workspace Databricks, vous devez ajouter une politique de compartiment S3. Vous n'ajoutez pas la politique de compartiment à cette étape. Consultez Étape 3 : prise en charge inter-comptes facultative.
-
Créez un enregistrement de configuration de stockage Databricks qui représente votre nouveau compartiment S3. Spécifiez votre compartiment S3 en appelant l'API de création de configuration de stockage (
POST /accounts/<account-id>/storage-configurations).Transmettez les éléments suivants :
storage_configuration_name– Nouveau nom de configuration de stockage unique.root_bucket_info« — Un objet JSON qui contient un champbucket_namequi contient le nom de votre compartiment S3. »
Copiez la valeur
storage_configuration_idrenvoyée dans le corps de la réponse. Vous l'utiliserez pour créer la configuration de livraison des log dans une étape ultérieure.Par exemple :
Bashcurl -X POST
'https://accounts.cloud.databricks.com/api/2.0/accounts/<databricks-account-id>/storage-configurations' \
--header 'Authorization: Bearer $OAUTH_TOKEN' \
-d '{
"storage_configuration_name": "databricks-workspace-storageconf-v1",
"root_bucket_info": {
"bucket_name": "my-company-example-bucket"
}
}'Réponse :
JSON{
"storage_configuration_id": "<databricks-storage-config-id>",
"account_id": "<databricks-account-id>",
"root_bucket_info": {
"bucket_name": "my-company-example-bucket"
},
"storage_configuration_name": "databricks-workspace-storageconf-v1",
"creation_time": 1579754875555
}
Étape 2 : Configurer les informations d'identification
Cette procédure décrit comment configurer un objet de configuration unique avec une configuration commune pour un ou plusieurs espaces de travail dans le compte. Pour utiliser des identifiants différents pour différents workspaces, répétez les procédures de cet article pour chaque workspace ou groupe de workspaces.
Pour utiliser différents noms de compartiments S3, vous devez créer des rôles IAM distincts.
-
Connectez-vous à votre Console AWS en tant qu'utilisateur disposant des privilèges d'administrateur et accédez au service IAM .
-
Cliquez sur l’onglet tab dans la barre latérale.
-
Cliquez sur Créer un rôle .
-
Dans Sélectionnez le type d’entité approuvée , cliquez sur Service AWS .
-
Dans les **Cas d'utilisation courants**, cliquez sur **EC2**.
-
Cliquez sur le bouton Suivant : Autorisations .
-
Cliquez sur le bouton Suivant : balises .
-
Cliquez sur le bouton Suivant : vérifier .
-
Dans le champ Nom du rôle , saisissez un nom de rôle.

-
Cliquez sur Créer un rôle . La liste des rôles s'affiche.
-
-
Dans la liste des rôles, cliquez sur le rôle que vous avez créé.
-
Ajoutez une politique en ligne.
-
Sous l'onglet Autorisations, cliquez sur Ajouter une politique en ligne .

-
Dans l’éditeur de stratégies, cliquez sur l’onglet JSON .

-
Copiez cette politique d'accès et modifiez-la. Remplacez les valeurs suivantes dans la politique par vos propres valeurs de configuration :
<s3-bucket-name>: Le nom du compartiment de votre bucket S3 AWS.<s3-bucket-path-prefix>: (Facultatif) Le chemin d’accès à l’emplacement de livraison dans le compartiment S3. S’ils ne sont pas spécifiés, les Logs sont livrés à la racine du compartiment. Ce chemin doit correspondre à l’argumentdelivery_path_prefixlorsque vous appelez l’API de livraison de Logs.
JSON{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetBucketLocation"],
"Resource": ["arn:aws:s3:::<s3-bucket-name>"]
},
{
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:PutObjectAcl", "s3:AbortMultipartUpload"],
"Resource": [
"arn:aws:s3:::<s3-bucket-name>/<s3-bucket-path-prefix>/",
"arn:aws:s3:::<s3-bucket-name>/<s3-bucket-path-prefix>/*"
]
},
{
"Effect": "Allow",
"Action": ["s3:ListBucket", "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads"],
"Resource": "arn:aws:s3:::<s3-bucket-name>",
"Condition": {
"StringLike": {
"s3:prefix": ["<s3-bucket-path-prefix>", "<s3-bucket-path-prefix>/*"]
}
}
}
]
}Vous pouvez personnaliser l'utilisation de la politique du préfixe de chemin :
- Si vous ne souhaitez pas utiliser le préfixe du chemin d'accès au compartiment, supprimez
<s3-bucket-path-prefix>/(y compris la barre oblique finale) de la politique chaque fois qu'il apparaît. - Si vous souhaitez des configurations de livraison de Logs pour différents Workspace qui partagent le compartiment S3 mais utilisent des préfixes de chemin différents, vous pouvez définir un rôle IAM pour inclure plusieurs préfixes de chemin. Il y a deux parties distinctes de la politique qui font référence à
<s3-bucket-path-prefix>. Dans chaque cas, dupliquez les deux lignes adjacentes qui référencent le préfixe de chemin. Répétez chaque paire de lignes pour chaque nouveau préfixe de chemin, par exemple :
JSON{
"Resource": [
"arn:aws:s3:::<mybucketname>/field-team/",
"arn:aws:s3:::<mybucketname>/field-team/*",
"arn:aws:s3:::<mybucketname>/finance-team/",
"arn:aws:s3:::<mybucketname>/finance-team/*"
]
} -
Cliquez sur Vérifier la politique .
-
Dans le champ Nom , entrez un nom de stratégie.
-
Cliquez sur Créer une politique .
-
Si vous utilisez des politiques de contrôle des services pour refuser certaines actions au niveau du compte AWS, assurez-vous que
sts:AssumeRoleest sur liste blanche afin que Databricks puisse assumer le rôle inter-comptes.
-
-
Sur la page de résumé du rôle, cliquez sur l'onglet Trust Relationships tab.
-
Collez cette politique d’accès dans l’éditeur et remplacez les valeurs suivantes de la politique par vos propres valeurs de configuration. La politique utilise l'ID de compte Databricks AWS
414351767826. Si vous utilisez Databricks sur AWS GovCloud, utilisez l’ID de compte Databricks044793339203pour AWS GovCloud ou170661010020pour AWS GovCloud DoD.<databricks-account-id>: votre ID de compte Databricks.JSON{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::414351767826:role/SaasUsageDeliveryRole-prod-IAMRole-3PLHICCRR1TK"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": ["<databricks-account-id>"]
}
}
}
]
} -
Dans le résumé du rôle, copiez l' ARN de rôle et enregistrez-le pour une étape ultérieure.

-
Créez un ID de configuration des identifiants Databricks pour votre rôle AWS. Appelez l'API de création de configuration d'identifiant (
POST /accounts/<account-id>/credentials). Cette demande établit la confiance entre les comptes et renvoie un ID de référence à utiliser lorsque vous créez un nouveau workspace.Remplacez
<account-id>par votre ID de compte Databricks. Dans le corps de la demande :- Définissez
credentials_namesur un nom unique au sein de votre compte. - Définissez
aws_credentialssur un objet qui contient une propriétésts_role. Cet objet doit spécifier lerole_arnpour le rôle que vous avez créé.
Le corps de la réponse inclura un champ
credentials_id, qui est l'ID de configuration des identifiants Databricks dont vous avez besoin pour créer le nouveau workspace. Copiez ce champ afin que vous puissiez l'utiliser pour créer la configuration de livraison des Logs lors d'une étape ultérieure.Par exemple :
Bashcurl -X POST
'https://accounts.cloud.databricks.com/api/2.0/accounts/<databricks-account-id>/credentials' \
--header 'Authorization: Bearer $OAUTH_TOKEN' \
-d '{
"credentials_name": "databricks-credentials-v1",
"aws_credentials": {
"sts_role": {
"role_arn": "arn:aws:iam::<aws-account-id>:role/my-company-example-role"
}
}
}'Exemple de réponse :
JSON{
"credentials_id": "<databricks-credentials-id>",
"account_id": "<databricks-account-id>",
"aws_credentials": {
"sts_role": {
"role_arn": "arn:aws:iam::<aws-account-id>:role/my-company-example-role",
"external_id": "<databricks-account-id>"
}
},
"credentials_name": "databricks-credentials-v1",
"creation_time": 1579753556257
}Copiez le champ
credentials_idde la réponse pour une utilisation ultérieure. - Définissez
Étape 3 : Prise en charge inter-comptes facultative
Si votre compartiment S3 se trouve dans le même compte AWS que le rôle IAM utilisé pour la livraison des logs, ignorez cette étape.
Pour livrer des logs à un compte AWS autre que celui utilisé pour le rôle IAM que vous créez pour la livraison des logs, ajoutez la stratégie de compartiment S3 indiquée ci-dessous. Cette politique référence les ID pour le rôle IAM inter-comptes que vous avez créé à l'étape précédente.
-
Dans la console AWS, rendez-vous au service S3.
-
Cliquez sur le nom du compartiment.
-
Cliquez sur l'onglet tab .
-
Cliquez sur le bouton Politique relative aux compartiments.

-
Copiez et modifiez cette politique de compartiment.
Remplacez
<s3-bucket-name>par le nom du compartiment S3. Remplacez<customer-iam-role-id>par l'ID de rôle de votre rôle IAM nouvellement créé. Remplacez<s3-bucket-path-prefix>par le préfixe du chemin du compartiment que vous souhaitez. Consultez les notes après l'exemple de politique pour plus d'informations sur la personnalisation du préfixe de chemin.JSON{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws:iam::<customer-iam-role-id>"]
},
"Action": "s3:GetBucketLocation",
"Resource": "arn:aws:s3:::<s3-bucket-name>"
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<customer-iam-role-id>"
},
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:PutObjectAcl",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
],
"Resource": [
"arn:aws:s3:::<s3-bucket-name>/<s3-bucket-path-prefix>/",
"arn:aws:s3:::<s3-bucket-name>/<s3-bucket-path-prefix>/*"
]
},
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<customer-iam-role-id>"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::<s3-bucket-name>",
"Condition": {
"StringLike": {
"s3:prefix": ["<s3-bucket-path-prefix>", "<s3-bucket-path-prefix>/*"]
}
}
}
]
}Vous pouvez personnaliser l'utilisation de la politique du préfixe de chemin :
-
Si vous ne souhaitez pas utiliser le préfixe du chemin d'accès au compartiment, supprimez
<s3-bucket-path-prefix>/(y compris la barre oblique finale) de la politique chaque fois qu'il apparaît. -
Si vous souhaitez des configurations de livraison de Logs pour plusieurs Workspace qui partagent le même compartiment S3 mais utilisent des préfixes de chemin différents, vous pouvez définir un rôle IAM pour inclure plusieurs préfixes de chemin. Deux parties de la politique font référence à
<s3-bucket-path-prefix>. À chaque endroit, dupliquez les deux lignes adjacentes qui font référence au préfixe de chemin. Répétez chaque paire de lignes pour chaque nouveau préfixe de chemin. Par exemple :JSON{
"Resource": [
"arn:aws:s3:::<mybucketname>/field-team/",
"arn:aws:s3:::<mybucketname>/field-team/*",
"arn:aws:s3:::<mybucketname>/finance-team/",
"arn:aws:s3:::<mybucketname>/finance-team/*"
]
}
-
Étape 4 : Appelez l'API de livraison des Logs
Pour configurer la livraison des Logs, appelez l'API de configuration de livraison des Logs (POST /accounts/<account-id>/log-delivery).
Vous avez besoin des valeurs suivantes que vous avez copiées lors des étapes précédentes :
credentials_id: Votre ID de configuration d'identifiants Databricks, qui représente vos identifiants de rôle inter-comptes.storage_configuration_id: Votre ID de configuration du stockage Databricks, qui représente votre compartiment S3 racine.
Définissez également les champs suivants :
-
log_type: Toujours défini surBILLABLE_USAGE. -
output_format: Toujours défini surCSV. Pour plus de détails sur le format de fichier CSV, consultez le schéma de log d'utilisation facturable (hérité). -
delivery_path_prefix: (Facultatif) Définissez le préfixe de chemin d'accès. Ceci doit correspondre au préfixe de chemin que vous avez utilisé dans votre stratégie de rôle. -
workspace_ids_filter: (Facultatif) Par défaut, cette configuration des Logs s'applique à tous les Workspace associés à votre identifiant de compte. Pour certains types de déploiements, il n'y a qu'un seul workspace par ID de compte, ce champ est donc inutile. Si votre compte a été créé initialement pour la création de workspaces avec l'API de compte, vous pouvez avoir plusieurs workspaces associés à votre ID de compte. Vous pouvez éventuellement définir ce champ sur un tableau d'ID de workspace auxquels cette configuration s'applique. Si vous prévoyez d'utiliser différentes configurations de livraison de Logs pour différents workspaces, définissez-le explicitement plutôt que de le laisser vide. Si vous laissez ce champ vide et que votre ID de compte est associé ultérieurement à des workspaces supplémentaires, cette configuration s'applique également aux nouveaux workspaces. Un workspace might apply to more than one log delivery configuration, in which case the logs are written to multiple locations.
Il existe une limite au nombre de configurations de livraison de Logs que vous pouvez créer pour un compte. Vous pouvez créer un maximum de deux configurations activées qui utilisent le niveau du compte (sans filtre de Workspace) et deux configurations activées pour chaque Workspace spécifique (un workspaceId peut apparaître dans le filtre de Workspace pour deux configurations). Vous ne pouvez pas supprimer une configuration de livraison des logs, mais vous pouvez la désactiver. Vous pouvez réactiver une configuration désactivée, mais la requête échoue si elle viole les limites décrites précédemment.
delivery_start_time: (Facultatif) Le mois et l’année à partir desquels la livraison des Logs start. default sur le mois en cours. Le format est du texte au formatYYYY-MM. Vous pouvez saisir n’importe quel mois et année à partir de mars 2019.
Par exemple :
curl -X POST
'https://accounts.cloud.databricks.com/api/2.0/accounts/<databricks-account-id>/log-delivery' \
--header 'Authorization: Bearer $OAUTH_TOKEN' \
-d '{
"log_delivery_configuration": {
"log_type": "BILLABLE_USAGE",
"config_name": "billable usage config",
"output_format": "CSV",
"credentials_id": "<databricks-credentials-id>",
"storage_configuration_id": "<databricks-storage-config-id>",
"delivery_path_prefix": "usage-data",
"delivery_start_time": "2020-06",
"workspace_ids_filter": [
6383650456894062,
4102272838062927
]
}
}'
Exemple de réponse :
{
"log_delivery_configuration": {
"config_id": "<config-id>",
"config_name": "billable usage config",
"log_type": "BILLABLE_USAGE",
"output_format": "CSV",
"account_id": "<account-id>",
"credentials_id": "<databricks-credentials-id>",
"storage_configuration_id": "<databricks-storage-config-id>",
"workspace_ids_filter": [6383650456894062, 4102272838062927],
"delivery_path_prefix": "usage-data",
"delivery_start_time": "2020-06",
"status": "ENABLED",
"creation_time": 1591638409000,
"update_time": 1593108904000,
"log_delivery_status": {
"status": "CREATED",
"message": "Log Delivery Configuration is successfully created. Status will be updated after the first delivery attempt."
}
}
}
Fonctionnalités supplémentaires des APIs de livraison des Logs
Les APIs de livraison de logs ont des fonctionnalités supplémentaires. Consultez la documentation de référence de l'API pour plus de détails.
Les opérations supplémentaires incluent :
- Obtenir toutes les configurations de livraison de Logs
- Obtenez une configuration de livraison des Logs par ID.
- Activer ou désactiver une configuration de livraison de logs par ID
L'état de la configuration de la livraison des logs peut être trouvé dans l'objet log_delivery_status de la réponse de l'API. Avec log_delivery_status, vous pouvez vérifier l'état (réussite ou échec) et la dernière fois qu'une tentative ou une livraison a réussi.
Il existe une limite au nombre de configurations de livraison de Logs que vous pouvez créer pour un compte. Vous pouvez créer un maximum de deux configurations activées qui utilisent le niveau du compte (sans filtre de Workspace) et deux configurations activées pour chaque Workspace spécifique (un workspaceId peut apparaître dans le filtre de Workspace pour deux configurations). Vous ne pouvez pas supprimer une configuration de livraison des logs, mais vous pouvez la désactiver. Vous pouvez réactiver une configuration désactivée, mais la requête échoue si elle viole les limites décrites précédemment.
Étape 5 : accédez aux Logs files pour analyse.
Les fichiers logs sont livrés à <bucket-name>/<prefix>/billable-usage/csv/, où <prefix> est le nom du préfixe de chemin de livraison facultatif que vous avez configuré lors de la configuration de la livraison des logs. Les fichiers sont nommés workspaceId=<workspace-id>-usageMonth=<month>.csv. Les fichiers sont livrés quotidiennement en écrasant le fichier CSV du mois pour chaque Workspace.
Pour le schéma CSV, consultez le schéma de fichier CSV
Pour plus d'informations sur la façon d'analyser ces fichiers à l'aide de Databricks, consultez Analyser les données d'utilisation dans Databricks
Configuration automatisée à l'aide de Terraform
Vous pouvez utiliser le fournisseur Databricks Terraform pour configurer automatiquement la livraison des Logs d'utilisation à l'aide de la ressource databricks_mws_log_delivery. Voici un exemple de bout en bout de livraison des Logs d'utilisation et d'audit :
variable "databricks_account_id" {
description = "Account ID. You can get your account ID in the bottom left corner of the account console. See https://accounts.cloud.databricks.com"
}
resource "aws_s3_bucket" "logdelivery" {
bucket = "${var.prefix}-logdelivery"
acl = "private"
versioning {
enabled = false
}
force_destroy = true
tags = merge(var.tags, {
Name = "${var.prefix}-logdelivery"
})
}
resource "aws_s3_bucket_public_access_block" "logdelivery" {
bucket = aws_s3_bucket.logdelivery.id
ignore_public_acls = true
}
data "databricks_aws_assume_role_policy" "logdelivery" {
external_id = var.databricks_account_id
for_log_delivery = true
}
resource "aws_iam_role" "logdelivery" {
name = "${var.prefix}-logdelivery"
description = "(${var.prefix}) UsageDelivery role"
assume_role_policy = data.databricks_aws_assume_role_policy.logdelivery.json
tags = var.tags
}
data "databricks_aws_bucket_policy" "logdelivery" {
full_access_role = aws_iam_role.logdelivery.arn
bucket = aws_s3_bucket.logdelivery.bucket
}
resource "aws_s3_bucket_policy" "logdelivery" {
bucket = aws_s3_bucket.logdelivery.id
policy = data.databricks_aws_bucket_policy.logdelivery.json
}
resource "databricks_mws_credentials" "log_writer" {
account_id = var.databricks_account_id
credentials_name = "Usage Delivery"
role_arn = aws_iam_role.logdelivery.arn
}
resource "databricks_mws_storage_configurations" "log_bucket" {
account_id = var.databricks_account_id
storage_configuration_name = "Usage Logs"
bucket_name = aws_s3_bucket.logdelivery.bucket
}
resource "databricks_mws_log_delivery" "usage_logs" {
account_id = var.databricks_account_id
credentials_id = databricks_mws_credentials.log_writer.credentials_id
storage_configuration_id = databricks_mws_storage_configurations.log_bucket.storage_configuration_id
delivery_path_prefix = "billable-usage"
config_name = "Usage Logs"
log_type = "BILLABLE_USAGE"
output_format = "CSV"
}
resource "databricks_mws_log_delivery" "audit_logs" {
account_id = var.databricks_account_id
credentials_id = databricks_mws_credentials.log_writer.credentials_id
storage_configuration_id = databricks_mws_storage_configurations.log_bucket.storage_configuration_id
delivery_path_prefix = "audit-logs"
config_name = "Audit Logs"
log_type = "AUDIT_LOGS"
output_format = "JSON"
}