交付和访问计费使用日志

预览

这个特性是在公共预览

作为一个砖帐户所有者或账户管理,您可以配置日常交付计费使用CSV文件格式的日志一个AWS S3存储桶,在那里你可以使可用的数据使用情况分析。砖为每个工作空间提供一个单独的CSV文件在您的帐户。这个CSV文件包含历史数据对工作空间的集群使用砖单位(DBUs),由集群ID,可分类的账单SKU,集群的创造者,集群标签,等等。每个CSV文件列的描述,请参阅CSV文件模式

使用一个API下载计费使用日志没有配置日志交付,明白了使用帐户API下载计费使用日志

如果你的帐户在E2版本的平台上,账户所有者和账户管理员可以查看使用在图或表的形式bob体育客户端下载对E2在账户控制台中使用页面。这个页面还包括DBUs使用图表显示账户使用,按工作负载类型分组,并允许您直接下载使用CSV格式的数据。

请注意

所有新砖帐户和大多数现有的帐户现在E2。如果你不确定该帐户类型,请联系您的砖的代表。

如果你的帐号在另一个版本的平台,账户拥有者可以查看使用的bob体育客户端下载遗产账户控制台选项卡的使用概况

你可以提供日志一个AWS帐户以外的其他帐户用于创建日志交付我的角色。这允许灵活性,例如从多个AWS帐户设置工作区提供同样的S3 bucket。这个选项需要配置一个S3 bucket政策,引用一个cross-account我的角色。指令和策略是本文中提供的模板。

账户所有者和账户管理访问日志取决于你如何设置S3 bucket。砖提供日志与AWS的内置S3 bucketBucketOwnerFullControl ACL罐头所以账户所有者和委派可以直接下载日志。支持桶所有权为新创建的对象,您必须设置你的桶S3对象所有权设置的值桶业主首选

重要的

如果你设置你的桶S3对象所有权设置为对象的作家新对象,如仍属于你的日志上传账户,这是默认情况下我指定角色创建和访问你的桶。这可能很难访问日志,因为你无法访问它们的AWS控制台或自动化工具,你用作为桶所有者身份验证。

砖建议你复习安全最佳实践为S3为指导保护桶中的数据免受不必要的访问。

配置选项

配置计费使用日志时交付,你有以下选项是否在您的帐户E2版本的平台bob体育客户端下载:

  • 共享相同的配置(日志交付S3 bucket和我角色)所有工作区帐户。这是默认的。

  • 使用单独的帐户配置为每个工作区。

  • 使用单独的配置不同组的工作空间,每个共享配置。

如果你创建工作区并没有使用账户API账户控制台E2账户每帐户,你可以只有一个工作区。因此,你必须为每个帐户创建独特的存储和证书配置对象,但是你可以重用一个S3 bucket或我这些配置对象之间的作用。

请注意

即使您使用账户API配置日志,您可以配置日志与任何工作区交付,包括工作空间没有使用帐户创建的API。

高级流

高级的计费使用日志交付:

  1. 配置存储:在AWS,创建一个新的AWS S3 bucket。使用砖API, API调用帐户创建一个存储配置对象,使用bucket名称。

    请注意

    提供日志一个AWS帐户以外的账户用于日志交付我创建的角色,您需要添加一个S3 bucket的政策。你不添加政策在这一步中,但在后面的。

  2. 配置的凭证:在AWS,创建合适的AWS我的角色。使用砖API, API调用帐户创建一个凭证配置对象,使用我的角色的攻击。角色策略可以指定一个路径前缀日志交付S3 bucket中。你可以选择来定义我的角色包括多个路径前缀如果你想记录交付配置不同的工作区分享S3 bucket,但使用不同的路径前缀。

  3. 可选cross-account支持提供日志的AWS帐户以外的帐户我的角色创建日志交付时,添加一个S3 bucket的政策。这个策略引用id cross-account我您在前面步骤中创建的角色。

  4. 调用日志API:调用API来创建一个日志传送配置,使用凭证和存储配置对象从以前的步骤。这个步骤允许您指定如果你想把日志传送配置整个账户(当前和未来的工作空间)或一组特定的工作区。

  5. 访问CSV文件进行分析:交货地点< bucket名> / <前缀> / billable-usage / csv /,在那里<前缀>是可选的传递路径前缀的名字在日志传送配置设置。文件命名workspaceId = < workspace-id > -usageMonth = <月> . csv。文件由覆盖日常交付月的CSV文件为每个工作区。你可以将这些数据导入数据砖进行分析。还有一个样品的笔记本,你可以使用它来运行使用仪表板分析基于这些CSV文件。看到分析使用数据在数据砖

