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

Azure Monitor 中的 Log Analytics 工作区数据导出功能

使用 Log Analytics 工作区中的数据导出功能,可以连续导出工作区中所选表的数据。 数据到达 Azure Monitor 管道时,可以将其导出到 Azure 存储帐户或 Azure 事件中心。 本文提供了有关此功能的详细信息以及在工作区中配置数据导出的步骤。

概述

Log Analytics 中的数据在工作区中定义的保留期内可用。 这些数据用于 Azure Monitor 和 Azure 服务中提供的各种体验。 在下列情况下,你需要使用其他工具:

  • 符合防篡改保护的存储:数据一旦引入,便不可在 Log Analytics 中更改,但可以清除。 导出到使用不可变策略设置的存储帐户,以防止数据被篡改。
  • 与 Azure 服务和其他工具集成:在数据到达 Azure Monitor 并在其中进行处理时,导出到事件中心。
  • 审核和安全数据的长期保留:导出到工作区区域中的存储帐户。 或者,你可以使用任何 Azure 存储冗余选项(包括 GRS 和 GZRS)将数据复制到其他区域。

在 Log Analytics 工作区中配置数据导出规则后,规则中表的新数据会从 Azure Monitor 管道导出到存储帐户或事件中心。 数据导出流量位于 Azure 主干网络中,不会离开 Azure 网络。

显示数据导出流的示意图。

导出数据时没有使用筛选器。 例如,为 SecurityEvent 表配置数据导出规则时,发送到 SecurityEvent 表的所有数据将从配置时开始导出。 或者,可以先通过在工作区中配置转换(它们可应用于传入的数据)来筛选或修改导出的数据,然后再将其发送到 Log Analytics 工作区和导出目标。

其他导出选项

Log Analytics 工作区数据导出会持续导出发送到 Log Analytics 工作区的数据。 针对特定场景导出数据的其他选项包括:

  • 如果 Azure 资源已通过其诊断日志设置将日志发送到 Log Analytics 工作区,请考虑直接更新 Azure 资源的诊断设置,以添加新目标,而不是定期使用数据导出。 与数据导出相比,此方法的延迟较低,但不会发送历史数据。
  • 根据您使用 Log Analytics 查询 API 定义的日志查询,安排数据导出。 使用 Azure 数据工厂、Azure Functions 或 Azure 逻辑应用协调工作区中的查询并将数据导出到目标位置。 此方法类似于数据导出功能,但该方法可以通过使用筛选器和聚合从工作区导出历史数据。 此方法受日志查询限制的约束,不适合用于缩放。 有关详细信息,请参阅使用逻辑应用将数据从 Log Analytics 工作区导出到存储帐户
  • 使用 PowerShell 脚本在本地计算机上进行一次性导出。 有关详细信息,请参阅 Invoke-AzOperationalInsightsQueryExport

所需的权限

行动 所需的权限
创建或更新数据导出规则 对 Log Analytics 工作区的 Microsoft.OperationalInsights/workspaces/dataexports/write 权限,例如,Log Analytics 参与者内置角色所提供的权限
删除数据导出规则 对 Log Analytics 工作区的 Microsoft.OperationalInsights/workspaces/dataexports/delete 权限,例如,Log Analytics 参与者内置角色所提供的权限
导出到存储帐户 对存储帐户的 Microsoft.Storage/storageAccounts/blobServices/containers/write 权限,例如,存储帐户参与者内置角色所提供的权限
导出到事件中心 对事件中心的 Microsoft.EventHub/namespaces/eventhubs/writeMicrosoft.EventHub/namespaces/eventhubs/messages/writeMicrosoft.EventHub/namespaces/authorizationRules/listkeys/action 权限,例如,Azure 事件中心数据所有者内置角色所提供的权限
查询表中的日志 对 Log Analytics 工作区的 Microsoft.OperationalInsights/workspaces/query/<table>/read 权限,例如 Log Analytics 读取者内置角色所提供的权限
查询表中的日志(表操作) 对 Log Analytics 工作区的 Microsoft.OperationalInsights/workspaces/tables/query/read 权限,例如 Log Analytics 读取者内置角色所提供的权限

