Azure 儲存體分析記錄
儲存體分析會記錄對儲存體服務之成功和失敗要求的詳細資訊。 這項資訊可用來監視個別要求,並診斷儲存體服務的問題。 系統會以最佳方式來記錄要求。 這表示大部分要求都會產生記錄檔記錄,但不保證儲存體分析記錄的完整性和時效性。
注意
我們建議您在 Azure 監視器中使用 Azure 儲存體記錄,而不是儲存體分析記錄。 若要深入瞭解,請參閱以下任一篇文章:
根據預設,儲存體帳戶不會啟用儲存體分析記錄功能。 您可以在 Azure 入口網站 中或使用 PowerShell 或 Azure CLI 來啟用此功能。 如需逐步指引,請參閱啟用和管理 Azure 儲存體分析記錄 (傳統)。
您也可以利用程式設計方式,透過 REST API 或用戶端程式庫來啟用儲存體分析記錄。 使用取得 Blob 服務屬性 \(部分機器翻譯\)、取得佇列服務屬性 \(部分機器翻譯\) 及取得資料表服務屬性 \(部分機器翻譯\) 作業,為每個服務啟用儲存體分析。 若要查看使用 .NET 啟用儲存體分析記錄的範例,請參閱啟用記錄
只有在對服務端點提出要求時,才會建立記錄項目。 例如,如果儲存體帳戶在其 Blob 端點中有活動,而不是在其資料表或佇列端點中,則只會建立關於 Blob 服務的記錄。
注意
儲存體分析記錄目前僅適用於 Blob、佇列及表格服務, 儲存體分析記錄也適用於進階效能 BlockBlobStorage 帳戶。 不過,其不適用於使用進階效能的一般用途 v2 帳戶。
記錄中記錄的要求
記錄驗證要求
系統會記錄下列類型的驗證要求:
成功的要求
失敗的要求,包括逾時、節流、網路、授權和其他錯誤
使用共用存取簽章 (SAS) 或 OAuth 的要求,包括失敗和成功的要求
分析資料的要求
系統不會記錄儲存體分析本身所提出的要求 (例如,記錄檔的建立或刪除)。 記錄資料的完整清單記錄於儲存體分析記錄作業和狀態訊息及儲存體分析記錄檔格式主題中。
記錄匿名要求
系統將記錄下列類型的匿名要求:
成功的要求
伺服器錯誤
用戶端與伺服器的逾時錯誤
失敗的 GET 要求,錯誤碼為 304 (未修改)
系統不會記錄所有其他失敗的匿名要求。 記錄資料的完整清單記錄於儲存體分析記錄作業和狀態訊息及儲存體分析記錄檔格式主題中。
注意
儲存體分析會記錄對資料平面發出的所有內部呼叫。 也會記錄來自 Azure 儲存體資源提供者的呼叫。 若要識別這些要求,請在要求 URL 中尋找查詢字串 <sk=system-1>
。
記錄的儲存方式
所有記錄都會儲存在容器 $logs
的區塊 Blob 中,此容器會在啟用儲存體帳戶的儲存體分析時自動建立。 $logs
容器位於儲存體帳戶的 Blob 命名空間中,例如:http://<accountname>.blob.core.windows.net/$logs
。 一旦啟用儲存體分析之後便無法刪除此容器,不過您可以刪除其內容。 如果您使用儲存體瀏覽工具來直接瀏覽容器,則會看見包含記錄資料的所有 Blob。
注意
$logs
容器不會在執行容器列示作業時顯示,例如「列出容器」作業。 您必須直接存取它。 例如,您可以使用「列出 Blob」方法來存取 $logs
容器中的 Blob。
記錄要求時,儲存體分析將會以區塊形式上傳中繼結果。 儲存體分析會定期認可這些區塊,並提供它們做為 Blob。 因為儲存體服務清空記錄寫入器的頻率,記錄資料最多可能需要一小時才會顯示在 $logs 容器的 Blob 中。 在同一個小時內建立的記錄可能會有重複的記錄。 您可以藉由檢查 RequestId 和 Operation 數字來判斷記錄是否重複。
如果您每小時有大量的記錄資料 (具有多個檔案),則可以使用 Blob 中繼資料,藉由檢查 Blob 中繼資料欄位來判斷記錄所包含的資料。 這也很有用,因為在資料寫入記錄檔時,有時會發生延遲:Blob 中繼資料可提供比 Blob 名稱更精確的 Blob 內容指示。
大多數儲存體瀏覽工具可讓您檢視 Blob 的中繼資料;您可也以使用 PowerShell 或以程式設計方式讀取此資訊。 下列 PowerShell 程式碼片段示範如何依名稱篩選記錄 Blob 的清單來指定時間,以及如何依中繼資料進行篩選以識別包含寫入作業的那些記錄。
Get-AzStorageBlob -Container '$logs' |
Where-Object {
$_.Name -match 'blob/2014/05/21/05' -and
$_.ICloudBlob.Metadata.LogType -match 'write'
} |
ForEach-Object {
"{0} {1} {2} {3}" -f $_.Name,
$_.ICloudBlob.Metadata.StartTime,
$_.ICloudBlob.Metadata.EndTime,
$_.ICloudBlob.Metadata.LogType
}
如需以程式設計方式列出 Blob 的詳細資訊,請參閱列舉 Blob 資源 \(部分機器翻譯\) 及設定和擷取 Blob 資源的屬性和中繼資料 \(部分機器翻譯\)。
記錄檔命名慣例
每個記錄檔的寫入格式如下:
<service-name>/YYYY/MM/DD/hhmm/<counter>.log
下表描述記錄檔名稱中的每個屬性:
屬性 | 描述 |
---|---|
<service-name> |
儲存體服務的名稱。 例如:blob 、table 或 queue |
YYYY |
記錄檔的四位數年份。 例如:2011 |
MM |
記錄檔的兩位數月份。 例如:07 |
DD |
記錄檔的兩位數日期。 例如:31 |
hh |
表示記錄檔開始小時的二位數字 (24 小時制國際標準時間格式)。 例如:18 |
mm |
表示記錄檔開始分鐘的二位數字。 注意:目前的儲存體分析版本不支援此值,其值一律為 00 。 |
<counter> |
以零起始的六位數計數器,表示在一小時內針對儲存體服務產生的記錄檔 Blob 數目。 此計數器會從 000000 開始。 例如:000001 |
以下是結合上述範例的完整範例記錄檔名稱:
blob/2011/07/31/1800/000001.log
以下是可用來存取上述記錄檔的範例 URI:
https://<accountname>.blob.core.windows.net/$logs/blob/2011/07/31/1800/000001.log
記錄儲存體要求時,產生的記錄檔名稱會與完成所要求之作業的小時相互關聯。 例如,如果 GetBlob 要求於 2011/7/31 下午 6:30 完成,記錄檔寫入時會包含下列前置詞:blob/2011/07/31/1800/
記錄中繼資料
所有的記錄檔 Blob 都會與中繼資料一同儲存,可用來識別 Blob 包含哪些記錄資料。 下表描述每個中繼資料屬性:
屬性 | 描述 |
---|---|
LogType |
描述記錄檔是否包含關於讀取、寫入或刪除作業的資訊。 此值可包含一個類型或是所有這三種類型的組合 (以逗號分隔)。 範例 1: write 範例 2: read,write 範例 3: read,write,delete |
StartTime |
記錄檔項目的最早記錄時間,格式為 YYYY-MM-DDThh:mm:ssZ 。 例如:2011-07-31T18:21:46Z |
EndTime |
記錄檔項目的最晚記錄時間,格式為 YYYY-MM-DDThh:mm:ssZ 。 例如:2011-07-31T18:22:09Z |
LogVersion |
記錄檔格式的版本。 |
下列清單顯示使用上述範例的完整範例中繼資料:
LogType=write
StartTime=2011-07-31T18:21:46Z
EndTime=2011-07-31T18:22:09Z
LogVersion=1.0
記錄項目
下列各節顯示每個支援的 Azure 儲存體服務所適用的範例記錄項目。
Blob 儲存體的範例記錄項目
2.0;2022-01-03T20:34:54.4617505Z;PutBlob;SASSuccess;201;7;7;sas;;logsamples;blob;https://logsamples.blob.core.windows.net/container1/1.txt?se=2022-02-02T20:34:54Z&sig=XXXXX&sp=rwl&sr=c&sv=2020-04-08&timeout=901;"/logsamples/container1/1.txt";xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx;0;172.16.0.0:53371;2019-12-12;654;13;337;0;13;"xxxxxxxxxxxxxxxxxxxxx==";"xxxxxxxxxxxxxxxxxxxxx==";""0x8D9CEF88004E296"";Monday, 03-Jan-22 20:34:54 GMT;;"Microsoft Azure Storage Explorer, 1.20.1, win32, azcopy-node, 2.0.0, win32, AzCopy/10.11.0 Azure-Storage/0.13 (go1.15; Windows_NT)";;"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx";;;;;;;;
Blob 記憶體的範例記錄專案 (已啟用 Data Lake Storage)
2.0;2022-01-04T22:50:56.0000775Z;RenamePathFile;Success;201;49;49;authenticated;logsamples;logsamples;blob;"https://logsamples.dfs.core.windows.net/my-container/myfileorig.png?mode=legacy";"/logsamples/my-container/myfilerenamed.png";xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx;0;172.16.0.0;2020-04-08;591;0;224;0;0;;;;Friday, 11-Jun-21 17:58:15 GMT;;"Microsoft Azure Storage Explorer, 1.19.1, win32 azsdk-js-storagedatalake/12.3.1 (NODE-VERSION v12.16.3; Windows_NT 10.0.22000)";;"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx";;;;;;;;
佇列儲存體的範例記錄項目
2.0;2022-01-03T20:35:04.6097590Z;PeekMessages;Success;200;5;5;authenticated;logsamples;logsamples;queue;https://logsamples.queue.core.windows.net/queue1/messages?numofmessages=32&peekonly=true&timeout=30;"/logsamples/queue1";xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx;0;172.16.0.0:53385;2020-04-08;536;0;232;62;0;;;;;;"Microsoft Azure Storage Explorer, 1.20.1, win32 azsdk-js-storagequeue/12.3.1 (NODE-VERSION v12.16.3; Windows_NT 10.0.22000)";;"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx";;;;;;;;
表格儲存體的範例記錄項目
1.0;2022-01-03T20:35:13.0719766Z;CreateTable;Success;204;30;30;authenticated;logsamples;logsamples;table;https://logsamples.table.core.windows.net/Tables;"/logsamples/Table1";xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx;0;172.16.0.0:53389;2018-03-28;601;22;339;0;22;;;;;;"Microsoft Azure Storage Explorer, 1.20.1, win32, Azure-Storage/2.10.3 (NODE-VERSION v12.16.3; Windows_NT 10.0.22000)";;"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"