重要的

日志的数量有一个限制交付配置,您可以创建一个帐户。您可以创建最多两个启用配置使用帐户级别(没有空间滤波器)和两个配置为每一个特定的工作区(启用workspaceId可能出现在工作区中两个配置的过滤器)。你不能删除日志传送配置,但是你可以禁用它。你可以重新启用禁用配置,但请求失败,如果违反了先前描述的限制。

需求

  • 账户所有者(或帐户管理,如果你在一个E2帐户)的电子邮件地址和密码进行身份验证的api。

    电子邮件地址和密码都是区分大小写的。

  • 帐户ID。

    账户的E2版本的平台,让您的帐户ID的用户配置文件下拉bob体育客户端下载账户控制台。non-E2账户,您的账户ID从账户控制台使用选项卡概述。联系你的砖代表如果你不能找到你的帐户ID。

api如何验证

本文中描述的api上发表accounts.cloud.www.neidfyre.com所有AWS基础端点区域部署。

使用下面的基URL API请求:https://accounts.cloud.www.neidfyre.com/api/2.0/

该REST API需要HTTP基本身份验证,包括设置HTTP头授权。在这篇文章中,用户名是指你的帐户所有者(或账户管理,如果你是在一个E2帐户)的电子邮件地址。电子邮件地址是区分大小写的。有几种方法可以为工具,如旋度提供您的凭据。

  • 通过用户名和帐号密码分别在每个请求的头<用户名>:<密码>语法。

    例如:

    curl - x - u得到<用户名>:<密码>- h“application / json内容类型:\“https://accounts.cloud.www.neidfyre.com/api/2.0/accounts/ <帐户id > / <端点>”
  • base64编码应用到您的<用户名>:<密码>字符串并提供直接的HTTP头:

    curl - x - h得到“application / json内容类型:\- h“基本授权:< base64-username-pw >”“https://accounts.cloud.www.neidfyre.com/api/2.0/accounts/ <帐户id > / <端点>”
  • 创建一个. netrc文件,,登录,密码属性:

    机器accounts.cloud.www.neidfyre.com登录<用户名>密码<密码>

    来调用. netrc文件,使用- n在你的旋度命令:

    curl - n - x得到“https://accounts.cloud.www.neidfyre.com/api/2.0/accounts/ <帐户id > /工作区”

    本文的示例使用这种身份验证方式。

完整的API参考,请参阅账户API 2.0

步骤1:配置存储

砖提供计费使用数据的S3 bucket您的帐户。您可以配置多个工作区使用一个S3 bucket,或者您可以定义不同的工作区(或工作区组)使用不同的桶。

