Azure Monitor中的诊断设置

可以使用Azure Monitor中的诊断设置收集资源日志并将 platform 指标activity 日志发送到各种目标。 为要从中收集数据的每个资源创建单独的诊断设置。 每个设置定义要收集的资源中的数据,以及要将该数据发送到的目标。 本文介绍诊断设置的详细信息,包括如何创建诊断设置以及可用于发送数据的目标。

展示活动日志、资源日志和平台指标集合的图表。

警告

如果删除或重命名该资源,或者跨资源组或订阅迁移资源,请删除资源的任何诊断设置。 如果未删除诊断设置并重新创建此资源,则已删除资源的任何诊断设置都可以应用到新资源。 对于某些资源类型,这种情况将恢复诊断设置中定义的资源日志的收集。

Sources

诊断设置可以从下表中的源收集数据。 有关每个源在每个目标中收集的数据及其格式的详细信息,请参阅链接的文章。

数据源 Description
平台指标 在不配置的情况下自动收集。 使用诊断设置将平台指标发送到其他目标。
活动日志 在不配置的情况下自动收集。 使用诊断设置将活动日志条目发送到其他目标。
资源日志 默认不收集。 创建诊断设置以收集资源日志。

配置诊断设置后,每个数据源可供分析的时间各不相同。 有关平台指标、资源日志和活动日志的预期延迟,请参阅 Azure Monitor 中的日志数据引入时间

Destinations

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

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

诊断设置使用的任何目标都必须存在,然后才能创建设置。 如果配置设置的用户对两个订阅具有适当的Azure基于角色的访问控制(RBAC)访问权限,则目标不必与发送日志的资源位于同一订阅中。 使用Azure Lighthouse将目标包含在另一个Microsoft Entra租户中。

Destination Description Requirements
Log Analytics 工作区 使用 日志查询工作簿检索数据。 使用 日志警报 主动对数据发出警报。 各种 Azure 资源所使用的表,请参阅 Azure Monitor 资源日志参考 当第一个数据发送到工作区时,将自动创建Log Analytics工作区中的任何表,因此只有工作区本身必须存在。
Azure 存储 帐户 用于审核、静态分析或备份的存储。 存储可能比其他选项便宜,并且可以无限期保留。 将数据发送到不可变存储,以防止其修改。 如 配置 Blob 版本的不可变策略中所述,为存储帐户设置不可变策略。 存储帐户必须与正在监视的资源位于同一地区,如果该资源是区域性的。

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

Azure DNS区域终结点(预览版)和任何 高级存储帐户都不支持作为目的地。 支持任何 标准存储帐户
Azure 事件中心 将数据流式传输到外部系统,例如非Microsoft安全信息和事件管理(SIEM)解决方案和其他Log Analytics解决方案。 如果资源是区域,事件中心必须与要监视的资源位于同一区域。 不能使用 压缩事件中心,因为它要求消息必须具有分区键,而 Azure Monitor 中没有包含该分区键。

启用虚拟网络时,诊断设置无法访问事件中心。 必须启用 允许受信任的 Microsoft 服务 才能绕过事件中心中的此防火墙设置,从而授予 Azure Monitor 诊断设置服务对事件中心资源的访问权限。

事件中心命名空间的共享访问策略定义了流式处理机制所具有的权限。 流式传输到事件中心需要ManageSendListen权限。 若要更新诊断设置,使之包括流式传输,则必须在事件中心授权规则中拥有 ListKey 权限。

用于创建诊断设置的方法

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

