监控每个用户的azure存储带宽使用情况

时间:2017-08-15 11:15:13

标签: azure azure-storage azure-storage-blobs

我有一个应用程序可以让注册用户使用SAS令牌直接从Azure存储上传和下载。监控每个用户的带宽的最佳方法是什么?

我查看了Azure提供的日志,并查看了一些内容,一种可能的方法是将SAS令牌绑定到用户的IP地址,然后检查{{1}的日志}字段。但是,这种方式看起来并不那么具体,因为多个用户可能拥有相同的IP地址。

另外,我看到一个<requester-ip-address>字段,根据文档,它是一个唯一标识请求的不透明值。但是,如果用户直接与azure存储通信,我就看不到任何获取标头值的方法。

感谢。

2 个答案:

答案 0 :(得分:1)

另一种方法可能是:

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

答案 1 :(得分:0)

  

监控每个用户的带宽的最佳方法是什么?

根据我的经验,我们没有合适的方法来做到这一点。似乎我们无法获得带宽值。如果您担心天蓝色存储的限制,我们可以从天蓝色的官方文档中获取Azure Storage limitation

  

每个存储帐户的最大请求率 Blob:每秒20,000个请求,适用于任何有效大小的blob(仅限帐户的入口/出口限制)

     

单个blob的目标吞吐量每秒最多60 MB,或每秒最多500个请求

更新:

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

enter image description here

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

  • 为SAS令牌和用户创建关系

  • 从日志中获取request urirequest-content-length,我们还会计算用户请求

  • 使用逻辑来控制用户的尺寸*交易

关于存储分析日志格式请参阅azure document

其他相关链接:

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