在 Azure Monitor 中创建诊断设置

在 Azure Monitor 中创建和编辑诊断设置,以将 Azure 平台指标和日志发送到不同的目标,例如 Azure Monitor 日志、Azure 存储或 Azure 事件中心。 可以使用不同的方法(例如 Azure 门户、Azure CLI、PowerShell 和 Azure 资源管理器)来处理诊断设置。

重要

在“诊断设置”中设置的保留策略现已弃用,不能再使用。 使用 Azure 存储生命周期策略管理日志保留的时间长度。 有关详细信息,请参阅将诊断设置存储保留迁移到 Azure 存储生命周期管理

Azure CLI 中使用 az monitor diagnostic-settings create 命令来创建诊断设置。 有关参数说明,请参阅此命令的文档。

重要

不能对活动日志使用此方法。 请改为按使用资源管理器模板在 Azure Monitor 中创建诊断设置中的说明创建资源管理器模板并使用 Azure CLI 进行部署。

以下示例命令使用所有三个目标创建诊断设置。 语法会因你的客户端而稍有不同。

若要指定特定于资源的模式(如果服务支持该模式),请添加值为 trueexport-to-resource-specific 参数。

az monitor diagnostic-settings create  \
--name KeyVault-Diagnostics \
--resource /subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.KeyVault/vaults/mykeyvault \
--logs    '[{"category": "AuditEvent","enabled": true}]' \
--metrics '[{"category": "AllMetrics","enabled": true}]' \
--storage-account /subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.Storage/storageAccounts/<storage account name> \
--workspace /subscriptions/<subscription ID>/resourcegroups/<resource group name>/providers/microsoft.operationalinsights/workspaces/<log analytics workspace name> \
--event-hub-rule /subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.EventHub/namespaces/<event hub namespace>/authorizationrules/RootManageSharedAccessKey \
--event-hub <event hub name> \
--export-to-resource-specific true

疑难解答

下面提供了一些故障排除提示。

指标类别不受支持

部署诊断设置时,你会收到类似于“不支持指标类别‘xxxx’”的错误消息。即使之前的部署成功,也可能会遇到此错误。

此问题发生在使用资源管理器模板、REST API、CLI 或 Azure PowerShell 时。 通过 Azure 门户创建的诊断设置不受影响,因为仅显示受支持的类别名称。

出现该问题的原因是基础 API 最近发生了更改。 除“AllMetrics”以外的指标类别都不受支持,并且除了一些特定的 Azure 服务之外从未支持过。 过去,部署诊断设置时,将忽略其他类别名称。 Azure Monitor 后端将这些类别重定向到了“AllMetrics”。 从 2021 年 2 月开始,对后端进行了更新,以明确确认提供的指标类别是否准确。 此更改可能导致某些部署失败。

如果收到此错误,请更新部署,将任何指标类别名称替换为“AllMetrics”以解决此问题。 如果部署之前添加了多个类别,则只保留具有“AllMetrics”引用的类别。 如果仍出现此问题,请通过 Azure 门户联系 Azure 支持。

由于 resourceID 中包含非 ASCII 字符,设置消失

诊断设置不支持具有非 ASCII 字符的资源 ID。 以“Preproducción”一词为例。由于无法重命名 Azure 中的资源,唯一的选择是创建不包含非 ASCII 字符的新资源。 如果这些字符在一个资源组中,可以将其下的资源移到新的资源组。 否则,你需要重新创建该资源。

数据重复或丢失的可能性

会尽一切努力确保所有日志数据都正确发送到你的目标,但不可能保证终结点之间 100% 的日志数据传输。 已建立重试和其他机制来解决这些问题,并尝试确保日志数据到达终结点。

非活动资源

当资源处于不活动状态并导出零值指标时,诊断设置导出机制会以增量方式进行退避,以避免导出和存储零值所带来的不必要成本。 退避可能会导致下一个非零值的导出延迟。

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

此行为仅适用于导出的指标,不会影响基于指标的警报或自动缩放。

后续步骤