Azure Data Lake Storage Gen1 の診断ログへのアクセス
Azure Data Lake Storage Gen1 アカウントの診断ログを有効にする方法、およびそのアカウント用に収集されたログを表示する方法について説明します。
組織は、データにアクセスしているユーザーの一覧、データがアクセスされる頻度、アカウントに格納されているデータの量などの情報を提供するデータ アクセスの監査証跡を収集するために、Azure Data Lake Storage Gen1 アカウントの診断ログを有効にすることができます。有効にすると、診断および/または要求が、ベストエフォートでログに記録されます。 要求と診断の両方のログ エントリが作成されるのは、サービス エンドポイントに対して行われた要求がある場合に限られます。
前提条件
- Azure サブスクリプション。 Azure 無料試用版の取得に関するページを参照してください。
- Azure Data Lake Storage Gen1 アカウント。 「Azure portal で Azure Data Lake Storage Gen1 の使用を開始する」の手順に従ってください。
Data Lake Storage Gen1 アカウントの診断ログを有効にする
新しい Azure Portal にサインオンします。
Data Lake Storage Gen1 アカウントを開き、Data Lake Storage Gen1 アカウント ブレードから [診断設定] をクリックします。
[診断設定] ブレードで、 [診断を有効にする] をクリックします。
[診断設定] ブレードで、診断ログの構成を次のように変更します。
[名前] には、診断ログ構成の値を入力します。
さまざまな方法でデータを格納および処理することができます。
[Archive to a storage account (ストレージ アカウントへのアーカイブ)] オプションを選択して、Azure ストレージ アカウントにログを保存します。 後日バッチ処理するデータをアーカイブする場合は、このオプションを使用します。 このオプションを選択する場合は、ログの保存先の Azure ストレージ アカウントを指定する必要があります。
[Stream to an event hub (イベント ハブへのストリーム)] オプションを選択して、Azure Event Hub にログ データをストリーミングします。 リアルタイムで受信したログを分析するためのダウン ストリーム処理パイプラインがある場合は、ほとんどの場合、このオプションを使用します。 このオプションを選択する場合、使用する Azure Event Hub の詳細を指定する必要があります。
[Send to Log Analytics (Log Analytics に送信)] オプションを選択して、Azure Monitor サービスを使用して、生成されたログ データを分析します。 このオプションを選択する場合は、ログ分析を実行する際に使用する Log Analytics ワークスペースの詳細情報を指定する必要があります。 Azure Monitor ログの使用についての詳細は、「Azure Monitor のログ検索で収集されたデータの表示または分析」をご覧ください。
監査ログ、要求ログ、またはその両方のいずれを取得するかを指定します。
データを保持する日数を指定します。 リテンション期間は、Azure ストレージ アカウントを使用してログ データをアーカイブする場合のみ適用されます。
[保存] をクリックします。
診断設定を有効にしたら、 [診断ログ] タブでログを確認できます。
Data Lake Storage Gen1 アカウントの診断ログを表示する
Data Lake Storage Gen1 アカウントのログ データを表示するには、2 つの方法があります。
- Data Lake Storage Gen1 アカウントの [設定] ビューから
- データが格納されている Azure Storage アカウントから
Data Lake Storage Gen1 の [設定] ビューの使用
Data Lake Storage Gen1 アカウントの [設定] ブレードから、 [診断ログ] をクリックします。
[診断ログ] ブレードには、監査ログと要求ログによって分類されたログが表示されます。
- 要求ログは、Data Lake Storage Gen1 アカウントで作成されたすべての API 要求をキャプチャします。
- 監査ログは要求ログに似ていますが、Data Lake Storage Gen1 アカウントで実行されている操作のさらに詳細な内訳を提供します。 たとえば、要求ログでは単一のアップロードの API 呼び出しが、監査ログでは複数の "追加" 操作になる可能性があります。
ログをダウンロードするには、各ログ エントリに対する [ダウンロード] リンクをクリックします。
ログ データを含む Azure Storage アカウントから
ログ記録用に Data Lake Storage Gen1 に関連付けられている [Azure Storage アカウント] ブレードを開き、[BLOB] をクリックします。 [Blob service] ブレードに 2 つのコンテナーが一覧表示されます。
- コンテナー 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 には、ログ オブジェクトの配列を含む、 レコード と呼ばれるルート オブジェクトが 1 つあります。
{
"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 | 操作が行われたリソースの ID |
category | String | ログのカテゴリ。 Requestsなど。 |
operationName | String | ログに記録される操作の名前。 getfilestatus など。 |
resultType | String | 操作の状態。200 など。 |
callerIpAddress | String | 要求を行うクライアントの IP アドレス |
correlationId | String | 関連するログ エントリのセットをグループ化するために使用できる、ログの ID |
identity | Object | ログを生成した ID |
properties | JSON | 詳細については、以下をご覧ください。 |
要求ログのプロパティのスキーマ
名前 | 型 | 説明 |
---|---|---|
HttpMethod | String | 操作に使用される HTTP メソッド。 GET など。 |
Path | String | 操作が実行されたパス |
RequestContentLength | INT | HTTP 要求のコンテンツの長さ |
ClientRequestId | String | この要求を一意に識別する ID |
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 には、ログ オブジェクトの配列を含む、 レコード と呼ばれるルート オブジェクトが 1 つあります。
{
"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 | 操作が行われたリソースの ID |
category | String | ログのカテゴリ。 Auditなど。 |
operationName | String | ログに記録される操作の名前。 getfilestatus など。 |
resultType | String | 操作の状態。200 など。 |
resultSignature | String | 操作に関する追加情報。 |
correlationId | String | 関連するログ エントリのセットをグループ化するために使用できる、ログの ID |
identity | Object | ログを生成した ID |
properties | JSON | 詳細については、以下をご覧ください。 |
監査ログのプロパティのスキーマ
名前 | 型 | 説明 |
---|---|---|
StreamName | String | 操作が実行されたパス |
ログ データ処理のサンプル
Azure Data Lake Storage Gen1 から Azure Monitor ログにログを送信すると (Azure Monitor ログの使用の詳細については、「Azure Monitor ログ検索で収集されたデータの表示または分析」を参照)、次のクエリによってユーザーの表示名、イベントの時刻、およびイベントの時刻でのイベント数の一覧を含むテーブルがビジュアル グラフと共に返されます。 これに変更を加えて、ユーザーの 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 でサンプルを見つけることができます。