Entregar e acessar registros de uso faturáveis

Visualização

Este recurso está em visualização pública.

Observação

Uso faturável logs não registra o uso de todos os produtos. Databricks recomenda o uso de tabelas do sistema para view uso completo logs.

Como administrador do Databricks account , o senhor pode configurar a entrega diária do registro de uso faturável no formato de arquivo CSV para um bucket de armazenamento AWS S3 , onde pode disponibilizar os dados para análise de uso. Databricks entrega um arquivo CSV separado para cada workspace em seu account. Esse CSV arquivo inclui dados históricos sobre o workspace cluster uso do em Databricks Units (DBUs), classificáveis por cluster ID, faturamento SKU, cluster creator, Cluster Tag e muito mais. Para obter uma descrição de cada coluna do arquivo CSV, consulte o esquema do arquivo CSV.

Para usar um API para download o billable usage logs sem configurar a entrega log, consulte Return billable usage logs.

Os administradores de conta podem exibir o uso em forma de gráfico ou tabela na página de uso no console da conta. Essa página também apresenta um gráfico de utilização que mostra o uso da conta em DBUs, categorizado por tipo de carga de trabalho, e permite o download direto dos dados de utilização em formato CSV.

Se sua conta estiver em outra versão da plataforma, os proprietários da conta poderão visualizar o uso na guia "Visão geral de uso do console de conta legacy".

Você pode, se desejar, enviar os logs para uma conta da AWS que seja diferente da conta utilizada para o IAM role criado para a entrega dos logs.Isso permite flexibilidade, por exemplo, configurar workspace de várias account da AWS para entregar no mesmo bucket do S3. Essa opção requer que você configure uma política de bucket do S3 que faça referência a umaIAM role entre account. Instruções e um modelo de política são fornecidos neste artigo.

O acesso do proprietário e do administrador da conta aos registros depende de como você configura o bucket do S3. O Databricks entrega registros para seu bucket do S3 com a ACL enlatada BucketOwnerFullControl integrada da AWS para que os proprietários e designados da conta possam baixar os registros diretamente. Para oferecer suporte à propriedade do bucket para objetos recém-criados, você deve definir a configuração de propriedade de objeto do S3 do bucket para o valor de preferência do proprietário do bucket.

Importante

Se, em vez disso, você definir a configuração de propriedade do objeto S3 do bucket como gravador de objetos, novos objetos, como seus registros, permanecerão de propriedade da conta de upload, que é, por padrão, a função do IAM que você criou e especificou para acessar seu bucket. Isso pode dificultar o acesso aos logs, porque você não pode acessá-los a partir do console da AWS ou das ferramentas de automação com as quais você se autenticou como proprietário do bucket.

O Databricks recomenda que você revise as Práticas recomendadas de segurança para o S3 para obter orientação sobre como proteger os dados em seu bucket contra acesso indesejado.

Além da entrega de logs para workspaces em execução, os logs são entregues para workspaces cancelados para garantir que os logs sejam entregues adequadamente e representem o último dia do workspace.

Opções de configuração

Ao configurar a entrega do log de uso faturável, você terá as seguintes opções se tiver vários workspaces em sua conta:

  • Compartilhe a mesma configuração (papel S3 de entrega de logs e IAM) para todos os workspaces na conta. Este é o padrão.

  • Use configurações separadas para cada workspace da conta.

  • Use configurações separadas para diferentes grupos de workspaces, cada um compartilhando uma configuração.

Observação

Mesmo que você use a API de conta para configurar a entrega de log, você pode configurar a entrega de log com qualquer workspace, incluindo workspaces que não foram criados usando a API de conta.

Fluxo de alto nível

