Entregar e acessar registros de uso faturáveis

Visualização

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

Observação

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

Como administrador account do Databricks, você pode configurar a entrega diária de log in formato de arquivo CSV para um bucket de armazenamento AWS S3, onde você pode disponibilizar os dados para análise de uso. O Databricks fornece um arquivo CSV separado para cada workspace em sua account. Este arquivo CSV inclui dados históricos sobre o uso clustersdo workspace em Databricks Units (DBUs), classificáveis por ID clusters , SKU de cobrança, criador clusters , Cluster Tag e muito mais. Para obter uma descrição de cada coluna de arquivo CSV, consulte esquema de arquivo CSV.

Para usar uma API para downloads os logs de uso faturáveis sem configurar a entrega de logs, consulte Retornar logs de uso faturáveis.

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: na AWS, crie um novo bucket S3 da AWS. Usando APIs do Databricks, chame a API account para criar um objeto de configuração de armazenamento que usa o nome do depósito.

    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. Configurar credenciais: na AWS, crie a IAM role apropriada da AWS. Usando APIs do Databricks, chame a API account para criar um objeto de configuração de credenciais que usa o ARN da IAM role . A política de função pode especificar um prefixo de caminho para entrega logs em seu bucket do S3. Você pode optar por definir uma IAM role para incluir vários prefixos de caminho se desejar configurações de entrega logs para diferentes workspace que compartilham o bucket do S3, mas usam diferentes prefixos de caminho.

  3. Suporte opcional entre contas Para entregar logs a uma conta da AWS diferente da conta da IAM role que você criou para entrega de log, adicione uma política de bucket do S3. Esta política faz referência a IDs para aIAM role entre account que você criou no passo anterior.

  4. Chame a API de entrega de logs : Chame a API account para criar uma configuração de entrega logs que use os objetos de configuração de credencial e armazenamento dos passos anteriores. Este passo permite que você especifique se deseja associar a configuração de entrega logs para toda account ( workspace atual e futuro) ou para um conjunto específico de workspace.

  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 você configurou durante a configuração de entrega logs . Os arquivos são nomeados workspaceId=<workspace-id>-usageMonth=<month>.csv. Os arquivos são entregues diariamente substituindo o arquivo CSV do mês para cada workspace. Você pode importar esses dados para Databricks para análise. Há também um Notebook de amostra que você 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

  • identificação account . Você pode encontrar o ID da conta no console da conta.

Como autenticar na API da conta

Para se autenticar na API account, o senhor pode usar o Databricks OAuth para entidade de serviço, o Databricks OAuth para usuários ou o nome de usuário e a senha de um administrador do Databricks account. A Databricks recomenda enfaticamente que o senhor use o Databricks OAuth para usuários ou entidades de serviço. Uma entidade de serviço é uma identidade que o senhor cria no Databricks para uso com ferramentas, trabalhos e aplicativos automatizados. Consulte a autenticação OAuth máquina a máquina (M2M).

Use os exemplos a seguir para autenticar uma account do Databricks. Você pode usar OAuth para entidade de serviço, OAuth para usuários ou um nome de usuário e senha de usuário (legado). Para obter informações básicas, consulte:

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

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

  2. Conclua os passos para configurar a autenticação OAuth M2M para entidade de serviço na account. Consulte Autenticação máquina a máquina (M2M) OAuth.

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

  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 a CLI do Databricks versão 0.205 ou acima. Consulte Instalar ou atualizar a CLI do Databricks.

  2. Conclua os passos para configurar a autenticação OAuth U2M para usuários na account. Consulte Autenticação usuário-máquina (U2M) OAuth.

  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 você 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.

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

  2. Identifique ou crie manualmente um perfil de configuração do Databricks em seu arquivo .databrickscfg, com os campos do perfil definidos corretamente para o mapeamento host, account_id e username e password relacionado à sua account de usuário do Databricks. Consulte Autenticação básica (herdada).

  3. 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.

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 para uma account da AWS diferente daquela usada para seu workspace do Databricks, você deve adicionar uma política de bucket do S3. Você não adiciona a política de balde neste passo. Consulte o passo 3: Suporte opcional entre contas.

  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 do S3. Se não for especificado, os logs serão entregues à raiz do depósito. Este caminho deve corresponder ao argumento delivery_path_prefix quando você chama a API de entrega logs .

      {
        "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 AWS. Chame a API de configuração Criar credencial (POST /accounts/<account-id>/credentials). Essa solicitação estabelece confiança entreaccount e retorna um ID de referência para usar ao 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/*"
        ]
      }
      

Etapa 4: chame a API de entrega de registros

Para configurar a entrega de logs, chame a API de configuração de entrega de logs (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 Esquema de registros de uso faturável (legado).

  • 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

As APIs de entregalogs possuem 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 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"
}