限制

  • 无法导出使用 HTTP 数据收集器 API 创建的自定义日志,包括 Log Analytics 代理使用的基于文本的日志。 可以导出使用数据收集规则创建的自定义日志,包括基于文本的日志。
  • 数据导出将逐渐支持更多表。 请参阅 “不支持的表 ”部分。
  • 每个工作区的最大活动规则数为 10,每个规则可以包含多个表。
  • 存储帐户在工作区规则中必须是唯一的。
  • 支持“分析”和“基本”表计划。 不支持辅助计划。
  • 目标必须与 Log Analytics 工作区位于同一区域。
  • 不支持导出到高级存储帐户。
  • 不支持导出到网络安全外围专用链接中的目标。

数据完整性

数据导出经过优化,可以将大量数据量移动到你的目的地。 如果目标的规模或可用性不足,重试过程可能会持续长达 12 小时,可能会导致导出记录的一小部分被复制。 遵循有关“存储帐户”和“事件中心”目标的建议,以提高可靠性。 如果目标在重试期限过后仍然不可用,则会丢弃数据。

有关目标限制和建议的警报的详细信息,请参阅创建或更新数据导出规则

定价模型

数据导出费用基于导出到目标(采用 JSON 格式的数据)的字节数,并以 GB(10^9 字节)为单位进行度量。 数据导出大小计算不能通过工作区查询完成,因为大小计算不包括 JSON 格式设置开销。 使用此示例 PowerShell 脚本中的方法 计算 Blob 容器的总计费大小。 导出到主权云目前不收取任何费用。 若要收费,将会提前发送通知。

有关详细信息,包括数据导出计费时间线,请参阅 Azure Monitor 定价。 数据导出在 2023 年 10 月初启用计费。

导出目标

在工作区中创建导出规则之前,必须存在数据导出目标位置。 目标可以位于不同的订阅。 使用 Azure Lighthouse,还可以将数据发送到另一个 Microsoft Entra 租户中的目标。

存储帐户

为避免因延迟或超出速率限制而导致的存储入口失败,请使用不存在其他非监控数据的现有存储帐户。 这有助于更好地控制对数据的访问并提高数据导出可靠性。

若要将数据发送到不可变存储帐户,请按照设置和管理 Azure Blob 存储的不可变性策略中所述为存储帐户设置不可变策略。 必须按照本文中的所有步骤操作,包括启用受保护的追加 blob 写入操作。

存储帐户无法为高级版,必须为 StorageV1 或更高版本,并且与工作区位于同一区域。 如果需要将数据复制到其他区域中的其他存储帐户,请使用任何 Azure 存储冗余选项,包括 GRS 和 GZRS。

数据将在到达 Azure Monitor 时发送到存储帐户并导出到位于工作区区域中的目标位置。 将为存储帐户中的每个表创建一个容器,其名称为 am- 后跟表名称。 例如,表 SecurityEvent 将发送到名为 am-SecurityEvent 的容器中。

Blob 存储在以下路径结构的 5 分钟文件夹中:WorkspaceResourceId=/subscriptions/subscription-id/resourcegroups/<resource-group>/providers/microsoft.operationalinsights/workspaces/<workspace>/y=<four-digit numeric year>/m=<two-digit numeric month>/d=<two-digit numeric day>/h=<two-digit 24-hour clock hour>/m=<two-digit 60-minute clock minute>/PT05M.json。 对 blob 的追加限制为 50-K 写入。 超过上限的 blob 将添加到文件夹中:PT05M_#.json*,其中 # 是增量 blob 计数。

注意

