从诊断设置存储保留迁移到 Azure 存储生命周期管理

诊断设置的存储保留功能已弃用。 此功能的所有保留功能已于 2025 年 9 月 30 日在所有环境中禁用。

本文逐步讲解如何从使用诊断设置存储保留迁移到使用 Azure 存储生命周期管理 进行保留。

对于发送到 Log Analytics 工作区的日志,会在工作区的“”页上为每个表设置保留期。 有关详细信息,请参阅在 Log Analytics 工作区中管理数据保留

Prerequisites

若要完成此迁移,需要:

  • 将日志发送到Azure 存储帐户的现有诊断设置。
  • 存储帐户参与者角色或授予目标存储帐户权限的Microsoft.Storage/storageAccounts/managementPolicies/*等效角色。

迁移到 Azure 存储生命周期管理策略

诊断设置存储保留功能已于 2025 年 9 月 30 日停止应用保留,因此在诊断设置上保留的任何保留值不再有任何影响。 通过完成以下步骤,使用Azure 存储生命周期管理策略在存储帐户上重新创建该保留行为。

更改保留设置时,请记住以下行为:

Note

  • 更改保留设置时,新设置仅适用于更改后引入的新日志。 现有日志受以前的保留设置约束。
  • 删除诊断设置不会删除存储帐户中的日志。 保留设置继续应用于在删除诊断设置之前创建的日志。

检查是否存在使用存储账户的诊断设置

以下Azure CLI示例使用az monitor diagnostic-settings list命令。 它使用 --resource 参数列出资源上的诊断设置。

# Set variables
resourceId="<ResourceId>"

# List the diagnostic settings on the resource
az monitor diagnostic-settings list --resource "$resourceId"

输出显示诊断设置是否将数据发送到存储帐户。 例如:

[
  {
    "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-001/providers/microsoft.insights/datacollectionrules/dcr-east2/providers/microsoft.insights/diagnosticSettings/dsetting-1",
    "logs": [
      {
        "categoryGroup": "allLogs",
        "enabled": true,
        "retentionPolicy": {
          "days": 0,
          "enabled": false
        }
      }
    ],
    "metrics": [
      {
        "category": "AllMetrics",
        "enabled": false,
        "retentionPolicy": {
          "days": 0,
          "enabled": false
        }
      }
    ],
    "name": "dsetting-1",
    "resourceGroup": "rg-001",
    "storageAccountId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-DCR/providers/Microsoft.Storage/storageAccounts/logs001",
    "type": "Microsoft.Insights/diagnosticSettings"
  }
]

创建生命周期管理策略

选择Azure CLI、Bicep或 ARM 模板来创建策略。 由于诊断设置存储保留已于 2025 年 9 月 30 日禁用,因此诊断设置上保留的任何保留值不再适用,因此无需将其重置为 0

以下Azure CLI示例使用az storage account management-policy create命令。 它通过使用 --policy 参数引用本地策略定义文件来创建生命周期管理策略。

# Set variables
storageAccountName="<StorageAccountName>"
resourceGroupName="<ResourceGroupName>"
policyFilePath="<PolicyDefinitionFilePath>"

# Create the lifecycle management policy
az storage account management-policy create \
  --account-name "$storageAccountName" \
  --resource-group "$resourceGroupName" \
  --policy "@$policyFilePath"

以下示例策略定义为该订阅中的容器 insights-activity-logs 内的所有 blob 设置保留期限。 有关详细信息,请参阅生命周期管理策略定义

{
  "rules": [
    {
      "enabled": true,
      "name": "Subscription level lifecycle rule",
      "type": "Lifecycle",
      "definition": {
        "actions": {
          "baseBlob": {
            "delete": {
              "daysAfterModificationGreaterThan": 120
            }
          }
        },
        "filters": {
          "blobTypes": [
            "appendBlob"
          ],
          "prefixMatch": [
            "insights-activity-logs/ResourceId=/SUBSCRIPTIONS/<SubscriptionId>"
          ]
        }
      }
    }
  ]
}

验证生命周期管理策略

以下Azure CLI示例使用az storage account management-policy show命令。 它使用 --account-name 参数确认存储帐户上存在策略。

# Set variables
storageAccountName="<StorageAccountName>"
resourceGroupName="<ResourceGroupName>"

# Show the lifecycle management policy
az storage account management-policy show \
  --account-name "$storageAccountName" \
  --resource-group "$resourceGroupName"

输出显示策略规则,包括用于以天为单位设置保留期限的 daysAfterModificationGreaterThan 值。