你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

监视 Azure 队列存储

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

Monitor 概述

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

说明是 Azure Monitor?

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

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

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

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

监视数据

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

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

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

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

收集和路由

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

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

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

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

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

目标限制

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

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

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

  • 不能设置保留策略。

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

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

分析指标

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

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

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

在 Azure 门户中访问指标的屏幕截图

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

在 Azure 门户中访问包含维度的指标的屏幕截图

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

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

  • Microsoft.Storage/storageAccounts
  • Microsoft.Storage/storageAccounts/queueServices

分析日志


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

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

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

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

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

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

记录经过身份验证的请求

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

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

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

记录匿名请求

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

  • 成功的请求
  • 服务器错误
  • 客户端和服务器的超时错误
  • GET 请求失败,出现错误代码 304 (Not Modified)

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

示例 Kusto 查询

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

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

重要

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

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

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

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

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

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

    StorageQueueLogs
    | 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
    
  • 创建最近三天内使用的操作的饼图。

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

警报

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

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

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

常见问题解答

Azure 存储是否支持托管磁盘或非托管磁盘的指标?

不是。 计算实例支持磁盘上的指标。 有关详细信息,请参阅托管和非托管磁盘的每个磁盘指标

后续步骤

开始使用以下任一指南。

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