Compartilhar via

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

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

概述

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

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

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

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

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

其他导出选项

Log Analytics 工作区的数据导出功能会持续地将数据导出,这些数据是发送到 Log Analytics 工作区的。 针对特定场景导出数据的其他选项包括:

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

所需的权限

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

限制

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

数据完整性

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

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

定价模型

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

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

导出目的地

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

存储帐户

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

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

存储帐户无法为高级版,必须为 StorageV1 或更高版本,并且与工作区位于同一区域。 如果需要将数据复制到其他区域中的其他存储帐户,请使用任何 Azure Storage 冗余选项,包括 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 监视器时,它会被发送到事件中心,并导出到位于工作区区域的目标。 通过提供规则中的不同 Event Hub name ,创建多个导出规则到同一事件中心命名空间。 如果未提供 Event Hub name,则会为导出的表创建一个默认的事件中心,其名称为 am- 后跟表的名称。 例如,表 SecurityEvent 将会发送到名为 am-SecurityEvent 的事件中心 (Event Hub)。

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

注意

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

查询导出的数据

将数据从工作区导出到存储帐户有助于满足概述中提到的各种方案,并且可以由从存储帐户读取 Blob 的工具使用。 以下方法允许使用Log Analytics查询语言查询数据,Azure Data Explorer也是如此。

  1. 使用 Azure Data Explorer 在 Azure Data Lake 中查询数据
  2. 使用 Azure Data Explorer 从存储帐户摄取数据。
  3. 使用 Log Analytics 工作区利用日志引入 API 查询引入的数据。 引入的数据将发送到自定义日志表,而不是发送到原始表。

启用数据导出

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

注册资源提供程序

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

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

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

az provider register --namespace 'Microsoft.insights'

以下示例命令使用 PowerShell:

Register-AzResourceProvider -ProviderNamespace Microsoft.insights

允许受信任的Microsoft服务

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

截图。显示“允许 Azure 服务”选项在受信任服务列表中。

监视目的地

重要

导出目标有一定的限制,应对其进行监控,以最大程度地减少限流、失败和延迟。 有关详细信息,请参阅存储帐户可伸缩性事件中心命名空间配额

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

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

监视存储帐户

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

  2. 在指标上配置警报:

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

    • 使用与非监控数据不共享的单独存储帐户进行导出。
    • Azure Storage标准帐户按请求支持更高的入口限制。 若要请求增加,请联系 Azure Support
    • 在多个存储帐户之间拆分表。

监视事件中心 (Event Hubs)

  1. 指标上配置警报:

    Scope 指标命名空间 指标 聚合 阈值
    命名空间名称 事件中心标准指标 传入字节数 总和 每个警报评估周期的最大流入量限制为 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 workspace 菜单上,选择 Settings 节下的 Data Export。 选择窗格顶部的“新建导出规则”。

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

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

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

查看数据导出规则配置

  1. 在 Azure 门户中的 Log Analytics workspace 菜单上,选择 Settings 节下的 Data Export

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

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

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

禁用或更新导出规则

对于特定时间段(例如执行测试时),可以禁用导出规则来停止导出。 在 Azure 门户中的 Log Analytics workspace 菜单上,选择 Settings 节下的 Data Export。 选择“状态”切换开关,以禁用或启用导出规则。

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

删除导出规则

在 Azure 门户中的 Log Analytics workspace 菜单上,选择 Settings 节下的 Data Export。 选择规则右侧的省略号,然后选择“删除”。

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

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

在 Azure 门户中的 Log Analytics 工作区菜单上,< 选择 c1>Data Export 下的 Settings 节以查看工作区中的所有导出规则。

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

不受支持的表

注意

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

 表  限制
警报 部分支持。 不支持 Zabbix 警报的数据引入。
警报历史
AzureActivity 部分支持。 从 Log Analytics 代理或 Azure Monitor 代理到达的数据在导出时得到完全支持。 通过诊断扩展代理到达的数据是通过存储收集的。 导出不支持此路径。
AzureDiagnostics
配置变更 部分支持。 某些数据是通过导出不支持的内部服务引入的。 当前导出中缺少此部分。
配置数据 部分支持。 某些数据是通过导出不支持的内部服务引入的。 当前导出中缺少此部分。
DatabricksDatabricksSQL
DatabricksSQL
设备应用启动
设备日历
DeviceConnectSession
DeviceEtw 部分支持。 某些数据是通过导出不支持的内部服务引入的。 当前导出中缺少此部分。
设备心跳
ETWEvent 部分支持。 从 Log Analytics 代理或 Azure Monitor 代理到达的数据在导出时得到完全支持。 通过诊断扩展代理到达的数据是通过存储收集的。 导出不支持此路径。
事件 部分支持。 从 Log Analytics 代理或 Azure Monitor 代理到达的数据在导出时得到完全支持。 通过诊断扩展代理到达的数据是通过存储收集的。 导出不支持此路径。
网络会话
操作 部分支持。 某些数据是通过导出不支持的内部服务引入的。 当前导出中缺少此部分。
保护状态
SecurityEvent 部分支持。 某些数据是通过导出不支持的内部服务引入的。 当前导出中缺少此部分。
服务结构操作事件 部分支持。 从 Log Analytics 代理或 Azure Monitor 代理到达的数据在导出时得到完全支持。 通过诊断扩展代理到达的数据是通过存储收集的。 导出不支持此路径。
ServiceFabric可靠角色事件 部分支持。 从 Log Analytics 代理或 Azure Monitor 代理到达的数据在导出时得到完全支持。 通过诊断扩展代理到达的数据是通过存储收集的。 导出不支持此路径。
ServiceFabric可靠服务事件 部分支持。 从 Log Analytics 代理或 Azure Monitor 代理到达的数据在导出时得到完全支持。 通过诊断扩展代理到达的数据是通过存储收集的。 导出不支持此路径。
Syslog 部分支持。 某些数据是通过导出不支持的内部服务引入的。 当前导出中缺少此部分。
W3CIISLog 部分支持。 从 Log Analytics 代理或 Azure Monitor 代理到达的数据在导出时得到完全支持。 通过诊断扩展代理到达的数据是通过存储收集的。 导出不支持此路径。