若要使用 Azure 门户为活动日志创建诊断设置,请参阅 Export 活动日志。 若要为管理组创建诊断设置,请参阅 管理组诊断设置

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

  1. 在资源的菜单中的 “监视 ”部分,选择“ 诊断设置”。 或者,在“Azure Monitor”菜单上,选择Settings>Diagnostic settings。 然后选择资源。

  2. 选择 “添加诊断设置 ”以添加新设置,或选择 “编辑”设置 以编辑现有设置。

    如果要发送到同一类型的多个目标,可能需要为资源设置多个诊断设置。 以下示例显示了钥匙库资源的配置,但界面与其他资源类似。

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

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

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

    此屏幕截图显示了一个示例密钥保管库。 其他类型的资源具有不同的类别集。

  4. 对于 日志,请选择 类别组 ,或选择要发送到目标的每个类别数据的单个复选框。 类别列表因每个Azure服务而异。

  5. 对于 指标,如果要收集平台指标,请选择 AllMetrics

  6. 对于 目标详细信息,请选中要包含在诊断设置中的每个目标的复选框。 然后提供每个目标的详细信息。

    如果选择Log Analytics工作区作为目标,则可能需要指定收集模式。 有关详细信息,请参阅 收集模式

警告

为存储帐户或事件中心命名空间创建或更新诊断设置时,无法为资源日志或指标数据选择该帐户或命名空间。 此限制是设计造成的。 将资源日志或指标从资源发送到同一资源将生成和写入数据产生无限循环。

此设计仅适用于Azure门户 UX 层。 如果确实需要将数据写入同一资源,并且你愿意接受关联的风险,则可以使用 Azure PowerShell、Azure CLI、REST API、资源管理器 模板或支持的 Microsoft SDK 来创建诊断设置。

类别组

可以使用 类别组 基于预定义分组收集资源日志,而不是选择单个日志类别。 Microsoft定义分组以帮助监视常见用例。 如果更新了组中的类别,您的日志收集将会被自动修改。

并非所有Azure服务都使用类别组。 如果类别组不适用于特定资源,则创建诊断设置时此选项将不可用。

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

  • allLogs:资源的所有类别。
  • audit:记录客户与数据或服务设置交互的所有资源日志。 如果选择allLogs类别组,则无需选择此类别组。

Note

在Azure SQL 数据库的诊断设置中启用 audit 类别不会激活数据库的审核。 若要启用数据库审核,必须从审核窗格中为Azure SQL 数据库启用它。

指标限制

并非所有指标都可以发送到具有诊断设置的Log Analytics工作区。 请参阅支持的指标列表中的“可导出”列。

诊断设置目前不支持多维指标。 带有维度的指标被导出为展平的单维指标,并在不同的维度值上进行聚合。 例如,可以在每个节点级别上浏览和绘制区块链的IOReadBytes指标。 使用诊断设置导出指标时,它会显示所有节点的所有读取字节。

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

控制成本

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

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

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

数据到达目标之前的时间

创建诊断设置后,数据应在 90 分钟内开始流向所选目标。 将数据发送到Log Analytics工作区时,如果表尚不存在,则会自动创建该表。 仅当目标收到第一条日志记录时,才会创建该表。

如果在 24 小时内未收到任何信息,则可能遇到以下问题之一:

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

请尝试禁用配置,然后重新启用它。 如果问题仍然存在,请通过Azure门户联系Azure 支持。

Application Insights

对于 Application Insights 应用程序的诊断设置,请考虑以下信息:

  • 目标不能是 Application Insights 资源所在的 Log Analytics 工作区。
  • Application Insights 用户无法访问这两个工作区。 将 Log Analytics 访问控制模式设置为 需要工作区权限。 通过 Azure RBAC,确保用户只能访问 Application Insights 资源所基于的Log Analytics工作区。

这些步骤是必需的,因为 Application Insights 会跨资源访问数据,以提供完整的端到端事务作和准确的应用程序映射。 这些资源包括Log Analytics工作区。 由于诊断日志使用相同的表名,因此如果用户有权访问包含相同数据的多个资源,则可能会出现重复的数据。

Troubleshooting

不支持度量类别

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

由于资源 ID 中的非 ASCII 字符,设置会消失

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

资源处于非活动状态

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

当资源处于非活动状态一小时后,导出机制的频率会降低到每 15 分钟一次。 这种情况意味着导出下一个非零值的潜在延迟最长为 15 分钟。 在长达七天不活动后,资源的最大退避时间达到 2 小时。 资源开始导出非零值后,导出机制将恢复为 3 分钟的原始导出延迟。

有关所有源类型在正常操作条件下的预期延迟,请参阅 Azure Monitor 中的日志数据摄入时间