监视 Azure Blob 存储

如果你有依赖 Azure 资源的关键应用程序和业务流程,则需要监视这些资源的可用性、性能和操作。 本文介绍 Azure Blob 存储生成的监视数据,以及如何使用 Azure Monitor 的各种功能分析这些数据的相关警报。

Azure 门户中的监视概述页面

每种 Blob 存储资源的 Azure 门户“概述”页都包含资源使用情况(例如请求和每小时计费)的简要视图。 这些信息非常有用,但只提供少量监视数据。 创建资源后,其中的某些数据会自动收集,并可供分析。 你可以使用某些配置启用其他数据收集类型。

说明是 Azure Monitor?

Azure Blob 存储使用 Azure Monitor 来创建监视数据,Azure Monitor 是 Azure 中的一项完整堆栈监视服务。 Azure Monitor 提供了一整套用于监视 Azure 资源以及其他云和本地资源的功能。

可先阅读文章使用 Azure Monitor 监视 Azure 资源,其中介绍了以下内容:

  • 说明是 Azure Monitor?
  • 与监视相关的成本
  • 监视 Azure 中收集的数据
  • 配置数据收集
  • Azure 中用于分析监视数据并就其发出警报的标准工具

本文中的以下各部分将介绍从 Azure 存储收集的特定数据。 其中的示例演示了如何配置数据收集并通过 Azure 工具分析这些数据。

监视数据

Azure Blob 存储会收集与其他 Azure 资源类型相同的监视数据,如监视 Azure 资源中的数据中所述。

有关 Azure Blob 存储创建的指标和日志指标的详细信息,请参阅 Azure Blob 存储监视数据参考

Azure Monitor 中的指标和日志仅支持 Azure 资源管理器存储帐户。 Azure Monitor 不支持经典存储帐户。 如果要使用经典存储帐户上的指标或日志,则需要迁移到 Azure 资源管理器存储帐户。 有关详细信息,请参阅迁移到 Azure 资源管理器

如果需要,可以继续使用经典指标和日志。 实际上,经典指标和日志可与 Azure Monitor 中的指标和日志同时使用。 在 Azure 存储终止旧指标和日志的服务之前,支持范围保持不变。

收集和路由

平台指标和活动日志会自动收集和存储,但你可以使用诊断设置将其路由到其他位置。

在创建诊断设置并将其路由到一个或多个位置之前,不会收集和存储资源日志。

若要收集资源日志,必须创建诊断设置。 创建设置时,选择“blob”作为要为其启用日志的存储类型。 然后,指定需要收集日志的以下操作类别之一。

类别 说明
StorageRead 对象上的读取操作。
StorageWrite 对象上的写入操作。
StorageDelete 对象上的删除操作。

使用审核资源日志类别组时,可以收集 Microsoft 认为审核你的资源所需的资源日志基线。 收集的内容是动态的,Microsoft 可能会随着新的资源日志类别的推出而更改它。 如果选择审核类别组,则无法指定任何其他资源类别,因为系统将决定要收集哪些日志。 有关详细信息,请参阅 Azure Monitor 中的诊断设置:资源日志

注意

Data Lake Storage Gen2 不会显示为存储类型。 这是因为 Data Lake Storage Gen2 是适用于 Blob 存储的一组功能。

有关使用 Azure 门户、CLI 和 PowerShell 创建诊断设置的详细过程,请参阅创建诊断设置以收集 Azure 中的平台日志和指标。 还可以找到有关如何使用 Azure 资源管理器模板或 Azure Policy 定义来创建诊断设置的信息的链接。

目标限制

有关一般目标限制,请参阅目标限制。 以下限制仅适用于监视 Azure 存储帐户。

  • 无法将日志发送到使用此设置监视的同一存储帐户。

    这将导致出现递归日志,其中某个日志条目描述的是另一个日志条目的写入。 必须创建帐户或使用其他现有帐户来存储日志信息。

  • 不能设置保留策略。

    如果将日志存档到存储帐户,可以通过定义生命周期管理策略来管理日志容器的保留策略。 要了解如何操作,请参阅通过自动执行 Azure Blob 存储访问层来优化成本

    如果将日志发送到 Log Analytics,可以在工作区级别管理 Log Analytics 的数据保留期,甚至可以按数据类型指定不同的保留设置。 若要了解如何操作,请参阅更改数据保留期