对 Blob 的追加基于“TimeGenerated”字段写入,并在接收源数据时发生。 延迟到达 Azure Monitor 或尝试在目标限制后重试的数据将根据其生成时间写入 Blob。

存储帐户中 Blob 的格式位于 JSON 行中,其中每个记录将由换行符分隔,JSON 记录之间没有外部记录数组和逗号。

显示 blob 中数据格式的屏幕截图。

事件中心

避免使用已包含非监控数据的事件集线器。 此最佳做法有助于防止由于延迟或超出速率限制而导致的入口故障。

数据将在到达 Azure Monitor 时发送到事件中心并导出到位于工作区区域中的目标位置。 通过提供规则中的不同 Event Hub name ,创建多个导出规则到同一事件中心命名空间。 未提供 Event Hub name 时,会为导出的表创建默认事件中心,其名称为 am- 后跟表的名称。 例如,表 SecurityEvent 将发送到名为 am-SecurityEvent 的事件中心中。

每个“基本”和“标准”命名空间层支持的事件中心数为 10 个。 如果向这些层导出的表格超过 10 个,则可在多个导出规则之间将表格拆分到不同的事件中心命名空间,或提供事件中心名称,并将所有表格导出到该事件中心。

注意

  • “基本”事件中心命名空间层具有限制。 它支持较低的事件大小,且无自动扩充选项,无法自动纵向扩展和增加吞吐量单位的数量。 由于工作区的数据量随着时间的推移而增加,导致必须缩放事件中心,因此请使用启用了自动扩充功能的“标准”层、“高级”层或“专用”事件中心层。 有关详细信息,请参阅自动扩展 Azure 事件中心吞吐量单位
  • 启用虚拟网络后,数据导出无法访问事件中心资源。 必须选中“允许受信任服务列表中的 Azure 服务访问此存储帐户”复选框以绕过事件中心中的此防火墙设置,才能授予对事件中心的访问权限。

查询导出的数据

将数据从工作区导出到存储帐户有助于满足概述中提到的各种方案,并且可以由从存储帐户读取 Blob 的工具使用。 以下方法允许使用 Log Analytics 查询语言查询数据,这与 Azure 数据资源管理器相同。

  1. 使用 Azure 数据资源管理器查询 Azure Data Lake 中的数据
  2. 使用 Azure 数据资源管理器从存储帐户引入数据
  3. 使用 Log Analytics 工作区通过日志引入 API 查询引入的数据 。 引入的数据将发送到自定义日志表,而不是发送到原始表。

启用数据导出

需要执行以下步骤才能启用 Log Analytics 数据导出。

注册资源提供程序

需要在订阅中注册 Azure 资源提供程序 Microsoft.Insights 才能启用 Log Analytics 数据导出。

可能已为大多数 Azure Monitor 用户注册此资源提供程序。 若要验证,请转到 Azure 门户中的“订阅”。 选择订阅,然后在菜单的“设置”部分下选择“资源提供程序”。 找到 Microsoft.Insights。 如果其状态为“已注册”,表示已注册。 如果未注册,请选择“注册”进行注册。

还可使用任何可用的方法来注册资源提供程序,如 Azure 资源提供程序和类型中所述。 以下示例命令使用 Azure CLI:

az provider register --namespace 'Microsoft.insights'

以下示例命令使用 PowerShell:

Register-AzResourceProvider -ProviderNamespace Microsoft.insights

允许受信任的 Microsoft 服务

如果你已将存储帐户配置为允许从所选网络进行访问,则需要添加一个例外来允许 Azure Monitor 写入帐户。 在存储帐户的“防火墙和虚拟网络”中,选择“允许受信任服务列表中的 Azure 服务访问此存储帐户”。

屏幕截图显示了“允许 Azure 服务出现在可信服务列表中”选项。

监视目标

重要

导出目标存在限制,应监视这些目标,以最大程度地减少限制、失败和延迟的情况。 有关详细信息,请参阅存储帐户可伸缩性事件中心命名空间配额