O fluxo de alto nível da entrega do registro de uso faturável:

  1. Configure o armazenamento: No AWS, crie um novo bucket do AWS S3. Usando Databricks APIs, chame account API para criar um objeto de configuração de armazenamento que use o nome do bucket.

    Observação

    Para entregar logs a uma conta da AWS que não seja aquela usada para a função IAM criada para entrega de logs, você precisa adicionar uma política ao bucket S3.Você não adiciona a política nesta passo, mas em uma passo posterior.

  2. Configure as credenciais: Em AWS, crie as credenciais apropriadas AWS IAM role. Usando o Databricks APIs, chame o account API para criar um objeto de configuração de credenciais que usa o IAM role's ARN. A política de função pode especificar um prefixo de caminho para a entrega de log dentro do seu bucket S3. O senhor pode optar por definir um IAM role para incluir vários prefixos de caminho se quiser configurações de entrega log para diferentes espaços de trabalho que compartilham o bucket S3, mas usam prefixos de caminho diferentes.

  3. Suporte cruzado opcionalaccount Para entregar logs a um AWS account que não seja o account do IAM role que o senhor criou para entrega log, adicione uma política de bucket S3. Essa política faz referência a IDs para o crossaccount IAM role que o senhor criou no passo anterior.

  4. Chame a entrega log API : Chame a entrega account API para criar uma configuração de entrega log que use os objetos de configuração de credenciais e armazenamento dos passos anteriores. Esse passo permite que o senhor especifique se deseja associar a configuração de entrega do log para todo o account (espaço de trabalho atual e futuro) ou para um conjunto específico de espaços de trabalho.

  5. Acesse os arquivos CSV para análise: O local de entrega é <bucket-name>/<prefix>/billable-usage/csv/, em que <prefix> é o nome do prefixo do caminho de entrega opcional que o senhor definiu durante a configuração de entrega log. Os arquivos são nomeados workspaceId=<workspace-id>-usageMonth=<month>.csv. Os arquivos são entregues diariamente, sobrescrevendo o arquivo CSV do mês para cada workspace. O senhor pode importar esses dados para o Databricks para análise. Há também um exemplo de Notebook que o senhor pode usar para executar um painel de análise de uso com base nesses arquivos CSV. Consulte Analisar dados de uso no Databricks.

Importante

Existe um limite para o número de configurações de entrega de logs que você pode criar para uma conta. você pode criar no máximo duas configurações habilitadas que usam o nível de conta (sem filtro de workspace) e duas configurações habilitadas para cada workspace específico (pode ocorrer um workspaceId no filtro de workspace para duas configurações). você não pode excluir uma configuração de fornecimento de log, mas pode desativá-la. Você pode reativar uma configuração desativada, mas a solicitação falhará se violar os limites descritos anteriormente.

Requisitos

  • Você deve ser um administrador de conta

  • account ID. O ID do account pode ser encontrado no consoleaccount .

Como autenticar na API da conta

Para se autenticar na conta API, o senhor pode usar Databricks OAuth para entidade de serviço ou Databricks OAuth para usuários. Databricks Recomendamos enfaticamente que o senhor use o site Databricks OAuth para usuários ou entidades de serviço. Uma entidade de serviço é uma identidade que o senhor cria em Databricks para uso com ferramentas, trabalhos e aplicativos automatizados. Consulte Autenticar o acesso ao Databricks com uma entidade de serviço usando OAuth (OAuth M2M).

Use os exemplos a seguir para se autenticar em um site Databricks account. O senhor pode usar OAuth para entidade de serviço ou OAuth para usuários. Para saber mais, consulte:

Observação

A autenticação básica usando um nome de usuário e senha da Databricks chegou ao fim da vida útil em 10 de julho de 2024. Consulte End of life para Databricks-gerenciar senhas.

Para exemplos de autenticação, escolha uma das seguintes opções:

  1. Instale o site Databricks CLI versão 0.205 ou acima. Consulte Instalar ou atualizar a CLI da Databricks.

  2. Complete os passos para configurar a autenticação OAuth M2M para a entidade de serviço no site account. Consulte Autenticar o acesso ao Databricks com uma entidade de serviço usando OAuth (OAuth M2M).

  3. Identifique ou crie manualmente um perfil de configuração do Databricks em seu arquivo .databrickscfg, com os campos do perfil definidos corretamente para os mapeamentos host, account_id, client_id e client_secret relacionados à entidade de serviço. Consulte a autenticação OAuth máquina a máquina (M2M).

  4. Execute o comando Databricks CLI de destino, onde <profile-name> representa o nome do perfil de configuração no arquivo .databrickscfg:

    databricks account <command-name> <subcommand-name> -p <profile-name>
    

    Por exemplo, para listar todos os usuários na conta:

    databricks account users list -p MY-AWS-ACCOUNT
    
    • Para obter uma lista de comandos de conta disponíveis, execute o comando databricks account -h.

    • Para obter uma lista de subcomandos disponíveis para um comando de conta, execute o comando databricks account <command-name> -h.

  1. Instale o site Databricks CLI versão 0.205 ou acima. Consulte Instalar ou atualizar a CLI da Databricks.

  2. Complete os passos a seguir para configurar a autenticação OAuth U2M para os usuários no site account. Consulte Autenticar o acesso a Databricks com um usuário account usando OAuth (OAuth U2M).

  3. Inicie o processo de autenticação do usuário executando o seguinte comando Databricks CLI:

    databricks auth login --host <account-console-url> --account-id <account-id>
    

    Por exemplo:

    databricks auth login --host https://accounts.cloud.databricks.com --account-id 00000000-0000-0000-0000-000000000000
    

    Observação

    Se o senhor tiver um perfil de configuração do Databricks existente com os campos host e account_id já definidos, poderá substituir --host <account-console-url> --account-id <account-id> por --profile <profile-name>.

  4. Siga as instruções na tela para que a CLI do Databricks crie automaticamente o perfil de configuração do Databricks relacionado em seu arquivo .databrickscfg.

  5. Continue seguindo as instruções que aparecem na tela para acessar a sua conta Databricks através do seu navegador da web.

  6. Execute o comando Databricks CLI de destino, onde <profile-name> representa o nome do perfil de configuração no arquivo .databrickscfg:

    databricks account <command-name> <subcommand-name> -p <profile-name>
    

    Por exemplo, para listar todos os usuários na conta:

    databricks account users list -p ACCOUNT-00000000-0000-0000-0000-000000000000
    
    • Para obter uma lista de comandos de conta disponíveis, execute o comando databricks account -h.

    • Para obter uma lista de subcomandos disponíveis para um comando de conta, execute o comando databricks account <command-name> -h.

