你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Monitor 日志定价详细信息

大多数 Azure Monitor 实现的最大费用通常是在 Log Analytics 工作区中引入和保留数据。 Azure Monitor 中的一些功能没有直接成本,但会将成本附加到收集的工作区数据上。 本文介绍如何计算 Log Analytics 工作区和 Application Insights 资源的数据费用,以及影响成本的不同配置选项。

定价模型

Log Analytics 的默认定价采用即用即付模型,该模型基于数据引入量和数据保留。 每个 Log Analytics 工作区作为独立服务计费,并在 Azure 订阅的账单中产生相应费用。 Log Analytics 的定价是按区域设置的。 数据引入量可能相当大,具体取决于以下因素:

  • 已启用的管理解决方案集及其配置
  • 受监视资源的数量和类型
  • 从每个受监视资源收集的数据类型

数据大小计算

数据量是以 GB(10^9 字节)为单位存储的数据大小来度量的。 单个记录的数据大小根据该记录的列(存储在 Log Analytics 工作区中)的字符串表示形式进行计算,无论数据是从代理发送的还是在引入过程中添加的。 这包括由自定义日志 API引入时转换自定义字段添加的任何自定义列,这些列在收集数据时添加并存储在工作区中。

注意

该可计费的数据量计算远小于整个传入 JSON 打包事件的大小。 在所有事件类型中,计费大小平均小于传入数据大小约 25%。 对于小型事件,最多可以达到 50%。 在估算成本并与其他定价模型进行比较时,必须了解计费数据大小的计算。

排除的列

计算记录大小时排除所有表共有的以下标准列。 计算记录大小时包含 Log Analytics 中存储的所有其他列。

  • _ResourceId
  • _SubscriptionId
  • _ItemId
  • _IsBillable
  • _BilledSize
  • Type

排除的表

有些表完全不收取数据引入费用,其中包括 AzureActivityHeartbeatUsageOperation。 这始终由 _IsBillable 列指示,该列指示记录是否已从数据引入计费中排除。

其他解决方案和服务的费用

某些解决方案具有更多关于免费数据引入的特定策略。 例如,Azure Migrate 在服务器评估的前 180 天免费提供依赖项可视化数据。 Microsoft Defender for CloudMicrosoft Sentinel配置管理等服务有其自己的定价模型。

有关任何独特的计费计算,请参阅不同服务和解决方案的文档。

承诺层级

除了即用即付模型外,Log Analytics 还具有承诺层级,与即用即付价格相比,使你能够节省多达 30% 的成本。 采用承诺层级定价时,你能够以低于即用即付定价的价格,为工作区购买起始量为 100 GB/天的数据引入量。 对于超出承诺级别的任何使用量(超额),将按当前承诺层级提供的每 GB 价格计费。 从选择承诺层起,承诺层有 31 天的承诺期。

  • 在承诺期,可以更改为更高级别的承诺层级(这将重启 31 天的承诺期),但在承诺期结束之前,无法返回到即用即付或更低的承诺层级。
  • 在承诺期结束时,工作区将保留所选的承诺层,并且工作区随时都可以移动到即用即付或不同的承诺层。

承诺层级每日按工作区进行计费。 如果工作区包含在专用群集中,则对该群集计费(见下文)。 有关承诺层级及其价格的详细列表,请参阅 Azure Monitor 定价

提示

每个 Log Analytics 工作区的“使用情况和预估成本”菜单项显示了每个承诺级别的每月预估费用。 应定期查看此信息,以确定是否可以通过转移到另一层级来减少费用。 有关此视图的信息,请参阅使用情况和预估成本

专用群集

Azure Monitor 日志专用群集是单个托管 Azure 数据资源管理器群集中的工作区集合。 专用群集支持客户管理的密钥等高级功能,并使用与工作区相同的承诺层级定价模型,不过,它们必须具有至少 500 GB/天的承诺级别。 对于超出承诺级别的任何使用量(超额),将按当前承诺层级提供的每 GB 价格计费。 群集没有即用即付选项。

在提高承诺级别后,群集承诺层级有 31 天的承诺期。 在承诺期,无法降低承诺层级的级别,但可以随时提高。 当工作区与群集关联时,将使用配置的承诺层级级别在群集级别进行对这些工作区的数据引入计费。