分析指标

有关所有 Azure Monitor 支持指标(包括 Azure Blob 存储)的列表,请参阅 Azure Monitor 支持的指标

你可以使用指标资源管理器通过其他 Azure 服务中的指标分析 Azure 存储的指标。 从 Azure Monitor 菜单中选择“指标”,可打开指标资源管理器 。 有关使用此工具的详细信息,请参阅使用 Azure Monitor 指标资源管理器分析指标

以下示例演示了如何查看帐户级别的事务。

Screenshot of accessing metrics in the Azure portal

对于支持维度的指标,可使用所需的维度值筛选指标。 以下示例演示了如何通过选择“API 名称”维度的值,在特定操作上查看帐户级别的“事务” 。

Screenshot of accessing metrics with dimension in the Azure portal

有关 Azure 存储支持的维度的完整列表,请参阅指标维度

Azure Blob 存储的指标位于以下命名空间:

  • Microsoft.Storage/storageAccounts
  • Microsoft.Storage/storageAccounts/blobServices

分析日志

你可将资源日志作为存储帐户中的 Blob、作为事件数据或通过 Log Analytics 查询进行访问。 有关如何查找这些日志的信息,请参阅 Azure 资源日志

Azure Monitor 中的所有资源日志都具有后跟服务特定字段的相同字段。 Azure Monitor 资源日志架构概述了常见架构。 Azure Blob 存储资源日志的架构位于 Azure Blob 存储监视数据参考中。

若要获取记录的 SMB 和 REST 操作列表,请参阅存储记录的操作和状态消息

仅在针对服务终结点发出请求时才会创建日志条目。 例如,如果存储帐户的文件终结点中存在活动,而表或队列终结点中没有该活动,则仅创建与 Azure Blob 存储服务有关的日志。 Azure 存储日志包含有关成功和失败的存储服务请求的详细信息。 可以使用该信息监视各个请求和诊断存储服务问题。 将最大程度地记录请求。

活动日志是位于 Azure 中的一种平台日志,可用于深入了解订阅级别的事件。 你可以单独查看它或将它路由到 Azure Monitor 日志,然后便可以在其中使用 Log Analytics 执行复杂得多的查询。

在 Azure 门户中查看存储帐户时,也会记录门户调用的操作。 由于此原因,即使尚未将任何数据写入帐户,也可能会看到存储帐户中记录的操作。

记录经过身份验证的请求

将记录以下类型的经过身份验证的请求:

  • 成功的请求
  • 失败的请求,包括超时、限制、网络、授权和其他错误
  • 使用共享访问签名 (SAS) 或 OAuth 的请求,包括失败和成功的请求
  • 对分析数据($logs 容器中的经典日志数据和 $metric 表中的类指标数据)的请求

不会记录 Blob 存储服务本身发出的请求,如创建或删除日志。 若要查看所记录数据的完整列表,请参阅存储记录的操作和状态消息存储日志格式

注意

Azure Monitor 当前筛选出了描述 "insights-logs-" 容器中的活动的日志。 可以使用存储分析(经典日志)跟踪该容器中的活动。

记录匿名请求

记录以下类型的匿名请求:

  • 成功的请求
  • 服务器错误
  • 客户端和服务器的超时错误
  • 失败的 GET 请求,错误代码为 304(未修改)

不会记录所有其他失败的匿名请求。 若要查看所记录数据的完整列表,请参阅存储记录的操作和状态消息存储日志格式

示例 Kusto 查询

如果将日志发送到 Log Analytics,则可以使用 Azure Monitor 日志查询访问这些日志。 有关详细信息,请参阅 Log Analytics 教程

你可在“日志搜索”栏中输入下面这些查询,以帮助监视 Blob 存储。 这些查询使用新语言

重要