这个过程描述了如何设置一个配置对象与一个共同的账户配置一个或多个工作区。使用不同的存储位置不同的工作区,对每个工作区重复本文中的程序或一组工作区。

  1. 创建S3 bucket,下面的指令AWS存储配置

    重要的

    提供日志另一个AWS帐户用于砖工作区,您必须添加一个S3 bucket的政策。你不添加桶政策在这一步。看到步骤3:可选cross-account支持

  2. 创建一个代表你的砖存储配置记录新的S3 bucket。指定您的S3 bucket通过调用创建新存储配置API(帖子/账户/ <帐户id > /存储配置)。

    通过以下几点:

    • storage_configuration_name——新的独特的存储配置名称。

    • root_bucket_info——一个包含一个JSON对象bucket_name字段包含您的S3 bucket名称。

    复制storage_configuration_id在响应中返回值。您将使用它来创建日志传送配置在后面的步骤。

    例如:

    curl - x - n后\“https://accounts.cloud.www.neidfyre.com/api/2.0/accounts/ < databricks-account-id > /存储配置”\- d”{:“storage_configuration_name databricks-workspace-storageconf-v1”," root_bucket_info ": {:“bucket_name my-company-example-bucket”}}'

    回应:

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

步骤2:配置凭证

这个过程描述了如何设置一个配置对象与一个共同的账户配置一个或多个工作区。为不同的工作区使用不同的凭证,对每个工作区重复本文中的程序或一组工作区。

请注意

使用不同的S3 bucket名称,您需要创建单独的我的角色。

  1. 登录你的AWS控制台作为用户与管理员权限和去服务。

  2. 单击角色在侧边栏选项卡。

  3. 点击创建角色

    1. 选择类型的信任的实体,点击AWS服务

    2. 常见用例,点击EC2

    3. 单击下一个:权限按钮。

    4. 单击下一个:标签按钮。

    5. 单击下一个:审查按钮。

    6. 角色名字段中,输入角色名称。

      角色名
    7. 点击创建角色。角色的列表显示。

  4. 在角色列表中,点击创建的角色。

  5. 添加一个内嵌的政策。

    1. 的权限选项卡上,单击添加内嵌策略

      内联政策
    2. 在策略编辑器中,单击JSON选项卡。

      JSON编辑器
    3. 复制这个访问政策和修改它。替换以下值的政策用您自己的配置值:

      • < s3-bucket-name >:你的桶的名字AWS S3 bucket。

      • < s3-bucket-path-prefix >(可选):交货地点的路径在S3 bucket。如果未指定的,日志送到桶的根源。这条路必须匹配delivery_path_prefix争论时调用日志API

      {“版本”:“2012-10-17”,“声明”:【{“效应”:“允许”,“行动”:【“s3: GetBucketLocation”),“资源”:【“攻击:aws: s3::: < s3-bucket-name >”]},{“效应”:“允许”,“行动”:【“s3: propertynames”,“s3: GetObject”,“s3: DeleteObject”,“s3: PutObjectAcl”,“s3: AbortMultipartUpload”),“资源”:【“攻击:aws: s3::: < s3-bucket-name > / < s3-bucket-path-prefix > /”,“攻击:aws: s3::: < s3-bucket-name > / < s3-bucket-path-prefix > / *”]},{“效应”:“允许”,“行动”:【“s3: ListBucket”,“s3: ListMultipartUploadParts”,“s3: ListBucketMultipartUploads”),“资源”:“攻击:aws: s3::: < s3-bucket-name >”,“条件”:{“StringLike”:{“s3:前缀”:【“< s3-bucket-path-prefix >”,“< s3-bucket-path-prefix > / *”]}}}]}

      您可以自定义策略使用的路径前缀:

      • 如果你不想使用桶路径前缀,删除< s3-bucket-path-prefix > /(包括最终削减)的政策似乎每次。

      • 如果你想要记录交付配置不同的工作区分享S3 bucket,但使用不同的路径前缀,您可以定义我的角色包括多个路径前缀。有两个独立的部分的政策参考< s3-bucket-path-prefix >。在每种情况下,复制两个相邻行引用路径前缀。重复每一对线为每一个新路径前缀,例如:

      {“资源”:【“攻击:aws: s3::: < mybucketname > /现场小组/”,“攻击:aws: s3::: < mybucketname > /现场小组/ *”,“攻击:aws: s3::: < mybucketname > /财务团队/”,“攻击:aws: s3::: < mybucketname > /财务团队/ *”]}
    4. 点击审查政策

    5. 的名字字段中,输入一个政策的名字。

    6. 点击创建政策

    7. 如果你使用服务控制策略拒绝某些行为在AWS帐户级别,确保sts: AssumeRole是白名单数据砖可以假设cross-account角色。

  6. 在角色总结页面,点击信任关系选项卡。

  7. 这种访问政策粘贴到编辑器和策略中以下值替换为您自己的配置值:

    < databricks-account-id >:你的砖帐户ID。

    {“版本”:“2012-10-17”,“声明”:【{“效应”:“允许”,“校长”:{“AWS”:“攻击:aws:我::414351767826:角色/ SaasUsageDeliveryRole-prod-IAMRole-3PLHICCRR1TK”},“行动”:“sts: AssumeRole”,“条件”:{“StringEquals”:{“sts: ExternalId”:【“< databricks-account-id >”]}}}]}
  8. 在总结作用,复制的角色是并将其保存为以后的步骤。

    的角色是
  9. 为你创建一个砖凭证的配置ID AWS的角色。调用创建证书配置API(帖子/账户/ <帐户id > /凭证)。这个请求建立cross-account信任和返回一个引用ID来使用,当你创建一个新的工作区。

    取代<帐户id >你的砖帐户ID。请求主体:

    • credentials_name在你的账户名称是独一无二的。

    • aws_credentials一个对象,该对象包含一个sts_role财产。该对象必须指定role_arn您已经创建了角色。

    身体将包括的响应credentials_id领域,砖凭证的配置ID,您需要创建一个新的工作区。复制这一领域,因此您可以使用它来创建日志传送配置在后面的步骤。

    例如:

    curl - x - n后\“https://accounts.cloud.www.neidfyre.com/api/2.0/accounts/ < databricks-account-id > /凭证”\- d”{:“credentials_name databricks-credentials-v1”," aws_credentials ": {" sts_role ": {:“role_arn攻击:aws:我::< aws-account-id >: / my-company-example-role”角色}}}'

    示例响应:

    {“credentials_id”:“< databricks-credentials-id >”,“account_id”:“< databricks-account-id >”,“aws_credentials”:{“sts_role”:{“role_arn”:“攻击:aws:我::< aws-account-id >: / my-company-example-role”角色,“external_id”:“< databricks-account-id >”}},“credentials_name”:“databricks-credentials-v1”,“creation_time”:1579753556257}

    复制credentials_id场的响应,供以后使用。