创建群集时,可指定两种群集计费模式。

  • 群集(默认):引入数据的计费在群集级别完成。 每个与群集关联的工作区中的引入数据数量将进行聚合,以计算该群集的每日帐单。 在针对群集中所有工作区的聚合数据进行聚合之前,系统将在工作区级别应用基于 Microsoft Defender for Cloud 的按节点分配。

  • 工作区:群集的承诺层级成本按比例归属于群集中的工作区,按每个工作区的数据引入量计算(在计算了 Microsoft Defender for Cloud 的每个工作区的每个节点的分配之后)。

    如果群集在一天中引入的总数据量少于承诺层级,将对每个工作区的引入数据按每 GB 有效承诺层级费率进行计费(针对一部分承诺层级计费)。 承诺层级的未使用部分则按群集资源计费。

    如果某一天引入到群集中的总数据量高于承诺层级,则每个工作区将基于其当天的引入数据比例按承诺层级的比例进行计费,且每个工作区都将按高于承诺层级的引入数据比例进行计费。 如果某一天引入到工作区中的总数据量超出承诺层级,则不会计费到群集资源。

在群集计费选项中,数据保留针对每个工作区计费。 在创建群集时会开始群集计费,无论工作区是否已关联到群集。

将工作区与群集关联时,定价层将更改为群集,将根据群集的承诺层级对引入的数据计费。 与群集关联的工作区不再有自身的定价层。 可随时取消工作区与群集的关联,而定价层将更改为按 GB。

如果关联的工作区使用旧的每节点定价层,则它将根据针对群集的承诺层级引入的数据来计费,而不再是按节点计费。 将继续应用 Microsoft Defender for Cloud 的每个节点的数据分配。

有关创建专用群集并指定其计费类型的详细信息,请参阅创建专用群集

基本日志

你可以将 Log Analytics 工作区中的某些表配置为使用基本日志。 这些表中的数据的引入费用大大降低,保留期也有限。 不过,对这些表进行搜索需要付费。 基本日志适用于大量详细日志,如调试、故障排除和审核,但不适用于分析和警报。

对基本日志进行搜索的费用基于执行搜索时扫描的数据 GB。

有关基本日志的详细信息,包括如何配置它们和查询它们的数据,请参阅在 Azure Monitor 中配置基本日志

日志数据保留和存档

除了数据引入之外,每个 Log Analytics 工作区中的数据保留都会产生费用。 你可以为整个工作区或每个表设置保留期。 在此时间段后,数据将被删除或存档。 存档日志的保留费用有所降低,但对其进行搜索会产生费用。 使用存档日志可降低出于合规性或偶尔调查的目的而必须存储的数据的成本。

有关数据保留和存档的详细信息,包括如何配置这些设置和访问存档数据,请参阅在 Azure Monitor 日志中配置数据保留和存档策略

搜索作业

对存档日志进行搜索时使用搜索作业。 搜索作业是异步查询,用于将记录提取到工作区内的新搜索表中,以便进一步分析。 搜索作业按每天为执行搜索而访问的扫描数据 GB 数计费。

日志数据还原

对于需要使用完整的分析查询功能集中查询旧日志或存档日志的情况,数据还原功能是一个强大的工具。 还原操作使表中数据的特定时间范围在热缓存中可用于高性能查询。 完成后,可以稍后关闭数据。 日志数据还原按还原的数据量和还原保持活动状态的时间计费。 任何数据还原的最小计费值为 2 TB 和 12 小时。 还原超过 2 TB 和/或持续时间超过 12 小时的数据按比例计费。

日志数据导出

使用 Log Analytics 工作区中的数据导出功能,可以在数据到达 Azure Monitor 管道时,将工作区中每个选定表中的数据持续导出到 Azure 存储帐户或 Azure 事件中心。 使用数据导出的费用取决于导出的数据量。 导出的数据大小是导出的 JSON 格式数据中的字节数。

Application insights 计费

由于基于工作区的 Application Insights 资源将其数据存储在 Log Analytics 工作区中,因此数据引入和保留的计费由 Application Insights 数据所在的工作区完成。 这样,你除了能使用“即用即付”定价模型之外,还能使用 Log Analytics 定价模型的所有选项,其中包括承诺层级

经典 Application Insights 资源的数据引入和数据保留遵循与基于工作区的资源相同的即用即付定价,但它们无法使用承诺层级。

进行 ping 测试和多步测试时发送的遥测数据的数据用量计费方式与应用发送的其他遥测数据相同。 使用 Web 测试以及启用自定义指标维度警报时,仍通过 Application Insights 来报告。 使用实时指标流时,不会根据数据量收费。

有关 Application Insights 早期采用者可用的旧层的详细信息,请参阅 Application Insights 旧企业(每节点)定价层

使用 Microsoft Sentinel 的工作区

