如何监控Azure Storage Account对象复制状态

Azure 存储帐户对象复制是一项强大的功能,可帮助组织优化其数据管理并在多个存储帐户之间维护一致的数据副本。通过将特定对象从一个存储帐户复制到另一个存储帐户,使用户能够有效地分发数据,确保高可用性并最大限度地减少延迟。

如何监控Azure Storage Account对象复制状态_监控

存储账户的对象复制是通过异步复制的方式在源和目标账户之间复制块Blob对象。因为数据时异步复制的,所以源账户和目标账户之间的数据不会立即同步。此时,如何检查数据是否同步也就是检查复制状态就变得比较重要。所以在接下来的内容中,我们会介绍可用于检查和监视存储帐户的对象复制状态的不同方法

使用Azure Portal

可以通过Azure Portal检查源账户中Blob的复制状态,具体操作如下:

在Azure Portal中,找到源存储账户,点击Blob,找到被复制的Blob容器:

如何监控Azure Storage Account对象复制状态_对象复制_02

进入Blob容器,选择对应的文件:

如何监控Azure Storage Account对象复制状态_监控_03

在概述页面,可以看到复制状态信息。如果 blob 已成功复制,会在“对象复制”部分中看到状态设置为“完成”。还列出了复制策略 ID 和控制此容器的对象复制的规则的  

如何监控Azure Storage Account对象复制状态_存储_04

 

使用诊断日志

除了使用Azure Portal以外,还可以使用Log Analytics工作区来查询和监视多个存储账户Blob对象的复制状态,具体操作如下:

首先,需要在目标存储账户上对Blob启用Azure日志分析:

如何监控Azure Storage Account对象复制状态_监控_05

配置好以后,可以通过如下Kusto查询,来查询存储账户对象复制的复制状态:

StorageBlobLogs | where OperationName == "CopyBlob" | where StatusCode in (200,201,202) | where UserAgentHeader contains "ObjectReplication"

  • 操作名称为 Copy Blob
  • 要筛选成功的复制操作,可以检查状态代码 200-202;要筛选失败的复制操作,可以按 StatusCode > 400 进行筛选
  • UserAgentHeader 将包含 ObjectReplication

查询复制成功:

StorageBlobLogs | where OperationName == "CopyBlob" | where StatusCode in (200,201,202) | where UserAgentHeader contains "ObjectReplication"

如何监控Azure Storage Account对象复制状态_监控_06

查询复制失败:

StorageBlobLogs | where OperationName == "CopyBlob" | where toint(StatusCode) > 400 | where UserAgentHeader contains "ObjectReplication"

如何监控Azure Storage Account对象复制状态_对象复制_07

对于需要自动化告警的小伙伴,可以通过上面的查询语句创建Azure Alert,来帮助监控对象复制的复制状态