步骤3:可选cross-account支持

如果你的S3 bucket是相同的AWS帐户用于日志交付我角色,跳过这个步骤。

提供日志一个AWS帐户以外的账户用于日志交付我创建的角色,添加如下所示的S3 bucket政策。这个策略引用id cross-account我您在前面步骤中创建的角色。

  1. 在AWS控制台中,S3服务。

  2. 单击桶的名字。

  3. 单击权限选项卡。

  4. 单击桶的政策按钮。

    桶政策按钮
  5. 复制和修改这个桶的政策。

    取代< s3-bucket-name >S3 bucket名称。取代< customer-iam-role-id >与你的角色ID创建我的角色。取代< s3-bucket-path-prefix >与你想要桶路径前缀。看到后指出政策样本信息自定义路径前缀。

    {“版本”:“2012-10-17”,“声明”:({“效应”:“允许”,“校长”:{“AWS”:(“攻击:aws:我::< customer-iam-role-id >”]},“行动”:“s3: GetBucketLocation”,“资源”:“攻击:aws: s3::: < s3-bucket-name >”},{“效应”:“允许”,“校长”:{“AWS”:“攻击:aws:我::< customer-iam-role-id >”},“行动”:(“s3: propertynames”,“s3: GetObject”,“s3: DeleteObject”,“s3: PutObjectAcl”,“s3: AbortMultipartUpload”,“s3: ListMultipartUploadParts”),“资源”:(“攻击:aws: s3::: < s3-bucket-name > / < s3-bucket-path-prefix > /”,“攻击:aws: s3::: < s3-bucket-name > / < s3-bucket-path-prefix > / *”]},{“效应”:“允许”,“校长”:{“AWS”:“攻击:aws:我::< customer-iam-role-id >”},“行动”:“s3: ListBucket”,“资源”:“攻击:aws: s3::: < s3-bucket-name >”,“条件”:{“StringLike”:{“s3:前缀”:(“< s3-bucket-path-prefix >”,“< s3-bucket-path-prefix > / *”]}}}]}

    您可以自定义策略使用的路径前缀:

    • 如果你不想使用桶路径前缀,删除< s3-bucket-path-prefix > /(包括最终削减)的政策似乎每次。

    • 如果你想要记录交付配置共享相同的S3 bucket多个工作区,但使用不同的路径前缀,您可以定义我的角色包括多个路径前缀。两部分的政策参考< s3-bucket-path-prefix >。在每一个地方,复制两个相邻行引用路径前缀。重复每一对线为每个新路径前缀。例如:

      {“资源”:【“攻击:aws: s3::: < mybucketname > /现场小组/”,“攻击:aws: s3::: < mybucketname > /现场小组/ *”,“攻击:aws: s3::: < mybucketname > /财务团队/”,“攻击:aws: s3::: < mybucketname > /财务团队/ *”]}

