2017-08-15 76 views
2

我有一个应用程序,这将使SAS令牌注册用户上传,并直接从Azure存储下载。监视每个用户的带宽的最佳方式是什么?监测Azure存储带宽使用

我看了一下Azure提供的日志,看看事情,一种可能的方法是将SAS令牌绑定到用户的IP地址,然后检查日志中的<requester-ip-address>字段。但是,这种方式看起来并不那么具体,因为多个用户可能拥有相同的IP地址。

另外,我看到一个<request-id-header>字段,其​​根据该文件,是唯一地标识该请求的不透明值。但是,如果用户直接与Azure存储进行通信,我看不到任何获取标题值的方法。

谢谢。

回答

0

什么是监视我的每个用户的带宽的最佳方式?

根据我的经验,我们没有合适的方法来做到这一点。看来我们无法获得带宽值。如果担心Azure存储的limition,我们可以得到从蔚蓝的正式文件Azure Storage limitation

斑点每个存储帐户请求率上限:每秒2 20,000个请求的任何有效大小的斑点(由该帐户的入口/出口限制只为上限)

目标吞吐量为单个斑点最多60 MB每秒,或者高达每秒

更新500个请求:

我们可以根据Azure price calculator采取适当的策略来限制用户的成本。

enter image description here

General-purpose Storage Accounts例如,成本取决于存储数据和容量。如果我们想限制用户的成本。在我看来,我们可能会限制用户的尺寸*交易

  • 创建SAS令牌和关系用户

  • 获取从日志中request urirequest-content-length,我们也算对用户的请求

  • 使用逻辑控制尺寸*交易为用户。

关于Storage Analytics日志格式请参考azure document

其他相关链接:

Understanding Windows Azure Storage Billing – Bandwidth, Transactions, and Capacity

+0

感谢您的回复。我对我的应用程序的每个用户花费我多少钱感兴趣。因为Azure存储收取从服务器传出的数据的费用。 –

+0

如果我们想限制用户的成本,我们可以使用我们的逻辑来控制它。我已经更新了答案。 –

+0

主要成本将是带宽,我们正在努力跟踪这一点。 [带宽带Azure计算器](https://azure.microsoft.com/en-us/pricing/calculator/?service=bandwidth)。 –

1

一种不同的方法可以是:

  • 使用复制的Blob API:建立与用户的用户名的临时文件,并生成一个SAS令牌用户下载文件
  • 在SAS令牌到期后删除文件
  • 检查存储帐户中的分析日志;是否访问blob,以及下载是否成功,如果没有下载字节
  • 如果用户未能下载整个blob;您将在日志中看到SASNetworkError
  • 发生SASNetworkError;该日志将包含用户下载的数据量(https://docs.microsoft.com/en-us/rest/api/storageservices/storage-analytics-log-formatresponse-packet-size)。这会告诉你在错误发生之前完成的下载的百分比。
+0

谢谢,我没有这样想过。但是如果文件很大,这会导致开销,用户在文件准备好之前必须等待一段时间? –

+0

如果您在帐户内复制,它可能相对较快(通常是瞬间的)。但是,如果数据太大,我不会使用复制Blob API,只按照最初计划的方式使用原始文件进行下载。 – sguler

+0

但是使用原始文件进行下载,我们无法可靠地跟踪用户的带宽? –