在 Log Analytics 工作区中启用 Microsoft Sentinel 后,除了 Log Analytics 费用外,在该工作区中收集的所有数据还需要支付 Sentinel 费用。 因此,通常会将安全数据和操作数据分开放在不同的工作区,这样操作数据就不会产生 Sentinel 费用。 不过,在某些情况下,合并这些数据实际上可以节省成本。 通常,当你没有收集足够多的安全数据和操作数据,导致其均无法达到承诺层级,但合并后的数据足以达到承诺层级时,就可以这样做。 有关详细信息和示例成本计算,请参阅设计 Microsoft Sentinel 工作区体系结构中的“合并 SOC 数据和非 SOC 数据”。

使用 Microsoft Defender for Cloud 的工作区

Microsoft Defender for Servers(Defender for Cloud 的一部分)按受监视服务的数量计费,并提供 500 MB/服务器/天的数据分配,适用于以下一部分安全数据类型

受监视服务器的数目按小时粒度计算。 每个受监视服务器的每日数据分配贡献在工作区级别聚合。 如果工作区位于旧的每节点定价层,则将合并 Microsoft Defender for Cloud 和 Log Analytics 分配,并共用于所有可计费的引入数据。

旧版定价层

在 2018 年 4 月 2 日之前已包含 Log Analytics 工作区或 Application Insights 资源的订阅,或者与 2019 年 2 月 1 日之前开始并仍处于活动状态的企业协议关联的订阅,将继续有权使用以下旧版定价层:

  • 独立(按 GB)
  • 按节点(OMS)

从 2022 年 7 月 1 日起,将进一步限制对旧版免费试用版定价层的访问(如下所示。)

免费试用版定价层

“免费试用版”定价层中的工作区将每日数据引入限制为 500 MB(Microsoft Defender for Cloud 收集的安全数据类型除外),数据保留期限制为 7 天。 “免费试用”定价层仅用于评估目的。 没有为免费层提供 SLA。

注意

仅在 2022 年 7 月 1 日之前,可以在旧版免费试用版定价层中创建新工作区,或将现有工作区移入。

独立定价层

“独立”定价层上的使用量按引入数据量计费。 该使用情况在 Log Analytics 服务中进行报告,计量名为“分析的数据”。 独立定价层中的工作区具有用户可配置的 30 至 730 天的保留期。 独立定价层中的工作区不支持使用基本日志

按节点定价层

“按节点”定价层按小时粒度对每个受监视的 VM(节点)收费。 对于每个受监视的节点,每日会向工作区分配 500 MB 未计费的数据。 此分配按小时粒度计算,并且每天在工作区级别进行汇总。 超出每日数据分配聚合的引入数据在数据超额时按 GB 计费。 如果工作区位于“按节点”定价层,则该服务在账单上为“Insight and Analytics”,用于提供 Log Analytics 使用情况。 按节点定价层中的工作区具有用户可配置的 30 至 730 天的保留期。 按节点定价层中的工作区不支持使用基本日志。 使用情况按三个计量进行报告:

  • 节点:这是以节点月为单位的受监视节点 (VM) 数量的使用情况。
  • 每个节点的数据超额:这是超出聚合数据分配的引入数据 GB 数。
  • 每个节点包含的数据:这是聚合数据分配所涵盖的引入数据量。 当工作区位于任意定价层时,都会使用此仪表来显示 Microsoft Defender for Cloud 涵盖的数据量。

提示

如果工作区可访问“按节点”定价层,但你想知道在即用即付层中是否成本更低,则可以使用以下查询来获取建议。

标准和高级定价层

2016 年 4 月之前创建的工作区可以继续使用“标准”和“高级”定价层(分别有 30 天和 365 天的固定数据保留期)。 无法在“标准”或“高级”定价层中创建新的工作区,并且如果将工作区移出这些层,则无法将其移回 。 这些定价层中的工作区不支持使用基本日志。 Azure 账单上针对这些旧层的数据引入计量称为“分析的数据”。

使用旧版定价层的 Microsoft Defender for Cloud

下面介绍了 Log Analytics 旧层和 Microsoft Defender for Cloud 的使用量计费方式之间的一些注意事项。

  • 如果工作区位于旧版标准或高级层中,则仅针对 Log Analytics 数据引入而不是按节点对 Microsoft Defender for Cloud 进行计费。
  • 如果工作区位于旧版按节点层,将使用当前 Microsoft Defender for Cloud 基于节点的定价模型对 Microsoft Defender for Cloud 进行计费。
  • 在其他定价层(包括承诺层),如果 Microsoft Defender for Cloud 在 2017 年 6 月 19 日之前便已启用,则将仅根据 Log Analytics 数据引入情况对 Microsoft Defender for Cloud 进行计费。 否则,将使用当前 Microsoft Defender for Cloud 基于节点的定价模型对 Microsoft Defender for Cloud 进行计费。