第四步:调用日志API

配置日志交付,调用日志传送配置API(帖子/账户/ <帐户id > /日志交付)。

你需要以下值复制在前面的步骤:

  • credentials_id:你的砖凭据的配置ID,这代表你cross-account凭证作用。

  • storage_configuration_id:你的砖存储配置ID,代表您的根S3 bucket。

还设置以下字段:

  • log_type:总是设置为BILLABLE_USAGE

  • output_format:总是设置为CSV。CSV文件的格式的详细信息,请参见分析计费使用日志数据

  • delivery_path_prefix(可选):将路径前缀。这必须匹配路径前缀用于你的角色的政策。

  • workspace_ids_filter(可选):默认情况下,这个日志配置适用于所有工作区与您的帐户相关ID。对于某些类型的部署只有一个工作区/帐户ID字段是不必要的。如果你的帐户创建最初的工作区创建帐户API,您可能有多个工作区与您的帐户相关ID。您可以选择设置这个字段的数组,这个配置适用于工作空间ID。如果你计划使用不同的日志交付配置不同的工作区,显式地设置这个而不是留下空白。如果你离开这个空白和您的帐户ID关联与额外的工作区,在未来这个配置也适用于新工作区。一个工作区可能应用于多个日志传送配置,在这种情况下,日志写入多个位置。

    重要的

    日志的数量有一个限制交付配置,您可以创建一个帐户。您可以创建最多两个启用配置使用帐户级别(没有空间滤波器)和两个配置为每一个特定的工作区(启用workspaceId可能出现在工作区中两个配置的过滤器)。你不能删除日志传送配置,但是你可以禁用它。你可以重新启用禁用配置,但请求失败,如果违反了先前描述的限制。

  • delivery_start_time(可选)的月、年日志开始交付。默认为当前月份。格式是文本YYYY-MM格式。您可以输入任何从2019 - 03月和年。

例如:

curl - x - n后\“https://accounts.cloud.www.neidfyre.com/api/2.0/accounts/ < databricks-account-id > /日志交付”\- d”{" log_delivery_configuration ": {:“log_type BILLABLE_USAGE”,:“config_name计费使用配置”,:“output_format CSV”,“credentials_id”:“< databricks-credentials-id >”,“storage_configuration_id”:“< databricks-storage-config-id >”,“delivery_path_prefix”:“使用数据”,“delivery_start_time”:“2020 - 06年”,“workspace_ids_filter”:(6383650456894062,4102272838062927]}}'

