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

Azure Monitor 中的诊断设置

Diagnostic settings in Azure Monitor allow you to collect resource logs and to send platform metrics and the activity log to different destinations. 为每个要从中收集数据的资源创建单独的诊断设置。 每个设置定义要收集的资源中的数据,以及要将该数据发送到的目标。 本文介绍诊断设置的详细信息,包括如何创建诊断设置以及可用于发送数据的目标。

显示活动日志、资源日志和平台指标收集过程的图示。

以下视频详解如何通过诊断设置进行资源平台日志的路由。 自录制视频以来,对诊断设置进行了以下更改,但本文将讨论这些主题。

Sources

诊断设置可以从下表中的源收集数据。 要了解每个来源收集的数据及其在各个目的地的格式详情,请查阅每篇链接文章。

Data source Description
Platform metrics 在不配置的情况下自动收集。 Use a diagnostic setting to sent platform metrics to other destinations.
Activity log 在不配置的情况下自动收集。 Use a diagnostic setting to sent activity log entries to other destinations.
Resource logs 默认不收集。 创建诊断设置以收集资源日志。

Destinations

诊断设置将数据发送到下表中的目标。 为了确保传输中的数据的安全性,所有目标终结点均配置为支持 TLS 1.2。

一个诊断设置只能为每个目标定义一种类型。 若要将数据发送到多个特定的目标类型(例如,两个不同的 Log Analytics 工作区),请创建多个设置。 每个资源最多可以有五个诊断设置。

诊断设置使用的任何目标都必须存在,然后才能创建设置。 如果配置设置的用户同时拥有两个订阅的相应 Azure基于角色的访问控制访问权限,目标就不必位于发送日志的资源所在的订阅中。 使用 Azure Lighthouse 包含另一个 Microsoft Entra 租户中的目的地。

Destination Description Requirements
Log Analytics 工作区 Retrieve data using log queries and workbooks. Use log alerts to proactively alert on data. 有关不同 Azure 资源使用的表,请参阅 Azure Monitor 资源日志参考 当第一个数据发送到工作区时,Log Analytics 工作区中的任何表都会自动创建,因此只有工作区本身必须存在。
Azure 存储帐户 用于审核、静态分析或备份的存储。 存储可能比其他选项便宜,并且可以无限期保留。 将数据发送到不可变存储,以防止其修改。 请按照为 Azure Blob 存储设置和管理不可变策略中所述为存储帐户设置不可变策略。 如果资源是区域,则存储帐户必须与所监视的资源位于同一区域。

启用虚拟网络时,诊断设置无法访问存储帐户。 必须在存储帐户中启用允许受信任的 Microsoft 服务来绕过此防火墙设置,以便授予 Azure Monitor 诊断设置服务访问存储帐户的权限。

Azure DNS 区域终结点(预览版) 和任何 高级存储帐户 都不支持作为目标。 支持任何 标准存储帐户
Azure 事件中心 将数据流式传输到外部系统,例如第三方 SIEM 和其他 Log Analytics 解决方案。 如果资源是区域,则事件中心必须与所监视的资源位于同一区域。

启用虚拟网络时,诊断设置无法访问事件中心。 必须在存储帐户中启用允许受信任的 Microsoft 服务来绕过此防火墙设置,以便授予 Azure Monitor 诊断设置服务访问存储帐户的权限。

事件中心命名空间的共享访问策略定义流媒体机制具有的权限。 流式传输到事件中心需要 ManageSendListen 权限。 若要更新诊断设置,使之包括流式传输,则必须在事件中心授权规则中拥有 ListKey 权限。
Azure Monitor 合作伙伴解决方案 可以在 Azure Monitor 和其他非 Microsoft 监视平台之间实现专用集成。 解决方案因合作伙伴而异。 有关详细信息 ,请参阅 Azure 本机 ISV 服务文档

创建诊断设置

可以使用以下任一方法创建诊断设置。

使用以下步骤在 Azure 门户中创建新的诊断设置或编辑现有诊断设置。

  1. 在 Azure 门户中配置诊断设置的位置取决于资源:

    • For a single resource, select Diagnostic settings under Monitoring on the resource's menu.

      Azure 门户中资源菜单的“监视”部分的屏幕截图,其中突出显示了“诊断设置”。

    • For one or more resources, select Diagnostic settings under Settings on the Azure Monitor menu and then select the resource.

      Azure Monitor 菜单中“设置”部分的屏幕截图,其中突出显示了“诊断设置”。

    • For the activity log, select Activity log on the Azure Monitor menu and then select Export Activity Logs. 请确保 禁用活动日志的任何旧配置

      Azure Monitor 菜单的屏幕截图,其中已选择“活动日志”,并且在“监视 - 活动日志”菜单栏中突出显示了“导出活动日志”。

  2. 选择 “添加诊断设置 ”以添加新设置或 “编辑”设置 以编辑现有设置。 如果要发送到同一类型的多个目标,可能需要为资源设置多个诊断设置。

    显示为现有设置添加诊断设置的屏幕截图。

  3. 为设置指定说明性名称(如果未指定)。

    显示诊断设置详细信息的屏幕截图。

  4. 要路由的日志和指标:对于日志,请选择 一个类别组 ,或选择要发送到稍后指定的目标的每个类别数据的单个复选框。 每种 Azure 服务的类别列表各不相同。 Select AllMetrics if you want to collect platform metrics.

  5. Destination details: Select the checkbox for each destination that should be included in the diagnostic settings and then provide the details for each. 如果选择 Log Analytics 工作区作为目标,则可能需要指定收集模式。 See Collection mode for details.