Etapa 1: Configurar o armazenamento

O Databricks entrega os dados de uso faturáveis para um bucket S3 na sua conta. Você pode configurar vários workspaces para usar um único bucket do S3 ou pode definir diferentes workspaces (ou grupos de workspaces) para usar buckets diferentes.

Este procedimento explica como criar um único objeto de configuração com uma configuração comum para um ou mais workspaces na conta.Para usar locais de armazenamento diferentes para diferentes workspaces, repita os procedimentos neste artigo para cada workspace ou grupo de workspaces.

  1. Crie o bucket do S3 seguindo as instruções em Etapa 1: Configurar o armazenamento de log de auditoria.

    Importante

    Para entregar logs a um AWS account diferente do usado para seu Databricks workspace, o senhor deve adicionar uma política de bucket S3. O senhor não adiciona a política de balde nesse passo. Consulte o passo 3: Suporte cruzado opcional -account .

  2. Crie um registro de configuração de armazenamento do Databricks que represente seu novo bucket S3. Especifique seu bucket S3 chamando a API de criação de nova configuração de armazenamento (POST /accounts/<account-id>/storage-configurations).

    Passe o seguinte:

    • storage_configuration_name — Novo nome de configuração de armazenamento exclusivo.

    • root_bucket_info — Um objeto JSON que contém um campo bucket_name que contém seu nome do contêiner S3.

    Copie o valor storage_configuration_id retornado no corpo da resposta. Você o usará para criar a configuração de entrega logs em uma passo posterior.

    Por exemplo:

    curl -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"
        }
      }'
    

    Resposta:

    {
      "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
    }
    

Etapa 2: configurar credenciais

Este procedimento explica como criar um único objeto de configuração com uma configuração comum para um ou mais workspaces na conta.Para usar credenciais diferentes para workspaces diferentes, repita os procedimentos deste artigo para cada workspace ou grupo de workspaces.

Observação

