使用 Azure Monitor 中的诊断设置可以收集 资源日志 ,并将 平台指标 和活动 日志 发送到不同的目标。 为每个要从中收集数据的资源创建单独的诊断设置。 每个设置定义要收集的资源中的数据,以及要将该数据发送到的目标。 本文介绍诊断设置的详细信息,包括如何创建诊断设置以及可用于发送数据的目标。
警告
如果删除或重命名该资源,或者跨资源组或订阅迁移资源,请删除资源的任何诊断设置。 如果未删除诊断设置并重新创建此资源,则已删除资源的任何诊断设置都可以应用于新资源。 这将恢复诊断设置中定义的资源日志的收集。
Sources
诊断设置可以从下表中的源收集数据。 要了解每个来源收集的数据及其在各个目的地的格式详情,请查阅每篇链接文章。
数据源 | Description |
---|---|
平台指标 | 在不配置的情况下自动收集。 使用诊断设置将平台指标发送到其他 目标。 |
活动日志 | 在不配置的情况下自动收集。 使用诊断设置将活动日志条目发送到其他 目标。 |
资源日志 | 默认不收集。 创建诊断设置以收集资源日志。 |
Destinations
诊断设置将数据发送到下表中的目标。 为了确保传输中的数据的安全性,所有目标终结点均配置为支持 TLS 1.2。
一个诊断设置最多只能为每种目标定义一个。 若要将数据发送到多个特定的目标类型(例如,两个不同的 Log Analytics 工作区),请创建多个设置。 每个资源最多可以有五个诊断设置。
诊断设置使用的任何目标都必须存在,然后才能创建设置。 如果配置设置的用户同时拥有两个订阅的相应 Azure基于角色的访问控制访问权限,目标就不必位于发送日志的资源所在的订阅中。 使用 Azure Lighthouse 包含另一个 Microsoft Entra 租户中的目的地。
Destination | Description | Requirements |
---|---|---|
Log Analytics 工作区 | 使用 日志查询 和 工作簿检索数据。 使用 日志警报 主动对数据发出警报。 有关不同 Azure 资源使用的表,请参阅 Azure Monitor 资源日志参考 。 | 当第一个数据发送到工作区时,Log Analytics 工作区中的任何表都会自动创建,因此只有工作区本身必须存在。 |
Azure 存储帐户 | 用于审核、静态分析或备份的存储。 存储可能比其他选项便宜,并且可以无限期保留。 将数据发送到不可变存储,以防止其修改。 请按照为 Azure Blob 存储设置和管理不可变策略中所述为存储帐户设置不可变策略。 | 如果资源是区域,则存储帐户必须与所监视的资源位于同一区域。 启用虚拟网络时,诊断设置无法访问存储帐户。 必须在存储帐户中启用允许受信任的 Microsoft 服务来绕过此防火墙设置,以便授予 Azure Monitor 诊断设置服务访问存储帐户的权限。 Azure DNS 区域终结点(预览版) 和任何 高级存储帐户 都不支持作为目标。 支持任何 标准存储帐户 。 |
Azure 事件中心 | 将数据流式传输到外部系统,例如第三方 SIEM 和其他 Log Analytics 解决方案。 | 如果资源是区域,则事件中心必须与所监视的资源位于同一区域。 启用虚拟网络时,诊断设置无法访问事件中心。 必须在存储帐户中启用允许受信任的 Microsoft 服务来绕过此防火墙设置,以便授予 Azure Monitor 诊断设置服务访问存储帐户的权限。 事件中心命名空间的共享访问策略定义流媒体机制具有的权限。 流式传输到事件中心需要 Manage 、Send 和 Listen 权限。 若要更新诊断设置,使之包括流式传输,则必须在事件中心授权规则中拥有 ListKey 权限。 |
创建诊断设置
可以使用以下任一方法创建诊断设置。
Note
若要为活动日志创建诊断设置,请参阅 “导出活动日志”。
- Azure 门户
- PowerShell
- CLI
- ARM 模板
- REST API 模板
使用以下步骤在 Azure 门户中创建新的诊断设置或编辑现有诊断设置。
选择资源菜单的“监视”部分下的“诊断设置”,或者在 Azure Monitor 菜单上的“设置”下选择“诊断设置”,然后选择该资源。
选择 “添加诊断设置 ”以添加新设置或 “编辑”设置 以编辑现有设置。 如果要发送到同一类型的多个目标,可能需要为资源设置多个诊断设置。 以下示例显示了密钥保管库资源的设置,但屏幕与其他资源类似。
为设置指定说明性名称(如果未指定)。
要路由的日志和指标:对于日志,请选择 一个类别组 ,或选择要发送到稍后指定的目标的每个类别数据的单个复选框。 每种 Azure 服务的类别列表各不相同。 如果要收集平台指标,请选择 AllMetrics 。
目标详细信息:选中应包含在诊断设置中的每个目标的复选框,然后提供每个目标的详细信息。 如果选择 Log Analytics 工作区作为目标,则可能需要指定收集模式。 有关详细信息,请参阅 收集模式 。
类别组
可以使用 类别组 基于预定义分组收集资源日志,而不是选择单个日志类别。 Microsoft定义分组以帮助监视常见用例。 如果更新了组中的类别,您的日志收集将会被自动修改。 并非所有 Azure 服务都使用类别组。 如果类别组不适用于特定资源,则创建诊断设置时此选项将不可用。
如果在诊断设置中使用类别组,则不能选择单个类别类型。 目前,设有两个类别组:
- allLogs:资源的所有类别。
- 审核:记录客户与数据或服务设置交互的所有资源日志。 如果选择 allLogs 类别组,则无需选择此类别组。
Note
在 Azure SQL 数据库的诊断设置中启用审核类别不会激活数据库的审核。 若要启用数据库审核,必须从 Azure 数据库的“审核”功能页进行启用。
指标限制
并非所有指标都可以发送到具有诊断设置的 Log Analytics 工作区。 请参阅支持的指标列表中的“可导出”列。
诊断设置目前不支持多维指标。 带有维度的指标被导出为展平的单维指标,并在不同的维度值上进行聚合。 例如,可以在每个节点级别浏览区块链上的“IOReadBytes”指标并为其绘制图表。 使用诊断设置导出时,导出的指标将显示所有节点的所有读取字节。
若要解决特定指标的限制,可以使用 指标 REST API 手动提取它们,然后使用 日志引入 API 将其导入 Log Analytics 工作区。
控制成本
诊断设置收集的数据可能会产生费用。 成本取决于你选择的目标和收集的数据量。 有关详细信息,请参阅 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 字符的新资源。 如果字符位于资源组中,可以将资源移动到新组。
非活动资源
当资源处于不活动状态并导出零值指标时,诊断设置导出机制会以增量方式进行退避,以避免导出和存储零值所带来的不必要成本。 这种退让可能会导致下一个非零值的导出延迟。 此行为仅适用于导出的指标,不会影响基于指标的警报或自动缩放。
当资源处于非活动状态一小时后,导出机制的频率会降低到每 15 分钟一次。 这意味着导出下一个非零值可能会有长达 15 分钟的延迟。 处于非活动状态七天后,会达到两小时的最大退避时间。 一旦资源开始导出非零值,导出机制就会恢复到原来的三分钟导出延迟。
Application Insights 的重复数据
基于工作区的 Application Insights 应用程序的诊断设置收集与 Application Insights 本身相同的数据。 如果目标与应用程序使用的 Log Analytics 工作区相同,则会导致收集重复的数据。 为 Application Insights 创建诊断设置,将数据发送到其他 Log Analytics 工作区或其他目标。