从存储帐户资源组菜单中选择“日志”时,会打开 Log Analytics 并将查询范围设置为当前资源组。 这意味着日志查询只包含来自该资源组的数据。 如果要运行的查询包含来自他资源或其他 Azure 服务的数据,请从“Azure Monitor”菜单中选择“日志”。 有关详细信息,请参阅 Azure Monitor Log Analytics 中的日志查询范围和时间范围

使用以下查询可帮助你监视 Azure 存储帐户:

  • 列出最近三天内 10 个最常见的错误。

    StorageBlobLogs
    | where TimeGenerated > ago(3d) and StatusText !contains "Success"
    | summarize count() by StatusText
    | top 10 by count_ desc
    
  • 列出最近三天内导致大部分错误的前 10 个操作。

    StorageBlobLogs
    | where TimeGenerated > ago(3d) and StatusText !contains "Success"
    | summarize count() by OperationName
    | top 10 by count_ desc
    
  • 列出最近三天内端到端延迟最长的前 10 个操作。

    StorageBlobLogs
    | where TimeGenerated > ago(3d)
    | top 10 by DurationMs desc
    | project TimeGenerated, OperationName, DurationMs, ServerLatencyMs, ClientLatencyMs = DurationMs - ServerLatencyMs
    
  • 列出最近三天内导致服务器端限制错误的所有操作。

    StorageBlobLogs
    | where TimeGenerated > ago(3d) and StatusText contains "ServerBusy"
    | project TimeGenerated, OperationName, StatusCode, StatusText
    
  • 列出最近三天内使用匿名访问的所有请求。

    StorageBlobLogs
    | where TimeGenerated > ago(3d) and AuthenticationType == "Anonymous"
    | project TimeGenerated, OperationName, AuthenticationType, Uri
    
  • 创建最近三天内使用的操作的饼图。

    StorageBlobLogs
    | where TimeGenerated > ago(3d)
    | summarize count() by OperationName
    | sort by count_ desc
    | render piechart
    

警报

在监视数据中发现重要情况时,Azure Monitor 警报会主动通知你。 有了警报,你就可以在客户注意到你的系统中的问题之前确定和解决它们。 可以在指标日志活动日志上设置警报。

下表列出了一些要监视的示例场景和用于警报的适当指标:

场景 用于警报的指标
Blob 存储服务受到限制。 指标:Transactions
维度名称:响应类型
Blob 存储请求的成功率为 99%。 指标:可用性
维度名称:地理位置类型、API 名称、身份验证
一天内的 Blob 存储流出量已超过 500 GiB。 指标:流出量
维度名称:地理位置类型、API 名称、身份验证

功能支持

启用 Data Lake Storage Gen2、网络文件系统 (NFS) 3.0 协议或 SSH 文件传输协议 (SFTP) 可能会影响对此功能的支持。 如果已启用这些功能中的某一项,请参阅 Azure 存储帐户中的 Blob 存储功能支持,以评估对此功能的支持。

常见问题 (FAQ)

请参阅指标和日志常见问题解答

后续步骤

开始使用以下任一指南。

指南 说明
从 Azure Blob 存储容器中收集指标 创建显示指标的图表(包含分步指南)。
对 Azure 存储进行监视、诊断以及故障排除 排查存储帐户问题(包含分步指南)。
使用 Azure Monitor 存储见解监视存储 存储性能、容量和可用性的统一视图
有关监视 Azure Blob 存储的最佳做法 有关常见监视和故障排除方案的指南。
使用 Azure Monitor 指标资源管理器分析指标 指标资源管理器导览。
Azure Monitor 中的 Log Analytics 概述 Log Analytics 导览。
Azure Monitor 指标概述 指标和指标维度的基础知识
Azure Monitor 日志概览 日志的基础知识以及如何收集和分析日志
转换到 Azure Monitor 中的指标 从存储分析指标移动到 Azure Monitor 中的指标。
Azure Blob 存储监视数据参考 Azure Blob 存储创建的日志和指标的参考
排查性能问题 常见性能问题和有关如何对其进行故障排除的指导。
排查可用性问题 常见可用性问题和有关如何对其进行故障排除的指导。
排查客户端应用程序错误 连接客户端以及如何对其进行故障排除的常见问题。