Para usar nomes de bucket S3 diferentes, você precisa criar IAM roles separados.

  1. Faça login no console da AWS como usuário com privilégios de administrador e acesse o serviço IAM.

  2. Clique na guia Funções na barra lateral.

  3. Clique em Criar função.

    1. Em Selecionar tipo de entidade confiável, clique em Serviço AWS.

    2. Em Casos de uso comuns, clique em EC2.

    3. Clique no botão Seguinte: Permissões.

    4. Clique no botão Avançar: tags.

    5. Clique no botão Próximo: Revisão .

    6. No campo Nome da função, insira um nome de papel.

      Nome da função
    7. Clique em Criar função.A lista de funções é exibida.

  4. Na lista de funções, selecione a função que você criou.

  5. Adicione uma política em linha.

    1. Na guia Permissões, clique em Adicionar política em linha.

      Política em linha
    2. No editor de políticas, clique na guia JSON.

      Editor JSON
    3. Copie essa política de acesso e modifique-a. Substitua os valores a seguir na política pelos seus próprios valores de configuração:

      • <s3-bucket-name>: o nome do bucket do seu balde AWS S3.

      • <s3-bucket-path-prefix>(Opcional) O caminho para o local de entrega no bucket S3. Se não for especificado, os logs serão entregues na raiz do bucket. Esse caminho deve corresponder ao argumento delivery_path_prefix quando o senhor chamar a API de fornecimento de log.

      {
        "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>/*"
                ]
              }
            }
          }
        ]
      }
      

      Você pode personalizar o uso da política do prefixo do caminho:

      • Se você não quiser usar o prefixo do caminho do contêiner, remova <s3-bucket-path-prefix>/ (incluindo a barra final) da política toda vez que ela aparecer.

      • Se desejar configurações de entrega de log para diferentes workspaces que compartilham o bucket S3, mas usam prefixos de caminho diferentes, você pode definir um IAM role para incluir vários prefixos de caminho. Existem duas partes separadas da política que fazem referência a <s3-bucket-path-prefix>. Em cada caso, duplique as duas linhas adjacentes que fazem referência ao prefixo do caminho. Repita cada par de linhas para cada novo prefixo de caminho, por exemplo:

      {
        "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/*"
        ]
      }
      
    4. Clique em Revisar política.

    5. No campo Nome , insira um nome de política.

    6. Clique em Criar política.

    7. Se você usar políticas de controle de serviço para negar determinadas ações no nível da conta da AWS, certifique-se de que sts:AssumeRole esteja na lista de permissões para que o Databricks possa assumir a função entre contas.

  6. Na página de resumo do papel, clique na guia Relacionamentos de Confiança.

  7. Cole essa política de acesso no editor e substitua os seguintes valores na política por seus próprios valores de configuração. A política usa o endereço Databricks AWS account ID 414351767826. Se o senhor estiver usando Databricks on AWS GovCloud use o endereço Databricks account ID 044793339203.

    <databricks-account-id>: ID da sua conta do Databricks.

    {
      "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>"
              ]
            }
          }
        }
      ]
    }
    
  8. No resumo da função, copie o ARN da função e salve-o para uma etapa posterior.

    Função ARN
  9. Crie um ID de configuração de credenciais do Databricks para sua função do AWS. Chame a API Create credential configuration (POST /accounts/<account-id>/credentials). Essa solicitação estabelece a confiança entreaccount e retorna um ID de referência a ser usado quando o senhor criar um novo workspace.

    Substitua <account-id> pelo ID da sua conta Databricks. No corpo da solicitação:

    • Defina credentials_name para um nome exclusivo na sua conta.

    • Defina aws_credentials a um objeto que contém uma propriedade sts_role . Esse objeto deve especificar role_arn para a função que você criou.

    O corpo da resposta incluirá um campo credentials_id, que é a ID de configuração de credenciais do Databricks que você precisa para criar o novo workspace. Copie este campo para poder usá-lo para criar a configuração de entrega logs em uma passo posterior.

    Por exemplo:

     curl -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"
         }
       }
     }'
    

    Resposta de exemplo:

     {
       "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
     }
    

    Copie o campo credentials_id da resposta para uso posterior.

Etapa 3: Suporte opcional entre contas

Caso seu bucket do S3 estiver na mesma account da AWS que a IAM role usada para entrega logs, pule esta passo.

Para encaminhar os logs para uma conta da AWS que não seja a mesma da conta utilizada para a função IAM criada para a entrega de logs, adicione a política do bucket S3 mostrada abaixo.Esta política faz referência a IDs para o IAM role entre a conta que você criou na etapa anterior.

  1. No Console da AWS, acesse o serviço S3.

  2. Clique no nome do bucket.

  3. Clique na guia Permissões .

  4. Clique no botão Política de bucket .

    Botão de política de bucket
  5. Copie e modifique esta política de bucket.

    Substitua <s3-bucket-name> pelo nome do bucket S3. Substitua <customer-iam-role-id> pelo ID do IAM role recém-criada. Substitua <s3-bucket-path-prefix> pelo prefixo do caminho do bucket desejado. Consulte as notas após o exemplo de política para obter informações sobre como personalizar o prefixo do caminho.

    {
      "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>/*"
                      ]
                  }
              }
          }
      ]
    }
    

    Você pode personalizar o uso da política do prefixo do caminho:

    • Se você não quiser usar o prefixo do caminho do contêiner, remova <s3-bucket-path-prefix>/ (incluindo a barra final) da política toda vez que ela aparecer.

    • Se você deseja configurar a entrega de logs para vários workspaces que compartilham o mesmo bucket S3, mas usam diferentes prefixos de caminho, é possível definir um IAM role que inclua múltiplos prefixos de caminho. Duas partes da referência política <s3-bucket-path-prefix>. Em cada local, duplique as duas linhas adjacentes que fazem referência ao prefixo do caminho. Repita cada par de linhas para cada novo prefixo de caminho. Por exemplo:

      {
        "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/*"
        ]
      }
      

