如何找到 Azure 存储帐户上的热 LRS 写入操作的来源?
How can I find the source of my Hot LRS Write Operations on Azure Storage Account?
我们正在使用 Azure 存储帐户来存储一些文件,这些文件应由我们的应用程序根据用户需求下载。
即使不应该有写入操作(至少 none 我能想到),我们在计费周期的几天内超出了包含的写入操作(见图)。
关于价格,还是在限制范围内,但我还是想知道这是否正常,如何分析。除了我们使用的存储
- 函数和
- 应用服务(移动应用)
但其中 none 应该会导致那么多写入操作。我检查了我们函数的日志,none 那些访问队列或 blob 的日志最近一直处于活动状态。有一些功能 运行 偶尔会出现,但每隔几分钟才出现一次,而且这些功能根本不访问存储。
我不知道这是否相关,但我们的 blob 存储有一种周期性的侵入(见下图)。周期为 1 小时左右,但基线为每 5 分钟 100 kB。
进一步分析存储帐户的指标,我发现 blob 每小时有 1.90k 个事务,队列每小时有 1.3k 个事务,这对我来说似乎很特别。 (请注意,此图的分辨率为1小时,而前者的分辨率为5分钟)
我还能做些什么来分析写操作来自哪里?这有点困扰我,因为它似乎不应该是那样的。
查找有关存储使用情况的信息的最佳位置是使用 Storage Analytics
especially Storage Analytics Logging
。
同一存储帐户中有一个名为 $logs
的特殊 blob 容器,其中包含针对该存储帐户执行的每个操作的详细信息。您可以查看该 blob 容器中的 blob 并查找信息。
如果您在存储帐户中没有看到此 blob 容器,则需要在存储帐户上启用存储分析。但是考虑到您可以看到指标数据,我猜它已经启用了。
关于这些写入操作的来源,您是否为您的功能和应用服务启用了诊断?这些将诊断日志写入 blob 存储。此外,存储分析也在写入同一个帐户,这也会导致这些写入操作。
我遇到了完全相同的问题;在启用存储分析并检查 $logs
容器后,我发现许多日志条目表明,在对我的 Azure Functions 发出每个请求时,这些写入操作针对以下容器对象发生:
在我的 Azure Functions 代码中,我没有明确写入任何容器或文件,但我配置了以下两个应用程序设置:
- AzureWebJobsDashboard
- AzureWebJobsStorage
所以我在 Azure 中填写了一个支持代码,其中包含以下问题:
- 写入操作是由这些应用程序设置触发的吗?我
相信是这样,但请您确认一下。
- 如果删除这些应用程序设置,写操作会停止吗?
- 您能否概括地描述这些操作在什么上下文中发生(例如日志记录?资源锁定,其他?)
我分别从 Azure 支持团队得到以下答复:
- 是的,你是对的。根据日志信息,我们可以看到“https://[function-name].blob.core.windows.net:443/azure-webjobs-hosts/locks/linkfunctions/host?comp=lease”。
这个
azure-webjobs-hosts
文件夹与函数应用相关联,它是默认创建的,也是创建函数应用的。当function app为运行时,它会将这些日志记录在配置为AzureWebJobsStorage
. 的存储账户中
- 您无法停止写入操作,因为这些操作会将必要的日志记录到 Azure Functions 运行时使用的存储帐户中。请不要删除应用程序设置
AzureWebJobsStorage
。 Azure Functions 运行时将此存储帐户连接字符串用于除 HTTP 触发函数之外的所有函数。删除此应用程序设置将导致您的函数应用程序无法启动。顺便说一句,您可以删除 AzureWebJobsDashboard
它将停止 Monitor 而不是上面的操作。
- 这些操作是为了记录函数应用的运行日志。这些操作将在我们的后端为 运行 函数 app.
分配实例时发生
就我而言,我有一个 Azure App Insight,它每分钟在其存储中为功能和应用程序服务处理 10K 个事务,即使其中只有很少的 https 请求。我不确定是什么触发了它们,但是一旦我删除了应用洞察,一切都变得正常了。
我们正在使用 Azure 存储帐户来存储一些文件,这些文件应由我们的应用程序根据用户需求下载。
即使不应该有写入操作(至少 none 我能想到),我们在计费周期的几天内超出了包含的写入操作(见图)。
关于价格,还是在限制范围内,但我还是想知道这是否正常,如何分析。除了我们使用的存储
- 函数和
- 应用服务(移动应用)
但其中 none 应该会导致那么多写入操作。我检查了我们函数的日志,none 那些访问队列或 blob 的日志最近一直处于活动状态。有一些功能 运行 偶尔会出现,但每隔几分钟才出现一次,而且这些功能根本不访问存储。
我不知道这是否相关,但我们的 blob 存储有一种周期性的侵入(见下图)。周期为 1 小时左右,但基线为每 5 分钟 100 kB。
进一步分析存储帐户的指标,我发现 blob 每小时有 1.90k 个事务,队列每小时有 1.3k 个事务,这对我来说似乎很特别。 (请注意,此图的分辨率为1小时,而前者的分辨率为5分钟)
我还能做些什么来分析写操作来自哪里?这有点困扰我,因为它似乎不应该是那样的。
查找有关存储使用情况的信息的最佳位置是使用 Storage Analytics
especially Storage Analytics Logging
。
同一存储帐户中有一个名为 $logs
的特殊 blob 容器,其中包含针对该存储帐户执行的每个操作的详细信息。您可以查看该 blob 容器中的 blob 并查找信息。
如果您在存储帐户中没有看到此 blob 容器,则需要在存储帐户上启用存储分析。但是考虑到您可以看到指标数据,我猜它已经启用了。
关于这些写入操作的来源,您是否为您的功能和应用服务启用了诊断?这些将诊断日志写入 blob 存储。此外,存储分析也在写入同一个帐户,这也会导致这些写入操作。
我遇到了完全相同的问题;在启用存储分析并检查 $logs
容器后,我发现许多日志条目表明,在对我的 Azure Functions 发出每个请求时,这些写入操作针对以下容器对象发生:
在我的 Azure Functions 代码中,我没有明确写入任何容器或文件,但我配置了以下两个应用程序设置:
- AzureWebJobsDashboard
- AzureWebJobsStorage
所以我在 Azure 中填写了一个支持代码,其中包含以下问题:
- 写入操作是由这些应用程序设置触发的吗?我 相信是这样,但请您确认一下。
- 如果删除这些应用程序设置,写操作会停止吗?
- 您能否概括地描述这些操作在什么上下文中发生(例如日志记录?资源锁定,其他?)
我分别从 Azure 支持团队得到以下答复:
- 是的,你是对的。根据日志信息,我们可以看到“https://[function-name].blob.core.windows.net:443/azure-webjobs-hosts/locks/linkfunctions/host?comp=lease”。
这个
azure-webjobs-hosts
文件夹与函数应用相关联,它是默认创建的,也是创建函数应用的。当function app为运行时,它会将这些日志记录在配置为AzureWebJobsStorage
. 的存储账户中
- 您无法停止写入操作,因为这些操作会将必要的日志记录到 Azure Functions 运行时使用的存储帐户中。请不要删除应用程序设置
AzureWebJobsStorage
。 Azure Functions 运行时将此存储帐户连接字符串用于除 HTTP 触发函数之外的所有函数。删除此应用程序设置将导致您的函数应用程序无法启动。顺便说一句,您可以删除AzureWebJobsDashboard
它将停止 Monitor 而不是上面的操作。 - 这些操作是为了记录函数应用的运行日志。这些操作将在我们的后端为 运行 函数 app. 分配实例时发生
就我而言,我有一个 Azure App Insight,它每分钟在其存储中为功能和应用程序服务处理 10K 个事务,即使其中只有很少的 https 请求。我不确定是什么触发了它们,但是一旦我删除了应用洞察,一切都变得正常了。