以下指标可用于数据导出操作和警报

指标名称 说明
导出的字节数 选定时间范围内从 Log Analytics 工作区导出到目标的字节总数。 导出的数据大小是导出的 JSON 格式数据中的字节数。 1 GB = 10^9 字节。
导出失败数 选定时间范围内从 Log Analytics 工作区到目标的失败导出请求总数。 此数字包括由于目标资源限制、禁止访问错误或任何服务器错误而导致的导出尝试失败。 重试过程处理失败的尝试,并且该数字不指示缺少数据。
导出的记录数 选定时间范围内从 Log Analytics 工作区导出的记录总数。 此数量统计最终成功的操作的记录。

监视存储帐户

  1. 使用单独的存储帐户进行导出。

  2. 在指标上配置警报:

    作用域 指标命名空间 指标 聚合 阈值
    存储名称 帐户 流入量 总和 每个警报评估期的最大流入量的 80%。 例如,在美国西部,常规用途 v2 的限制为 60Gbps。 警报阈值为每 5 分钟的评估期 1676 GiB。
  3. 警报修正操作:

    • 为不与非监视数据共享的导出使用单独的存储帐户。
    • Azure 存储标准帐户支持根据请求提高流入量上限。 要请求提高限制,请联系 Azure 支持
    • 在多个存储帐户之间拆分表。

监视事件中心

  1. 指标上配置警报:

    作用域 指标命名空间 指标 聚合 阈值
    命名空间-名称 事件中心标准指标 传入字节数 总和 每个警报评估期的最大流入量的 80%。 例如,限制为每个单位 1 MB/秒(TU 或 PU),使用 5 个单位。 阈值为每 5 分钟的评估期 228 MiB。
    命名空间-名称 事件中心标准指标 传入请求数 计数 每个警报评估期的最大事件数的 80%。 例如,限制为每个单位 1000/秒(TU 或 PU),使用 5 个单位。 阈值为每个 5 分钟的评估期 1,200,000。
    命名空间-名称 事件中心标准指标 超过限额错误 计数 请求的 1%。 例如,每 5 分钟的请求数为 600,000。 阈值为每个 5 分钟的评估期 6,000。
  2. 警报修正操作:

    • 为不与非监视数据共享的导出使用单独的事件中心命名空间。
    • 配置自动扩充功能来自动进行纵向扩展并增加吞吐量单位数,以满足使用需求。
    • 验证吞吐量单位是否增加以适应数据量。
    • 在更多命名空间之间拆分表。
    • 使用“高级”或“专用”层以获得更高的吞吐量。

创建或更新数据导出规则

数据导出规则定义导出数据的目标位置和表。 在启动导出操作之前,规则预配大约需要 30 分钟。 数据导出规则注意事项:

  • 存储帐户在工作区规则中必须是唯一的。
  • 发送到不同的事件中心时,多个规则可以使用同一事件中心命名空间。
  • 导出到存储帐户:在存储帐户中为每个表创建一个单独的容器。
  • 导出到事件中心:如果未提供事件中心名称,将为每个表创建一个单独的事件中心。 每个“基本”和“标准”命名空间层支持的事件中心数为 10 个。 如果向这些层导出的表格超过 10 个,则可在多个导出规则之间将表格拆分到不同的事件中心命名空间,或在规则中提供事件中心名称,并将所有表格导出到该事件中心。
  1. 在 Azure 门户的“Log Analytics 工作区”菜单中,从“设置”部分下选择“数据导出”。 选择窗格顶部的“新建导出规则”。

    显示数据导出入口的截屏。

  2. 按照步骤操作,然后选择“创建”。 只有包含数据的表才会显示在“源”选项卡下。

    导出规则配置的屏幕截图。