有关定价层限制的更多详细信息,请参阅 Azure 订阅和服务限制、配额和约束

旧版定价层均没有基于区域的定价。

注意

若要使用通过购买用于 System Center 的 OMS E1 套件、OMS E2 套件或 OMS 附加产品所获得的权利,请选择 Log Analytics 的“按节点”定价层。

评估旧版按节点定价层

对于可访问旧版“按节点”定价层的工作区,通常很难确定是留在该层还是当前的“即用即付”或“承诺层级”更好。 这涉及了解按节点定价层中每个受监视节点的固定成本与其包括的每天每个节点 500 MB 数据分配之间的权衡,以及只需支付即用即付(按 GB)层中的引入数据的成本。

可以使用以下查询根据工作区的使用情况模式提出最佳定价层建议。 此查询将查看过去 7 天内受监视的节点和引入到工作区的数据,并且对每一天,它都会评估哪个定价层为最佳。 若要使用查询,需要指定:

  • 通过将 workspaceHasSecurityCenter 设置为 true 或 false 来指定工作区是否使用 Microsoft Defender for Cloud。
  • 更新价格(如果采用特定的折扣)。
  • 通过设置 daysToEvaluate 指定要回看和分析的天数。 如果查询尝试查看 7 天数据的时间过长,这就很有用。
// Set these parameters before running query
// For Pay-As-You-Go (per-GB) and commitment tier pricing details, see https://azure.microsoft.com/pricing/details/monitor/.
// You can see your per-node costs in your Azure usage and charge data. For more information, see https://docs.microsoft.com/en-us/azure/cost-management-billing/understand/download-azure-daily-usage.  
let PerNodePrice = 15.; // Monthly price per monitored node
let PerNodeOveragePrice = 2.30; // Price per GB for data overage in the Per Node pricing tier
let PerGBPrice = 2.30; // Enter the Pay-as-you-go price for your workspace's region (from https://azure.microsoft.com/pricing/details/monitor/)
let CommitmentTier100Price = 196.; // Enter your price for the 100 GB/day commitment tier
let CommitmentTier200Price = 368.; // Enter your price for the 200 GB/day commitment tier
let CommitmentTier300Price = 540.; // Enter your price for the 300 GB/day commitment tier
let CommitmentTier400Price = 704.; // Enter your price for the 400 GB/day commitment tier
let CommitmentTier500Price = 865.; // Enter your price for the 500 GB/day commitment tier
let CommitmentTier1000Price = 1700.; // Enter your price for the 1000 GB/day commitment tier
let CommitmentTier2000Price = 3320.; // Enter your price for the 2000 GB/day commitment tier
let CommitmentTier5000Price = 8050.; // Enter your price for the 5000 GB/day commitment tier
// ---------------------------------------
let SecurityDataTypes=dynamic(["SecurityAlert", "SecurityBaseline", "SecurityBaselineSummary", "SecurityDetection", "SecurityEvent", "WindowsFirewall", "MaliciousIPCommunication", "LinuxAuditLog", "SysmonEvent", "ProtectionStatus", "WindowsEvent", "Update", "UpdateSummary"]);
let StartDate = startofday(datetime_add("Day",-1*daysToEvaluate,now()));
let EndDate = startofday(now());
union * 
| where TimeGenerated >= StartDate and TimeGenerated < EndDate
| extend computerName = tolower(tostring(split(Computer, '.')[0]))
| where computerName != ""
| summarize nodesPerHour = dcount(computerName) by bin(TimeGenerated, 1h)  
| summarize nodesPerDay = sum(nodesPerHour)/24.  by day=bin(TimeGenerated, 1d)  
| join kind=leftouter (
    Heartbeat 
    | where TimeGenerated >= StartDate and TimeGenerated < EndDate
    | where Computer != ""
    | summarize ASCnodesPerHour = dcount(Computer) by bin(TimeGenerated, 1h) 
    | extend ASCnodesPerHour = iff(workspaceHasSecurityCenter, ASCnodesPerHour, 0)
    | summarize ASCnodesPerDay = sum(ASCnodesPerHour)/24.  by day=bin(TimeGenerated, 1d)   
) on day
| join (
    Usage 
    | where TimeGenerated >= StartDate and TimeGenerated < EndDate
    | where IsBillable == true
    | extend NonSecurityData = iff(DataType !in (SecurityDataTypes), Quantity, 0.)
    | extend SecurityData = iff(DataType in (SecurityDataTypes), Quantity, 0.)
    | summarize DataGB=sum(Quantity)/1000., NonSecurityDataGB=sum(NonSecurityData)/1000., SecurityDataGB=sum(SecurityData)/1000. by day=bin(StartTime, 1d)  
) on day
| extend AvgGbPerNode =  NonSecurityDataGB / nodesPerDay
| extend OverageGB = iff(workspaceHasSecurityCenter, 
             max_of(DataGB - 0.5*nodesPerDay - 0.5*ASCnodesPerDay, 0.), 
             max_of(DataGB - 0.5*nodesPerDay, 0.))
