gpt4 book ai didi

c# - Azure Blob 服务指标 : get download count for a given blob

转载 作者:行者123 更新时间:2023-12-05 04:10:24 24 4
gpt4 key购买 nike

我正在使用 azure blob 存储来存储一些文件。

我想检索存储在 Azure Blob 存储中的给定 Blob 的下载计数

我该怎么做?

目前,我正在查看 TotalEgress,但这还不够,因为 TotalEgress 只能为您提供 Total 中 Blob 存储服务的下载文件大小。

也许每个 blob 都存在一个导出,或者类似的东西......?

对此有什么帮助吗?

最佳答案

据我所知,blob存储目前不支持直接获取下载计数。

我建议您可以添加feedback关于这个要求。

这里有两个解决方法:

1.在客户端。

您可以尝试通过创建应用程序来统计下载次数。

如果用户点击下载按钮或其他东西,获取下载计数(您可以将其存储到blob文件matadata中)并计算。

注意:azure blob 具有公共(public)和私有(private)权限。如果 blob 是公开的,我们可以直接从 URL 下载 blob。所以我建议你可以尝试将 blob 权限设置为私有(private)。通过这样做,下载计数 t 的数量是正确的。

2.在服务器端。

据我所知,如果启用Azure存储帐户的诊断Blob日志,它将记录Blob的每个读/写/删除操作。

通过阅读这些操作,我认为您可以获得存储在 azure blob 存储中的给定 blob 的下载(getblob 操作)计数。

这些日志存储在 $log 容器中。

注意:存储日志有​​大小限制(20TB)和日期限制(MAX 365)。所以我建议你可以尝试运行 timertrigger webjob来搜索日志。在此网络作业中,您可以使用azure storage SDK的CloudAnalyticsClient来获取日志并将数字和扫描日期存储在文件元数据中。每次运行计时器触发网络作业时,您只需从上次扫描日期搜索上下文即可。(此解决方法可能会有一些延迟。)

更多关于如何使用CloudAnalyticsClient获取日志记录的详细信息,您可以引用下面的代码示例:

CloudStorageAccount storageAccount = CloudStorageAccount.Parse("");

CloudAnalyticsClient c1 = storageAccount.CreateCloudAnalyticsClient();

DateTimeOffset starttime = DateTime.Now.AddHours(-6);
DateTimeOffset endtime = DateTime.Now;


var r1 = c1.ListLogRecords(Microsoft.WindowsAzure.Storage.Shared.Protocol.StorageService.Blob, starttime, endtime).ToList();
if (r1 != null)
{

Console.WriteLine("Start");
}
int i = 0;
foreach (var item in r1)
{

if (item.RequestUrl.ToString().Contains("Penjs.png(your file name)"))
{
Console.WriteLine(string.Format("AuthenticationType : {0} , ClientRequestId : {1} , ReferrerHeader : {2} , RequestUrl : {3} , RequestStatus : {4} , HttpStatusCode : {5} , OperationType : {6}", item.AuthenticationType, item.ClientRequestId, item.ReferrerHeader, item.RequestUrl, item.RequestStatus, item.HttpStatusCode, item.OperationType));
Console.WriteLine("----------------------------------");
}
//count the get blob number
if (item.RequestUrl.ToString().Contains("Penjs.png") && item.OperationType == "GetBlob" && item.RequestStatus =="Success")
{
i++;
}

}

Console.WriteLine("Get/Dowanload blob time : " + i);

Console.WriteLine("Complete");

结果:

enter image description here

关于c# - Azure Blob 服务指标 : get download count for a given blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44499296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com