示例响应:

{“log_delivery_configuration”:{“config_id”:“< config-id >”,“config_name”:“计费使用配置”,“log_type”:“BILLABLE_USAGE”,“output_format”:“CSV”,“account_id”:“<帐户id >”,“credentials_id”:“< databricks-credentials-id >”,“storage_configuration_id”:“< databricks-storage-config-id >”,“workspace_ids_filter”:(6383650456894062,4102272838062927),“delivery_path_prefix”:“使用数据”,“delivery_start_time”:“2020 - 06年”,“状态”:“启用”,“creation_time”:1591638409000,“update_time”:1593108904000,“log_delivery_status”:{“状态”:“创建”,“消息”:“日志传送配置成功创建了。地位将被更新后首次交付尝试。”}}}

附加功能的日志api

日志api交付有附加功能。有关详细信息,请参阅API参考文档。

额外的操作包括:

日志传送配置状态可以在API中找到响应的log_delivery_status对象。与log_delivery_status,您可以检查状态(成功或失败)和最后一次尝试和成功交付。

重要的

日志的数量有一个限制交付配置,您可以创建一个帐户。您可以创建最多两个启用配置使用帐户级别(没有空间滤波器)和两个配置为每一个特定的工作区(启用workspaceId可能出现在工作区中两个配置的过滤器)。你不能删除日志传送配置,但是你可以禁用它。你可以重新启用禁用配置,但请求失败,如果违反了先前描述的限制。

第五步:访问日志文件进行分析

日志文件送达< bucket名> / <前缀> / billable-usage / csv /,在那里<前缀>是可选的传递路径前缀的名字在日志传送配置设置。文件命名workspaceId = < workspace-id > -usageMonth = <月> . csv。文件由覆盖日常交付月的CSV文件为每个工作区。

CSV模式,看到CSV文件模式

如何分析这些文件信息使用砖,明白了分析使用数据在数据砖

自动配置使用起程拓殖

您可以使用砖起程拓殖的提供者配置使用日志发送自动的帮助下databricks_mws_log_delivery资源。这是一个端到端和审计日志交付使用的例子:

变量={描述“databricks_account_id帐户ID。你可以让你的账户ID的左下角账户控制台。看到https://accounts.cloud.www.neidfyre.com”}资源”aws_s3_bucket logdelivery”{桶= " $ {var。前缀}-logdelivery”acl = "私人"版本{启用= false} force_destroy = = true标签合并(var。标签,{Name = " $ {var。前缀}-logdelivery "})}资源”aws_s3_bucket_public_access_block logdelivery”{桶= aws_s3_bucket.logdelivery。id ignore_public_acls = true}数据“databricks_aws_assume_role_policy”“logdelivery”{external_id = var.databricks_account_id for_log_delivery = true}资源“aws_iam_role logdelivery“{name = " $ {var。前缀}-logdelivery”描述= " ($ {var.prefix})“assume_role_policy = data.databricks_aws_assume_role_policy.logdelivery UsageDelivery作用。json数据标签= var.tags}“databricks_aws_bucket_policy”“logdelivery”{full_access_role = aws_iam_role.logdelivery。在攻击桶= aws_s3_bucket.logdelivery。桶}资源“aws_s3_bucket_policy”“logdelivery”{桶= aws_s3_bucket.logdelivery。id = data.databricks_aws_bucket_policy.logdelivery政策。json资源“databricks_mws_credentials”“log_writer”} {account_id = var.databricks_account_id credentials_name =“交付使用”role_arn = aws_iam_role.logdelivery。在攻击}资源“databricks_mws_storage_configurations”“log_bucket”{account_id = var.databricks_account_id storage_configuration_name =“使用日志”bucket_name = aws_s3_bucket.logdelivery。桶}资源“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_iddelivery_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" }