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 アカウント ブレードで [診断設定 ] をクリックします。
[診断設定の ] ブレードで、[診断 オンにする] をクリックします。
を有効にする
診断設定 ブレードで、次の変更を行って診断ログを構成します。
を有効にする
名前には、診断ログ構成の値を入力します。
さまざまな方法でデータを格納/処理することを選択できます。
を選択して、Azure Storage アカウントにログを格納するためにストレージ アカウントにアーカイブ します。 このオプションは、後日バッチ処理されるデータをアーカイブする場合に使用します。 このオプションを選択した場合は、ログを保存する Azure Storage アカウントを指定する必要があります。
ストリームを選択して、ログデータをAzure Event Hubのイベントハブにストリーミングします。 ほとんどの場合、受信ログをリアルタイムで分析するダウンストリーム処理パイプラインがある場合は、このオプションを使用します。 このオプションを選択する場合は、使用する Azure Event Hub の詳細を指定する必要があります。
[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 アカウントで実行されている操作の詳細な内訳を示します。 たとえば、要求ログで 1 回のアップロード 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>"}
}
,
. . . .
]
}
要求ログ スキーマ
名前 | タイプ | 説明 |
---|---|---|
時間 | 糸 | ログのタイムスタンプ (UTC) |
リソースID | 糸 | 操作が行われたリソースの ID |
カテゴリ | 糸 | ログ カテゴリ。 Requestsなど。 |
操作名 | 糸 | ログに記録される操作の名前。 たとえば、getfilestatus です。 |
結果タイプ | 糸 | 操作の状態 (例: 200)。 |
発信者IPアドレス | 糸 | 要求を行っているクライアントの IP アドレス |
correlationId | 糸 | 関連するログ エントリのセットをグループ化するために使用できるログの ID |
アイデンティティ | オブジェクト | ログを生成した ID |
プロパティ | JSON | 詳細については、以下を参照してください。 |
要求ログのプロパティ スキーマ
名前 | タイプ | 説明 |
---|---|---|
HttpMethod | 糸 | 操作に使用される HTTP メソッド。 たとえば、GET です。 |
道 | 糸 | 操作が実行されたパス |
リクエストコンテンツ長 | int(整数) | HTTP 要求のコンテンツの長さ |
ClientRequestId | 糸 | この要求を一意に識別する ID |
開始時間 | 糸 | サーバーが要求を受信した時刻 |
終了時間 | 糸 | サーバーが応答を送信した時刻 |
ストア入口サイズ | Long | Data Lake Store にイングレスされたサイズ (バイト単位) |
StoreEgressSize | Long | データレイクストアから送信されるサイズ (バイト単位で) |
クエリパラメーター | 糸 | 説明: 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"}
}
,
. . . .
]
}
監査ログ スキーマ
名前 | タイプ | 説明 |
---|---|---|
時間 | 糸 | ログのタイムスタンプ (UTC) |
リソースID | 糸 | 操作が行われたリソースの ID |
カテゴリ | 糸 | ログ カテゴリ。 たとえば、監査。 |
操作名 | 糸 | ログに記録される操作の名前。 たとえば、getfilestatus です。 |
resultType | 糸 | 操作の状態 (例: 200)。 |
結果署名 | 糸 | 操作の詳細。 |
correlationId | 糸 | 関連するログ エントリのセットをグループ化するために使用できるログの ID |
アイデンティティ | オブジェクト | ログを生成した ID |
プロパティ | JSON | 詳細については、以下を参照してください。 |
監査ログのプロパティ スキーマ
名前 | タイプ | 説明 |
---|---|---|
StreamName | 糸 | 操作が実行されたパス |
ログ データを処理するサンプル
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にあります。