Category groups

You can use category groups to collect resource logs based on predefined groupings instead of selecting individual log categories. Microsoft定义分组以帮助监视常见用例。 如果更新了组中的类别,您的日志收集将会被自动修改。 并非所有 Azure 服务都使用类别组。 如果类别组不适用于特定资源,则创建诊断设置时此选项将不可用。

如果在诊断设置中使用类别组,则不能选择单个类别类型。 目前,设有两个类别组:

  • allLogs: all categories for the resource.
  • audit: All resource logs that record customer interactions with data or the settings of the service. You don't need to select this category group if you select the allLogs category group.

Note

在 Azure SQL 数据库的诊断设置中启用审核类别不会激活数据库的审核。 若要启用数据库审核,必须从 Azure 数据库的“审核”功能页进行启用。

Metrics limitations

并非所有指标都可以发送到具有诊断设置的 Log Analytics 工作区。 See the Exportable column in the list of supported metrics.

诊断设置目前不支持多维指标。 带有维度的指标被导出为展平的单维指标,并在不同的维度值上进行聚合。 For example, the IOReadBytes metric on a blockchain can be explored and charted on a per-node level. 使用诊断设置导出时,导出的指标将显示所有节点的所有读取字节。

若要解决特定指标的限制,可以使用 指标 REST API 手动提取它们,然后使用 日志引入 API 将其导入 Log Analytics 工作区。

删除诊断设置

如果删除或重命名该资源,或者跨资源组或订阅迁移资源,请删除资源的任何诊断设置。 如果重新创建此资源,则已删除资源的任何诊断设置都可以应用于新资源。 这会恢复诊断设置中定义的资源日志集合。

Controlling costs

诊断设置收集的数据可能会产生费用。 成本取决于你选择的目标和收集的数据量。 有关详细信息,请参阅 Azure Monitor 定价

仅收集您对每个服务所需的类别。 你可能也不想从 Azure 资源收集平台指标,因为此数据已在指标中收集。 仅当需要工作区中的指标数据以使用日志查询进行更复杂的分析时,才将诊断数据配置为收集指标。

诊断设置不允许在所选类别中进行精细筛选。 可以使用转换筛选 Log Analytics 工作区中支持的表的数据。 请参阅 Azure Monitor 中的转换 以了解详细信息。

遥测到达目标之前的时间

创建诊断设置后,数据应在 90 分钟内开始流向所选目标。 将数据发送到 Log Analytics 工作区时,如果表尚不存在,则会自动创建该表。 仅当收到第一个日志记录时,系统才会创建该表。 如果在 24 小时内未收到任何信息,则可能遇到以下问题之一:

  • 未生成任何日志。
  • 底层路由机制出现问题。

如果遇到问题,请禁用配置,然后重新启用它。 如果仍出现此问题,请通过 Azure 门户联系 Azure 支持。

Troubleshooting

不支持指标类别
使用资源管理器模板、REST API、Azure CLI 或 Azure PowerShell 时,可能会收到类似于 指标类别“xxxx”不受支持 的错误消息。 除了少数 Azure 服务外,不支持除 AllMetrics 之外的指标类别。 删除除 AllMetrics 之外的任何指标类别名称,并重新进行部署。

由于 resourceID 中的非 ASCII 字符,设置会消失
诊断设置不支持具有非 ASCII 字符的资源 ID(例如 Preproduccón)。 由于无法重命名 Azure 中的资源,因此必须创建不包含非 ASCII 字符的新资源。 如果字符位于资源组中,可以将资源移动到新组。

Inactive resources
当资源处于不活动状态并导出零值指标时,诊断设置导出机制会以增量方式进行退避,以避免导出和存储零值所带来的不必要成本。 这种退让可能会导致下一个非零值的导出延迟。 此行为仅适用于导出的指标,不会影响基于指标的警报或自动缩放。

当资源处于非活动状态一小时后,导出机制的频率会降低到每 15 分钟一次。 这意味着导出下一个非零值可能会有长达 15 分钟的延迟。 处于非活动状态七天后,会达到两小时的最大退避时间。 一旦资源开始导出非零值,导出机制就会恢复到原来的三分钟导出延迟。

Application Insights 的重复数据
基于工作区的 Application Insights 应用程序的诊断设置收集与 Application Insights 本身相同的数据。 如果目标与应用程序使用的 Log Analytics 工作区相同,则会导致收集重复的数据。 为 Application Insights 创建诊断设置,将数据发送到其他 Log Analytics 工作区或其他目标。

Next steps