2017-06-12 4 views
1

いくつかのファイルを保存するために紺碧ブロブストレージを使用しています。Azureブロブサービスメトリック:特定のブロブのダウンロード数を取得する

紺碧のブロブストレージに保存されている特定のブロブについて、のダウンロード数をダウンロードします。

どうすればよいですか?

現在、私はTotalEgressを見ていますが、TotalEgressはTotalのblobstorageサービスのダウンロードされたファイルサイズのみを提供するため、十分ではありません。

おそらく、1つのブロブあたりの出力が存在するか、それとも類似したものでしょうか?

これに関する助力?

答えて

1

私が知る限り、BLOBストレージはダウンロード数を直ちに取得することをサポートしていません。

この要件についてfeedbackを追加することをお勧めします。

ここに2つの回避策があります。

1.クライアント側。

アプリケーションを作成すると、ダウンロード数をカウントできます。

ユーザがダウンロードボタンをクリックした場合、ダウンロード数(blobファイルのマテリアルに保存することができます)を計算して計算します。

注意:紺碧のブロブには公開と個人の許可があります。ブロブが公開されている場合は、URLからブロブを直接ダウンロードすることができます。だから、私はあなたがプライベートにBLOBのアクセス許可を設定しようとすることができますお勧めします。これを行うことにより、ダウンロード回数tが正しい。

2.サーバー側。あなたはAzureストレージアカウントの診断ブロブのログを有効にした場合

は、私の知る限りでは、それはブロブの各読み取り/書き込み/削除操作をログに記録します。

これらの操作を読み取ることにより、私はあなたがAzureブロブストレージに保存されている与えられたブロブのダウンロード(のGetBlob操作)回数を得ることができると思います。

これらのログは$ logコンテナに格納されています。

注意:ストレージ・ログは、サイズ制限(20TB)および日付限界(MAX 365)を有しています。ですから、ログを検索するにはtimertrigger webjobを実行してみることをお勧めします。 このWebジョブでは、AzureストレージSDKのCloudAnalyticsClientを使用してログを取得し、番号とスキャンした日付をファイルのメタデータに格納できます。 timertriggerのwebjobを実行するたびに、あなただけの最後にスキャン日からコンテキストを検索する必要があります。(この回避策は、いくつかの遅延を有することができる。)ログレコードを取得するために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

関連する問題