监视生命周期管理策略的执行

可以使用事件、指标和日志监视 Azure Blob 存储生命周期管理策略。 可以通过订阅事件来确定生命周期管理运行何时完成。 可以使用事件属性来识别问题,然后使用指标和日志诊断这些问题。

运行完成后接收通知

若要在生命周期管理运行完成后收到通知,请订阅该 LifecyclePolicyCompleted 事件。 执行生命周期管理策略中定义的操作时,将生成此事件。 策略定义中包含的每个操作都会显示摘要部分。 以下 json 显示了策略的示例 LifecyclePolicyCompleted 事件。 delete、tierToCool、tierToCold 和 tierToArchive 操作将显示摘要部分。 以下 JSON 显示了事件通知的示例。

{
    "topic": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/contosoresourcegroup/providers/Microsoft.Storage/storageAccounts/contosostorageaccount",
    "subject": "BlobDataManagement/LifeCycleManagement/SummaryReport",
    "eventType": "Microsoft.Storage.LifecyclePolicyCompleted",
    "eventTime": "2022-05-26T00:00:40.1880331",    
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "data": {
          "scheduleTime": "2022/05/24 22:57:29.3260160",
        "policyRunSummary": { 
            "completionStatus": "Completed/CompletedWithError/Incomplete" 
        },
        "deleteSummary": {
            "totalObjectsCount": 5,
            "successCount": 3,
            "errorList": ["testFile4.txt", "testFile5.txt"]
        },
        "tierToCoolSummary": {
            "totalObjectsCount": 0,
            "successCount": 0,
            "errorList": ""
        },
        "tierToColdSummary": {
            "totalObjectsCount": 0,
            "successCount": 0,
            "errorList": ""
        },
        "tierToArchiveSummary": {
            "totalObjectsCount": 0,
            "successCount": 0,
            "errorList": ""
        }
    },
    "dataVersion": "1",
    "metadataVersion": "1"
}

若要详细了解订阅事件的不同方式,请参阅 Azure 事件网格中的事件处理程序。

使用指标和日志调查错误

上一部分的事件响应示例显示生命周期管理策略尝试删除五个对象,但只成功删除了其中三个对象。 testFile4.txt和testFile5.txt文件在那次运行中未成功删除。 若要诊断某些对象未成功处理的原因,可以使用 Azure Monitor 中的指标资源管理器和查询资源日志。

指标

若要确切确定操作失败的时间,请使用指标浏览器。 你可以看到在 scheduleTime 和 eventTime 值之间的时间范围内,账户进行的所有事务,这些事务都显示在 LifecyclePolicyCompleted 属性中。

使用以下度量标准过滤器筛选仅由该策略执行的事务:

过滤器 操作员 价值
交易记录类型 平等 system
API 名称 平等 DeleteBlob
响应类型 不等于 Success

下图显示了查询和查询结果的示例。 查询结果中显示的折线图显示这些作失败的时间。

屏幕截图展示应用的指标以确定删除操作失败。

日志

若要了解策略未成功处理对象的原因,可以查看资源日志。 将日志缩小到失败的时间范围。 然后,查看 UserAgentHeader 字段设置为 ObjectLifeCycleScanner 或 OLCMScanner 的条目。 如果将诊断设置配置为将日志发送到 Azure Monitor Log Analytics 工作区,则可以使用 Kusto 查询来查找这些日志条目。 若要详细了解如何配置诊断设置,可阅读 Monitor Blob Storage。

以下示例查询查找由生命周期管理策略启动的失败删除操作的日志条目。

StorageBlobLogs
| where OperationName contains "DeleteBlob" and UserAgentHeader contains "ObjectLifeCycleScanner"
| project TimeGenerated, StatusCode, StatusText

StatusCode 和 StatusText 指示导致失败的原因。 下图显示了该查询的输出。 这两个日志条目都显示 LeaseIdMissing 的 StatusText 值。 这意味着,这两个对象都有一个活动租约,必须在操作成功之前中断或释放。

显示 kusto 查询和查询结果的屏幕截图,其中显示了删除对象的尝试失败。

另请参阅