查看数据导出规则配置

  1. 在 Azure 门户的“Log Analytics 工作区”菜单中,从“设置”部分下选择“数据导出”。

    显示数据导出屏幕的屏幕截图。

  2. 选择配置视图的规则。

    数据导出规则视图的屏幕截图。

禁用或更新导出规则

对于特定时间段(例如执行测试时),可以禁用导出规则来停止导出。 在 Azure 门户的“Log Analytics 工作区”菜单中,从“设置”部分下选择“数据导出”。 选择“状态”切换开关,以禁用或启用导出规则。

显示禁用数据导出规则的屏幕截图。

删除导出规则

在 Azure 门户的“Log Analytics 工作区”菜单中,从“设置”部分下选择“数据导出”。 选择规则右侧的省略号,然后选择“删除”。

显示删除数据导出规则的屏幕截图。

查看工作区中的所有数据导出规则

在 Azure 门户的“Log Analytics 工作区”菜单中,从“设置”部分下选择“数据导出”,以查看工作区中的所有导出规则。

显示“数据导出规则”视图的屏幕截图。

不受支持的表

注意

如果数据导出规则包含不受支持的表,配置不会失败,但不会导出该表的任何数据。 支持表功能后,数据导出将开始。 我们正在添加对更多表的支持。 请定期查看本文。

 表  限制
ADXDataOperation
警报 部分支持。 不支持 Zabbix 警报的数据引入。
AlertHistory
AzureActivity 部分支持。 导出完全支持来自 Log Analytics 代理或 Azure Monitor 代理的数据。 通过诊断扩展代理到达的数据是通过存储收集的。 导出不支持此路径。
AzureDiagnostics
AzureMetrics
ConfigurationChange
配置数据 部分支持。 某些数据是通过导出不支持的内部服务引入的。 当前导出中缺少此部分。
DatabricksDatabricksSQL
DatabricksSQL
DeviceAppLaunch
DeviceCalendar
DeviceConnectSession
DeviceEtw
DeviceHealth
DeviceHeartbeat
ETWEvent 部分支持。 导出完全支持来自 Log Analytics 代理或 Azure Monitor 代理的数据。 通过诊断扩展代理到达的数据是通过存储收集的。 导出不支持此路径。
活动 部分支持。 导出完全支持来自 Log Analytics 代理或 Azure Monitor 代理的数据。 通过诊断扩展代理到达的数据是通过存储收集的。 导出不支持此路径。
InsightsMetrics 部分支持。 某些数据是通过导出不支持的内部服务引入的。 当前导出中缺少此部分。
NetworkSessions
操作 部分支持。 某些数据是通过导出不支持的内部服务引入的。 当前导出中缺少此部分。
保护状态
ServiceFabricOperationalEvent 部分支持。 导出完全支持来自 Log Analytics 代理或 Azure Monitor 代理的数据。 通过诊断扩展代理到达的数据是通过存储收集的。 导出不支持此路径。
ServiceFabricReliableActorEvent 部分支持。 导出完全支持来自 Log Analytics 代理或 Azure Monitor 代理的数据。 通过诊断扩展代理到达的数据是通过存储收集的。 导出不支持此路径。
ServiceFabricReliableServiceEvent 部分支持。 导出完全支持来自 Log Analytics 代理或 Azure Monitor 代理的数据。 通过诊断扩展代理到达的数据是通过存储收集的。 导出不支持此路径。
更新 部分支持。 某些数据是通过导出不支持的内部服务引入的。 当前导出中缺少此部分。
VMBoundPort
VMComputer
VMConnection
VMProcess
W3CIISLog 部分支持。 导出完全支持来自 Log Analytics 代理或 Azure Monitor 代理的数据。 通过诊断扩展代理到达的数据是通过存储收集的。 导出不支持此路径。
WireData 部分支持。 某些数据是通过导出不支持的内部服务引入的。 当前导出中缺少此部分。

后续步骤

从 Azure 数据资源管理器查询导出的数据