| extend PerNodeDailyCost = nodesPerDay * PerNodePrice / 31. + OverageGB * PerNodeOveragePrice
| extend billableGB = iff(workspaceHasSecurityCenter,
             (NonSecurityDataGB + max_of(SecurityDataGB - 0.5*ASCnodesPerDay, 0.)), DataGB )
| extend PerGBDailyCost = billableGB * PerGBPrice
| extend CommitmentTier100DailyCost = CommitmentTier100Price + max_of(billableGB - 100, 0.)* CommitmentTier100Price/100.
| extend CommitmentTier200DailyCost = CommitmentTier200Price + max_of(billableGB - 200, 0.)* CommitmentTier200Price/200.
| extend CommitmentTier300DailyCost = CommitmentTier300Price + max_of(billableGB - 300, 0.)* CommitmentTier300Price/300.
| extend CommitmentTier400DailyCost = CommitmentTier400Price + max_of(billableGB - 400, 0.)* CommitmentTier400Price/400.
| extend CommitmentTier500DailyCost = CommitmentTier500Price + max_of(billableGB - 500, 0.)* CommitmentTier500Price/500.
| extend CommitmentTier1000DailyCost = CommitmentTier1000Price + max_of(billableGB - 1000, 0.)* CommitmentTier1000Price/1000.
| extend CommitmentTier2000DailyCost = CommitmentTier2000Price + max_of(billableGB - 2000, 0.)* CommitmentTier2000Price/2000.
| extend CommitmentTier5000DailyCost = CommitmentTier5000Price + max_of(billableGB - 5000, 0.)* CommitmentTier5000Price/5000.
| extend MinCost = min_of(
    PerNodeDailyCost,PerGBDailyCost,CommitmentTier100DailyCost,CommitmentTier200DailyCost,
    CommitmentTier300DailyCost, CommitmentTier400DailyCost, CommitmentTier500DailyCost, CommitmentTier1000DailyCost, CommitmentTier2000DailyCost, CommitmentTier5000DailyCost)
| extend Recommendation = case(
    MinCost == PerNodeDailyCost, "Per node tier",
    MinCost == PerGBDailyCost, "Pay-as-you-go tier",
    MinCost == CommitmentTier100DailyCost, "Commitment tier (100 GB/day)",
    MinCost == CommitmentTier200DailyCost, "Commitment tier (200 GB/day)",
    MinCost == CommitmentTier300DailyCost, "Commitment tier (300 GB/day)",
    MinCost == CommitmentTier400DailyCost, "Commitment tier (400 GB/day)",
    MinCost == CommitmentTier500DailyCost, "Commitment tier (500 GB/day)",
    MinCost == CommitmentTier1000DailyCost, "Commitment tier (1000 GB/day)",
    MinCost == CommitmentTier2000DailyCost, "Commitment tier (2000 GB/day)",
    MinCost == CommitmentTier5000DailyCost, "Commitment tier (5000 GB/day)",
    "Error"
)
| project day, nodesPerDay, ASCnodesPerDay, NonSecurityDataGB, SecurityDataGB, OverageGB, AvgGbPerNode, PerGBDailyCost, PerNodeDailyCost, 
    CommitmentTier100DailyCost, CommitmentTier200DailyCost, CommitmentTier300DailyCost, CommitmentTier400DailyCost, CommitmentTier500DailyCost, CommitmentTier1000DailyCost, CommitmentTier2000DailyCost, CommitmentTier5000DailyCost, Recommendation 
| sort by day asc
//| project day, Recommendation // Comment this line to see details
| sort by day asc

此查询不是对如何计算使用情况的精确复制,而是在大多数情况下用于提供定价层建议。

注意

若要使用通过购买用于 System Center 的 OMS E1 套件、OMS E2 套件或 OMS 附加产品所获得的权利,请选择 Log Analytics 的“按节点”定价层。

后续步骤