排查存储资源日志问题
Azure 存储资源日志将记录在存储帐户中执行的每个操作,以及这些操作的结果。 这些日志提供有关所发出的每个请求的详细信息,而不提供指标所显示操作的分钟级汇总。 使用日志记录信息,你可以检查对存储帐户发出的请求的性质,以及这些请求是否成功。
在本单元中,你将了解 Azure Monitor 中的 Azure 存储资源日志。 你将了解日志中捕获的不同类型的信息,以及如何使用这些信息来检测应用程序使用 Azure 存储时可能发生的问题。
Azure Monitor 中的资源日志
有时,需要查看有关存储事务的更多详细信息,而不是与性能相关的指标。 指标非常适用于跟踪性能或需求的总体趋势,但监视事务指标无法显示请求的 URL。 此外,没有任何可用的存储指标可以提供与特定请求相关的错误消息。
Azure Monitor 中的资源日志会捕获此类详细信息,它们可用于检查特定请求背后的详细信息。 例如,如果想知道有多少针对特定资源的请求已经过身份验证,或者是匿名、成功或失败的,可以使用这些日志。
要收集资源日志,必须创建诊断设置。 资源日志将列出存储帐户成功和失败的请求。 根据特定存储服务(Azure Blob 存储、表存储或队列存储),请求被记录为读取、写入或删除操作。 通过使用诊断设置,可以将日志路由到 Log Analytics、存储帐户、将日志流式传输到事件中心或合作伙伴解决方案。
可以使用资源日志来查看请求的不同类型和频率,或者对失败的请求进行故障排除。 日志仅在事务发生时针对特定服务终结点生成。 因此,如果在 Blob 和队列存储终结点中使用存储,但仅 Blob 存储终结点有请求或事务,则系统将仅为 Blob 存储创建日志。
启用日志记录时,将记录以下类型的请求:
- 对请求进行身份验证
- 匿名的请求
- 成功的请求
- 失败的请求,例如超时、限制、网络和授权错误
- 服务器错误
- 使用共享访问签名的请求,无论失败还是成功
- 客户端和服务器的超时错误
- 分析数据请求
- GET 请求,错误代码为 304(“未修改”)
Azure Monitor 中资源日志的存储
系统会自动为存储帐户生成资源日志,但除非你将这些日志发送到目标,否则将无法查看这些日志。 你可以使用诊断设置指定发送它们的位置。
创建诊断设置时,选择希望为其路由日志的存储类型(例如:Blob 存储或文件存储)。 然后,选择要在日志中显示的操作类型(例如:读取、写入或删除操作)。 最后,选择要发送日志的位置。 可以将日志发送到以下任何位置:
Log Analytics
存储帐户
事件中心
合作伙伴解决方案
你可以使用 Azure Monitor 日志查询来访问发送到 Log Analytics 工作区的日志。
如果将日志路由到存储帐户,则这些日志显示为存储到容器的 Blob。 数据作为按行分隔的 JSON 有效负载进行收集并存储在单个 blob 中。 Blob 的名称遵循以下命名约定:
https://<destination-storage-account>.blob.core.windows.net/insights-logs-<storage-operation>/resourceId=/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<source-storage-account>/blobServices/default/y=<year>/m=<month>/d=<day>/h=<hour>/m=<minute>/PT1H.json
发送到事件中心的日志不会存储为文件,但你可以通过在 Azure 门户中打开事件中心,然后检查传入的消息计数,来验证事件中心是否收到了日志信息。
可以将平台指标和日志发送给某些 Azure Monitor 合作伙伴。 必须先将合作伙伴集成安装到你的订阅中。 配置选项因合作伙伴而异。
无法为日志数据设置保留策略。 如果将日志发送到 Log Analytics,可以在工作区级别管理数据保留期,甚至可以按数据类型指定不同的保留设置。 如果将日志存档到存储帐户,可以通过定义生命周期管理策略来管理日志容器的保留策略。