可以使用 Azure Monitor 中的诊断设置收集 资源日志 ,并将 平台指标 和活动 日志 发送到各种目标。 为要从中收集数据的每个资源创建单独的诊断设置。 每个设置定义要收集的资源中的数据,以及要将该数据发送到的目标。 本文介绍诊断设置的详细信息,包括如何创建诊断设置以及可用于发送数据的目标。
警告
如果删除或重命名该资源,或者跨资源组或订阅迁移资源,请删除资源的任何诊断设置。 如果未删除诊断设置并重新创建此资源,则已删除资源的任何诊断设置都可以应用到新资源。 对于某些资源类型,这种情况将恢复诊断设置中定义的资源日志的收集。
Sources
诊断设置可以从下表中的源收集数据。 有关每个源在每个目标中收集的数据及其格式的详细信息,请参阅链接的文章。
| 数据源 | Description |
|---|---|
| 平台指标 | 在不配置的情况下自动收集。 使用诊断设置将平台指标发送到其他目标。 |
| 活动日志 | 在不配置的情况下自动收集。 使用诊断设置将活动日志条目发送到其他目标。 |
| 资源日志 | 默认不收集。 创建诊断设置以收集资源日志。 |
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 诊断设置服务授予对事件中心资源的访问权限。 事件中心命名空间的共享访问策略定义了流式处理机制所具有的权限。 流式传输到事件中心需要 Manage、Send和Listen权限。 若要更新诊断设置,使之包括流式传输,则必须在事件中心授权规则中拥有 ListKey 权限。 |
用于创建诊断设置的方法
可以使用以下任一方法创建诊断设置。
若要使用 Azure 门户为活动日志创建诊断设置,请参阅 “导出活动日志”。 若要为管理组创建诊断设置,请参阅 管理组诊断设置。
使用以下步骤创建新的诊断设置或在 Azure 门户中编辑现有诊断设置:
在资源的菜单中的 “监视 ”部分,选择“ 诊断设置”。 或者,在 Azure Monitor 菜单上,选择“设置>诊断设置”。 然后选择资源。
选择 “添加诊断设置 ”以添加新设置,或选择 “编辑”设置 以编辑现有设置。
如果要发送到同一类型的多个目标,可能需要为资源设置多个诊断设置。 以下示例显示了密钥保管库资源的设置,但屏幕与其他资源类似。
为设置指定说明性名称(如果未指定)。
此屏幕截图显示了一个示例密钥保管库。 其他类型的资源具有不同的类别集。
对于 日志,请选择 类别组 ,或选择要发送到目标的每个类别数据的单个复选框。 每种 Azure 服务的类别列表各不相同。
对于 指标,如果要收集平台指标,请选择 AllMetrics 。
对于 目标详细信息,请选中要包含在诊断设置中的每个目标的复选框。 然后提供每个目标的详细信息。
如果选择 Log Analytics 工作区作为目标,则可能需要指定收集模式。 有关详细信息,请参阅 收集模式。
警告
为存储帐户或事件中心命名空间创建或更新诊断设置时,无法为资源日志或指标数据选择该帐户或命名空间。 此限制是设计造成的。 将资源日志或指标从资源发送到同一资源将生成和写入数据产生无限循环。
此设计仅适用于 Azure 门户 UX 层。 如果确实需要将数据写入同一资源,并且你愿意接受关联的风险,则可以使用 Azure PowerShell、Azure CLI、REST API、资源管理器模板或支持的 Microsoft SDK 来创建诊断设置。
类别组
可以使用 类别组 基于预定义分组收集资源日志,而不是选择单个日志类别。 Microsoft定义分组以帮助监视常见用例。 如果更新了组中的类别,您的日志收集将会被自动修改。
并非所有 Azure 服务都使用类别组。 如果类别组不适用于特定资源,则创建诊断设置时此选项将不可用。
如果在诊断设置中使用类别组,则不能选择单个类别类型。 目前,设有两个类别组:
-
allLogs:资源的所有类别。 -
audit:记录客户与数据或服务设置交互的所有资源日志。 如果选择allLogs类别组,则无需选择此类别组。
Note
在 audit Azure SQL 数据库的诊断设置中启用类别不会激活数据库的审核。 若要启用数据库审核,必须从 Azure SQL 数据库的审核窗格中启用它。
指标限制
并非所有指标都可以发送到具有诊断设置的 Log Analytics 工作区。 请参阅支持的指标列表中的“可导出”列。
诊断设置目前不支持多维指标。 带有维度的指标被导出为展平的单维指标,并在不同的维度值上进行聚合。 例如,可以在每个节点级别上浏览和绘制区块链的IOReadBytes指标。 使用诊断设置导出指标时,它会显示所有节点的所有读取字节。
若要解决特定指标的限制,可以使用 指标 REST API 手动提取它们。 然后,可以使用 日志引入 API 将它们导入 Log Analytics 工作区。
控制成本
诊断设置收集的数据可能会花费成本。 成本取决于你选择的目标和收集的数据量。 有关详细信息,请参阅 Azure Monitor 定价。
仅收集每个服务所需的类别。 你可能也不想从 Azure 资源收集平台指标,因为此数据已在 指标中收集。 仅当您需要在工作区中使用日志查询进行更复杂的分析时,才配置诊断数据以收集指标数据。
诊断设置不允许在所选类别中进行精细筛选。 可以通过使用转换,在 Log Analytics 工作区中筛选所支持的表的数据。 有关详细信息,请参阅 Azure Monitor 中的转换。
数据到达目标之前的时间
创建诊断设置后,数据应在 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'不支持”的错误消息。 除 AllMetrics 有限数量的 Azure 服务外,不支持其他指标类别。 删除除 AllMetrics 之外的任何指标类别名称,并重新进行部署。
由于资源 ID 中的非 ASCII 字符,设置会消失
诊断设置不支持具有非 ASCII 字符的资源 ID(例如 Preproduccón)。 由于无法在 Azure 中重命名资源,因此必须创建新资源而不使用非 ASCII 字符。 如果字符位于资源组中,可以将资源移动到新组。
资源处于非活动状态
当资源处于非活动状态并导出零值指标时,诊断设置的导出机制以增量方式退避,以避免导出和存储零值不必要的成本。 这种退让可能会导致下一个非零值的导出延迟。 此行为仅适用于导出的指标,不会影响基于指标的警报或自动缩放。
当资源处于非活动状态一小时后,导出机制的频率会降低到每 15 分钟一次。 这种情况意味着导出下一个非零值的潜在延迟最长为 15 分钟。 在长达七天不活动后,资源的最大退避时间达到 2 小时。 资源开始导出非零值后,导出机制将恢复为 3 分钟的原始导出延迟。