存取 Azure Data Lake Storage Gen1 的診斷記錄
了解如何啟用 Azure Data Lake Storage Gen1 帳戶的診斷記錄,以及如何檢視針對您帳戶收集的記錄。
組織可以為其 Azure Data Lake Storage Gen1 帳戶啟用診斷記錄,以收集資料存取稽核記錄,這些記錄提供的資訊包括存取資料的使用者清單、資料的存取頻率、帳戶中儲存的資料量等等。啟用診斷記錄時,系統會以最大努力記錄診斷和/或要求。 只有在對服務端點提出要求時,才會建立要求和診斷記錄項目。
必要條件
- Azure 訂用帳戶。 請參閱取得 Azure 免費試用。
- Azure Data Lake Storage Gen1 帳戶。 請遵循透過 Azure 入口網站開始使用 Azure Data Lake Storage Gen1 的指示。
啟用 Data Lake Storage Gen1 帳戶的診斷記錄
登入新的 Azure 入口網站。
開啟 Data Lake Storage Gen1 帳戶,接著在 Data Lake Storage Gen1 帳戶刀鋒視窗中,按一下 [診斷設定]。
在 [診斷設定] 刀鋒視窗中,按一下 [開啟診斷]。
在 [診斷設定] 刀鋒視窗中,進行下列變更以設定診斷記錄。
針對 [名稱],輸入診斷記錄設定的值。
您可以選擇不同的資料儲存/處理方法。
選取 [封存至儲存體帳戶] 選項可將記錄儲存到 Azure 儲存體帳戶。 如果您想要保存資料以供日後批次處理,可以使用此選項。 如果您選取此選項,必須提供用來儲存記錄的 Azure 儲存體帳戶。
選取 [串流至事件中樞] 選項可將記錄資料串流到 Azure 事件中樞。 如果您有即時分析內送記錄的下游處理管線,很可能會使用這個選項。 如果您選取此選項,必須提供要使用的 Azure 事件中樞詳細資料。
選取 [傳送至 Log Analytics] 選項,使用 Azure 監視器服務來分析產生的記錄資料。 如果您選取此選項,必須提供要用來執行記錄分析的 Log Analytics 工作區詳細資料。 如需使用 Azure 監視器記錄的詳細資訊,請參閱檢視或分析使用 Azure 監視器記錄搜尋所收集的資料。
指定要取得稽核記錄、要求記錄或兩者。
指定的資料的保留天數。 只有在您使用 Azure 儲存體帳戶來封存記錄資料時,才適用保留期。
按一下 [檔案] 。
一旦您啟用了診斷設定,即可在 [診斷記錄] 索引標籤中查看記錄。
檢視 Data Lake Storage Gen1 帳戶的診斷記錄
檢視 Data Lake Storage Gen1 帳戶的記錄資料有兩種方式。
- 從 Data Lake Storage Gen1 帳戶設定檢視
- 從儲存資料的 Azure 儲存體帳戶
使用 Data Lake Storage Gen1 設定檢是
從 Data Lake Storage Gen1 帳戶的 [設定] 刀鋒視窗中,按一下 [診斷記錄]。
在 [診斷記錄] 刀鋒視窗中,您應該會看到依照 [稽核記錄] 和 [要求記錄] 分類的記錄。
- 要求記錄會擷取所有以 Data Lake Storage Gen1 帳戶提出的 API 要求。
- 稽核記錄與要求記錄相似,不過能針對以 Data Lake Storage Gen1 帳戶執行之作業提供更詳細的明細。 例如,要求記錄中的一個上傳 API 呼叫可能會致使稽核記錄出現多個「附加」作業。
若要下載記錄,請針對每個記錄項目按一下 [下載] 連結。
從包含記錄資料的 Azure 儲存體帳戶
開啟與與用於記錄的 Data Lake Storage Gen1 關聯的 Azure 儲存體帳戶刀鋒視窗,然後按一下 [Blob]。 [Blob 服務] 刀鋒視窗會列出兩個容器。
- 容器 insights-logs-audit 包含稽核記錄。
- 容器 insights-logs-requests 包含要求記錄。
在這些容器中,記錄會儲存在下列結構底下。
例如,稽核記錄檔的完整路徑可能是
https://adllogs.blob.core.windows.net/insights-logs-audit/resourceId=/SUBSCRIPTIONS/<sub-id>/RESOURCEGROUPS/myresourcegroup/PROVIDERS/MICROSOFT.DATALAKESTORE/ACCOUNTS/mydatalakestorage/y=2016/m=07/d=18/h=04/m=00/PT1H.json
同樣的,要求記錄檔的完整路徑可能是
https://adllogs.blob.core.windows.net/insights-logs-requests/resourceId=/SUBSCRIPTIONS/<sub-id>/RESOURCEGROUPS/myresourcegroup/PROVIDERS/MICROSOFT.DATALAKESTORE/ACCOUNTS/mydatalakestorage/y=2016/m=07/d=18/h=14/m=00/PT1H.json
了解記錄資料的結構
稽核和要求記錄採用 JSON 格式。 在本節中,我們要探討要求和稽核記錄的 JSON 結構。
要求記錄
以下是採用 JSON 格式之要求記錄中的範例項目。 每個 Blob 會一個名為 記錄 的根物件,其中包含記錄檔物件的陣列。
{
"records":
[
. . . .
,
{
"time": "2016-07-07T21:02:53.456Z",
"resourceId": "/SUBSCRIPTIONS/<subscription_id>/RESOURCEGROUPS/<resource_group_name>/PROVIDERS/MICROSOFT.DATALAKESTORE/ACCOUNTS/<data_lake_storage_gen1_account_name>",
"category": "Requests",
"operationName": "GETCustomerIngressEgress",
"resultType": "200",
"callerIpAddress": "::ffff:1.1.1.1",
"correlationId": "4a11c709-05f5-417c-a98d-6e81b3e29c58",
"identity": "1808bd5f-62af-45f4-89d8-03c5e81bac30",
"properties": {"HttpMethod":"GET","Path":"/webhdfs/v1/Samples/Outputs/Drivers.csv","RequestContentLength":0,"StoreIngressSize":0 ,"StoreEgressSize":4096,"ClientRequestId":"3b7adbd9-3519-4f28-a61c-bd89506163b8","StartTime":"2016-07-07T21:02:52.472Z","EndTime":"2016-07-07T21:02:53.456Z","QueryParameters":"api-version=<version>&op=<operationName>"}
}
,
. . . .
]
}
要求記錄的結構描述
名稱 | 類型 | 描述 |
---|---|---|
time | String | 記錄的時間戳記 (UTC 時間) |
resourceId | String | 作業發生之資源的識別碼 |
category | String | 記錄類別。 例如, 要求。 |
operationName | String | 記錄的作業名稱。 例如,getfilestatus。 |
resultType | String | 作業的狀態。例如,200。 |
callerIpAddress | String | 提出要求之用戶端的 IP 位址 |
correlationId | String | 用來將一組相關記錄項目分組在一起的記錄識別碼 |
身分識別 | Object | 產生記錄的身分識別 |
properties | JSON | 如需詳細資料,請參閱下文 |
要求記錄屬性結構描述
名稱 | 類型 | 描述 |
---|---|---|
HttpMethod | String | 作業使用的 HTTP 方法。 例如,GET。 |
路徑 | String | 執行作業的所在路徑 |
RequestContentLength | int | HTTP 要求的內容長度 |
ClientRequestId | String | 可唯一識別此要求的識別碼 |
StartTime | String | 伺服器接收到要求的時間 |
EndTime | String | 伺服器傳送回應的時間 |
StoreIngressSize | long | 輸入至 Data Lake Store 的位元組大小 |
StoreEgressSize | long | 從 Data Lake Store 輸出的位元組大小 |
QueryParameters | String | 描述:這些是 http 查詢參數。 範例 1:api-version=2014-01-01&op=getfilestatus 範例 2:op=APPEND&append=true&syncFlag=DATA&filesessionid=bee3355a-4925-4435-bb4d-ceea52811aeb&leaseid=bee3355a-4925-4435-bb4d-ceea52811aeb&offset=28313319&api-version=2017-08-01 |
稽核記錄
以下是採用 JSON 格式之稽核記錄中的範例項目。 每個 Blob 會一個名為 記錄 的根物件,其中包含記錄檔物件的陣列
{
"records":
[
. . . .
,
{
"time": "2016-07-08T19:08:59.359Z",
"resourceId": "/SUBSCRIPTIONS/<subscription_id>/RESOURCEGROUPS/<resource_group_name>/PROVIDERS/MICROSOFT.DATALAKESTORE/ACCOUNTS/<data_lake_storage_gen1_account_name>",
"category": "Audit",
"operationName": "SeOpenStream",
"resultType": "0",
"resultSignature": "0",
"correlationId": "381110fc03534e1cb99ec52376ceebdf;Append_BrEKAmg;25.66.9.145",
"identity": "A9DAFFAF-FFEE-4BB5-A4A0-1B6CBBF24355",
"properties": {"StreamName":"adl://<data_lake_storage_gen1_account_name>.azuredatalakestore.net/logs.csv"}
}
,
. . . .
]
}
稽核記錄檔結構描述
名稱 | 類型 | 描述 |
---|---|---|
time | String | 記錄的時間戳記 (UTC 時間) |
resourceId | String | 作業發生之資源的識別碼 |
category | String | 記錄類別。 例如, 稽核。 |
operationName | String | 記錄的作業名稱。 例如,getfilestatus。 |
resultType | String | 作業的狀態。例如,200。 |
resultSignature | String | 作業的其他詳細資料。 |
correlationId | String | 用來將一組相關記錄項目分組在一起的記錄識別碼 |
身分識別 | Object | 產生記錄的身分識別 |
properties | JSON | 如需詳細資料,請參閱下文 |
稽核記錄屬性結構描述
名稱 | 類型 | 描述 |
---|---|---|
StreamName | String | 執行作業的所在路徑 |
處理記錄資料的範例
將記錄從 Azure Data Lake Storage Gen1 傳送至 Azure 監視器記錄時 (如需使用 Azure 監視器記錄的詳細資料,請參閱檢視或分析以 Azure 監視器記錄搜尋所收集的資料),下列查詢將會傳回資料表,其中包含使用者顯示名稱清單、事件時間,以及事件時間與視覺化圖表的事件計數。 您可以輕鬆地進行修改,以顯示使用者 GUID 或其他屬性:
search *
| where ( Type == "AzureDiagnostics" )
| summarize count(TimeGenerated) by identity_s, TimeGenerated
Azure Data Lake Storage Gen1 會提供有關如何處理和分析記錄資料的範例。 您可以在 https://github.com/Azure/AzureDataLake/tree/master/Samples/AzureDiagnosticsSample 找到範例。