O passo 4: Chamar a API de entrega logs

Para configurar a entrega log, chame a configuração de entregalog API (POST /accounts/<account-id>/log-delivery).

Você precisa dos seguintes valores que você copiou nas passos anteriores:

  • credentials_id: Seu ID de configuração de credenciais do Databricks, que representa suas credenciais de função entre contas.

  • storage_configuration_id: Seu ID de configuração de armazenamento do Databricks, que representa seu contêiner raiz S3.

Defina também os seguintes campos:

  • log_type: Sempre definido como BILLABLE_USAGE.

  • output_format: Sempre definido como CSV. Para obter detalhes sobre o formato de arquivo CSV, consulte Billable usage log schema (legacy).

  • delivery_path_prefix: (Opcional) Defina como o prefixo do caminho. Isso deve corresponder ao prefixo do caminho que você usou em sua política de função.

  • workspace_ids_filter: (Opcional) Por padrão, essa configuração de log se aplica a todos os workspaces associados ao ID da conta. Para alguns tipos de implementações, há apenas um workspace por ID de conta, portanto, esse campo é desnecessário. Se a sua conta foi criada originalmente para a criação de workspaces com a API da conta, você pode ter vários workspaces associados ao seu ID de conta. Opcionalmente, você pode definir esse campo para uma matriz de IDs do workspace às quais essa configuração se aplica. Se você planeja usar configurações de entrega de logs diferentes para diferentes workspaces, defina isso de forma explícita, em vez de deixar em branco.Se você deixar isso em branco e o ID da conta estiver associado no futuro a workspaces adicionais, essa configuração também se aplicará aos novos workspaces. Uma área de trabalho pode se aplicar a mais de uma configuração de entrega de log, caso em que os logs são gravados em vários locais.

    Importante

    Existe um limite para o número de configurações de entrega de logs que você pode criar para uma conta. você pode criar no máximo duas configurações habilitadas que usam o nível de conta (sem filtro de workspace) e duas configurações habilitadas para cada workspace específico (pode ocorrer um workspaceId no filtro de workspace para duas configurações). você não pode excluir uma configuração de fornecimento de log, mas pode desativá-la. Você pode reativar uma configuração desativada, mas a solicitação falhará se violar os limites descritos anteriormente.

  • delivery_start_time: (Opcional) o mês e o ano em que a entrega de log começa. O padrão é o mês atual. O formato é texto no formato YYYY-MM . Você pode inserir qualquer mês e ano a partir de 2019-03.

Por exemplo:

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
    ]
    }
}'

Resposta de exemplo:

{
    "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."
        }
    }
}

Recursos adicionais das APIs de entrega de logs

A entregalog APIstem recurso adicional. Consulte a documentação de referência da API para obter detalhes.

Outras operações incluem:

O status de configuração de entrega de log pode ser encontrado no objeto log_delivery_status da resposta da API. Com log_delivery_status, você pode verificar o status (sucesso ou fracasso) e a última vez de uma tentativa ou entrega bem-sucedida.

Importante

Existe um limite para o número de configurações de entrega de logs que você pode criar para uma conta. você pode criar no máximo duas configurações habilitadas que usam o nível de conta (sem filtro de workspace) e duas configurações habilitadas para cada workspace específico (pode ocorrer um workspaceId no filtro de workspace para duas configurações). você não pode excluir uma configuração de fornecimento de log, mas pode desativá-la. Você pode reativar uma configuração desativada, mas a solicitação falhará se violar os limites descritos anteriormente.

Etapa 5: acesse os arquivos de log para análise

Os arquivos de log são entregues para <bucket-name>/<prefix>/billable-usage/csv/, onde <prefix> é o nome do prefixo do caminho de entrega opcional que você configurou durante a configuração da entrega de log. Os arquivos são denominados workspaceId=<workspace-id>-usageMonth=<month>.csv. Os arquivos são entregues diariamente, substituindo o arquivo CSV do mês para cada workspace.

Para obter o esquema CSV, consulte Esquema de arquivo CSV

Para obter informações sobre como analisar esses arquivos usando Databricks, consulte Analisar dados de uso em Databricks

Configuração automatizada usando o Terraform

Você pode usar o provedor Databricks Terraform para configurar a entrega de log de uso automaticamente com a ajuda do recurso databricks_mws_log_delivery . Aqui está um exemplo completo de uso e entrega de registros de auditoria:

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"
}