Azure Storage Analytics ログを有効にして管理する (クラシック)
[アーティクル]
03/25/2023
6 人の共同作成者
フィードバック
この記事の内容
Azure Storage Analytics には、BLOB、キュー、テーブル用のログが用意されています。 Azure portal を使用して、アカウントに対してログが記録されるように構成できます。 この記事では、ログを有効にして管理する方法を示します。 メトリックを有効にする方法については、Azure Storage Analytics メトリックを有効にして管理する (クラシック) に関する記事を参照してください。 Azure portal で監視データを調査して格納するとコストがかかります。 詳細については、「Storage Analytics 」を参照してください。
Note
Microsoft では、Storage Analytics ログの代わりに、Azure Monitor の Azure Storage ログを使用することをお勧めしています。 以下のいずれかの記事をご覧ください。
ログの有効化
BLOB、テーブル、およびキューごとに、読み取り要求、書き込み要求、および削除要求の診断ログを保存するよう Azure Storage に指示できます。 設定したデータの保持ポリシーはこうしたログにも適用されます。
注意
現在、Azure Files では、Storage Analytics のメトリックはサポートされていますが、Storage Analytics のログ記録はサポートされていません。
Azure Portal で [ストレージ アカウント] を選択し、ストレージ アカウントの名前を選択して、ストレージ アカウント ブレードを開きます。
メニュー ブレードの [監視 (クラシック)] セクションで [診断設定 (クラシック)] を選択します。
[ステータス] を [オン] に設定して、ログを有効にするサービス を選択します。
ログを保持するには、必ず [データの削除] チェック ボックスをオンにします。 次に、チェック ボックスの下にあるスライダー コントロールを動かすか、スライダー コントロールの横にあるテキスト ボックスに表示される値を直接変更して、ログ データを保持する日数を設定します。 新しいストレージ アカウントの既定値は 7 日間です。 アイテム保持ポリシーを設定しない場合、[データの削除] チェック ボックスをオフのままにします。 保持ポリシーがない場合、ログ データを削除する責任はユーザーが負います。
警告
ログは、アカウントにデータとして格納されます。 ログ データは時間の経過と共にアカウントに蓄積されるため、ストレージのコストが増加するおそれがあります。 ログ データが必要なのが短期間のみである場合は、データ保持ポリシーを変更することでコストを削減できます。 古いログ データ (保持ポリシーよりも古いデータ) はシステムによって削除されます。 アカウントのログ データを保持する必要がある期間に基づいて、保持ポリシーを設定することをお勧めします。 詳細については、「Billing on storage metrics 」 (ストレージ メトリックへの課金) を参照してください。
[保存] をクリックします。
診断ログは、ストレージ アカウントの $logs という名前の BLOB コンテナーに保存されます。 ログ データを表示するには、Microsoft Azure Storage Explorer などのストレージ エクスプローラーを使用するか、プログラムによってストレージ クライアント ライブラリまたは PowerShell を使用します。
$Logs コンテナーへのアクセスについては、ストレージ分析ログ に関するページを参照してください。
注意
クラシック ストレージ アカウントの場合、$logs コンテナーは Azure Storage Explorerにのみ表示されます。 $logs コンテナーは、ストレージ ブラウザーや、Azure portal で使用できるコンテナー ビューからは表示されません。
Windows PowerShell コマンド ウィンドウを開きます。
Connect-AzAccount
コマンドを使用して Azure サブスクリプションにサインインし、画面上の指示に従います。
Connect-AzAccount
自分の ID が複数のサブスクリプションに関連付けられている場合は、アクティブなサブスクリプションを設定します。
$context = Get-AzSubscription -SubscriptionId <subscription-id>
Set-AzContext $context
<subscription-id>
プレースホルダーの値をサブスクリプションの ID に置き換えます。
使用するストレージ アカウントを定義するストレージ アカウント コンテキストを取得します。
$storageAccount = Get-AzStorageAccount -ResourceGroupName "<resource-group-name>" -AccountName "<storage-account-name>"
$ctx = $storageAccount.Context
Set-AzStorageServiceLoggingProperty を使用して現在のログ設定を変更します。 ストレージ ログを制御するコマンドレットでは、LoggingOperations パラメーターが使用されます。このパラメーターは文字列で、記録する要求の種類がコンマ区切り形式で含まれています。 指定できる要求の種類には、read 、write 、および delete の 3 つがあります。 ログをオフにするには、LoggingOperations パラメーターに none の値を指定します。
以下のコマンドでは、既定のストレージ アカウント内の Queue サービスで read、write、および delete の各要求に対するログがオンにされます。リテンション期間は 5 日間に設定されています。
Set-AzStorageServiceLoggingProperty -ServiceType Queue -LoggingOperations read,write,delete -RetentionDays 5 -Context $ctx
警告
ログは、アカウントにデータとして格納されます。 ログ データは時間の経過と共にアカウントに蓄積されるため、ストレージのコストが増加するおそれがあります。 ログ データが必要なのが短期間のみである場合は、データ保持ポリシーを変更することでコストを削減できます。 古いログ データ (保持ポリシーよりも古いデータ) はシステムによって削除されます。 アカウントのログ データを保持する必要がある期間に基づいて、保持ポリシーを設定することをお勧めします。 詳細については、「Billing on storage metrics 」 (ストレージ メトリックへの課金) を参照してください。
以下のコマンドでは、既定のストレージ アカウント内の Table サービスに対するログがオフにされます。
Set-AzStorageServiceLoggingProperty -ServiceType Table -LoggingOperations none -Context $ctx
Azure サブスクリプションを処理するように Azure PowerShell コマンドレットを構成する方法と、使用する既定のストレージ アカウントを選択する方法については、Azure PowerShell のインストールと構成の方法 に関する記事をご覧ください。
QueueServiceClient queueServiceClient = new QueueServiceClient(connectionString);
QueueServiceProperties serviceProperties = queueServiceClient.GetProperties().Value;
serviceProperties.Logging.Delete = true;
QueueRetentionPolicy retentionPolicy = new QueueRetentionPolicy();
retentionPolicy.Enabled = true;
retentionPolicy.Days = 2;
serviceProperties.Logging.RetentionPolicy = retentionPolicy;
serviceProperties.HourMetrics = null;
serviceProperties.MinuteMetrics = null;
serviceProperties.Cors = null;
queueServiceClient.SetProperties(serviceProperties);
var storageAccount = CloudStorageAccount.Parse(connStr);
var queueClient = storageAccount.CreateCloudQueueClient();
var serviceProperties = queueClient.GetServiceProperties();
serviceProperties.Logging.LoggingOperations = LoggingOperations.All;
serviceProperties.Logging.RetentionDays = 2;
queueClient.SetServiceProperties(serviceProperties);
ログ データ保持期間を変更する
ログ データは時間の経過と共にアカウントに蓄積されるため、ストレージのコストが増加するおそれがあります。 ログ データが必要なのが短期間のみである場合は、ログ データ保持期間を変更することでコストを削減できます。 たとえば、ログが 3 日間だけ必要な場合は、ログ データ保持期間を 3
の値に設定します。 これにより、ログは 3 日後にアカウントから自動的に削除されます。 このセクションでは、現在のログ データ保持期間を確認し、必要に応じてその期間を更新する方法について説明します。
Azure Portal で [ストレージ アカウント] を選択し、ストレージ アカウントの名前を選択して、ストレージ アカウント ブレードを開きます。
メニュー ブレードの [監視 (クラシック)] セクションで [診断設定 (クラシック)] を選択します。
[データの削除] チェック ボックスがオンになっていることを確認します。 次に、チェック ボックスの下にあるスライダー コントロールを動かすか、スライダー コントロールの横にあるテキスト ボックスに表示される値を直接変更して、ログ データを保持する日数を設定します。
新しいストレージ アカウントの既定の日数は 7 日間です。 アイテム保持ポリシーを設定しない場合、[データの削除] チェック ボックスをオフのままにします。 保有ポリシーがない場合、監視データを削除する責任はユーザーが負います。
[保存] をクリックします。
診断ログは、ストレージ アカウントの $logs という名前の BLOB コンテナーに保存されます。 ログ データを表示するには、Microsoft Azure Storage Explorer などのストレージ エクスプローラーを使用するか、プログラムによってストレージ クライアント ライブラリまたは PowerShell を使用します。
$Logs コンテナーへのアクセスについては、ストレージ分析ログ に関するページを参照してください。
Windows PowerShell コマンド ウィンドウを開きます。
Connect-AzAccount
コマンドを使用して Azure サブスクリプションにサインインし、画面上の指示に従います。
Connect-AzAccount
自分の ID が複数のサブスクリプションに関連付けられている場合は、アクティブなサブスクリプションを設定します。
$context = Get-AzSubscription -SubscriptionId <subscription-id>
Set-AzContext $context
<subscription-id>
プレースホルダーの値をサブスクリプションの ID に置き換えます。
ストレージ アカウントを定義するストレージ アカウント コンテキストを取得します。
$storageAccount = Get-AzStorageAccount -ResourceGroupName "<resource-group-name>" -AccountName "<storage-account-name>"
$ctx = $storageAccount.Context
Get-AzStorageServiceLoggingProperty を使用して現在のログ保持ポリシーを表示します。 次の例では、BLOB とキューのストレージ サービスの保持期間をコンソールに出力します。
Get-AzStorageServiceLoggingProperty -ServiceType Blob, Queue -Context $ctx
コンソール出力では、保持期間は RetentionDays
という列見出しの下に表示されます。
Set-AzStorageServiceLoggingProperty を使用して保持期間を変更します。 次の例では、保持期間を 4 日に変更します。
Set-AzStorageServiceLoggingProperty -ServiceType Blob, Queue -RetentionDays 4 -Context $ctx
Azure サブスクリプションを処理するように Azure PowerShell コマンドレットを構成する方法と、使用する既定のストレージ アカウントを選択する方法については、Azure PowerShell のインストールと構成の方法 に関する記事をご覧ください。
次の例では、BLOB とキューのストレージ サービスの保持期間をコンソールに出力します。
BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
QueueServiceClient queueServiceClient = new QueueServiceClient(connectionString);
BlobServiceProperties blobServiceProperties = blobServiceClient.GetProperties().Value;
QueueServiceProperties queueServiceProperties = queueServiceClient.GetProperties().Value;
Console.WriteLine("Retention period for logs from the blob service is: " +
blobServiceProperties.Logging.RetentionPolicy.Days.ToString());
Console.WriteLine("Retention period for logs from the queue service is: " +
queueServiceProperties.Logging.RetentionPolicy.Days.ToString());
次の例では、保持期間を 4 日に変更します。
BlobRetentionPolicy blobRetentionPolicy = new BlobRetentionPolicy();
blobRetentionPolicy.Enabled = true;
blobRetentionPolicy.Days = 4;
QueueRetentionPolicy queueRetentionPolicy = new QueueRetentionPolicy();
queueRetentionPolicy.Enabled = true;
queueRetentionPolicy.Days = 4;
blobServiceProperties.Logging.RetentionPolicy = blobRetentionPolicy;
blobServiceProperties.Cors = null;
queueServiceProperties.Logging.RetentionPolicy = queueRetentionPolicy;
queueServiceProperties.Cors = null;
blobServiceClient.SetProperties(blobServiceProperties);
queueServiceClient.SetProperties(queueServiceProperties);
Console.WriteLine("Retention policy for blobs and queues is updated");
次の例では、BLOB とキューのストレージ サービスの保持期間をコンソールに出力します。
var storageAccount = CloudStorageAccount.Parse(connectionString);
var blobClient = storageAccount.CreateCloudBlobClient();
var queueClient = storageAccount.CreateCloudQueueClient();
var blobserviceProperties = blobClient.GetServiceProperties();
var queueserviceProperties = queueClient.GetServiceProperties();
Console.WriteLine("Retention period for logs from the blob service is: " +
blobserviceProperties.Logging.RetentionDays.ToString());
Console.WriteLine("Retention period for logs from the queue service is: " +
queueserviceProperties.Logging.RetentionDays.ToString());
次の例では、BLOB とキューのストレージ サービスのログの保持期間を 4 日に変更します。
blobserviceProperties.Logging.RetentionDays = 4;
queueserviceProperties.Logging.RetentionDays = 4;
blobClient.SetServiceProperties(blobserviceProperties);
queueClient.SetServiceProperties(queueserviceProperties);
ログ データが削除されていることを確認する
ストレージ アカウントの $logs
コンテナーの内容を表示することで、ログが削除されていることを確認できます。 次の図は、$logs
コンテナー内のフォルダーの内容を示しています。 このフォルダーは 2021 年 1 月に対応し、各フォルダーには 1 日分のログが含まれています。 今日が 2021 年 1 月 29 日であり、保持ポリシーが 1 日だけに設定されている場合、このフォルダーには 1 日だけのログが含まれています。
ログ データを表示する
ログ データを表示して分析するには、対象のログ データを含む BLOB をローカル マシンにダウンロードする必要があります。 多くのストレージ閲覧ツールを使用して、ストレージ アカウントから BLOB をダウンロードできます。また、Azure Storage チームが提供するコマンドライン用の Azure Copy Tool (AzCopy ) を使用して、ログ データをダウンロードすることもできます。
注意
$logs
コンテナーは Event Grid と統合されていないため、ログ ファイルが書き込まれたときにユーザーは通知を受信しません。
対象のログ データをダウンロードし、同じログ データを複数回ダウンロードしないためには、以下のようにします。
AzCopy の使用を開始するには、「AzCopy を使ってみる 」を参照してください。
次の例は、2014 年 5 月 20 日の午前 09 時、午前 10 時、および午前 11 時から Queue サービスのログ データをダウンロードする方法を示しています。
azcopy copy 'https://mystorageaccount.blob.core.windows.net/$logs/queue' 'C:\Logs\Storage' --include-path '2014/05/20/09;2014/05/20/10;2014/05/20/11' --recursive
特定のファイルをダウンロードする方法の詳細については、「AzCopy v10 を使用して Azure BLOB ストレージから BLOB をダウンロードする 」を参照してください。
ログ データのダウンロードが完了すると、ファイル内のログ エントリを表示できます。 これらのログ ファイルでは、多くのログ読み取りツールで解析できる区切り記号付きテキスト形式が使用されています (詳細については、「Microsoft Azure Storage の監視、診断、およびトラブルシューティング 」を参照してください)。 ログ ファイルの内容を書式設定、フィルタリング、並べ替え、AD 検索するために、各種のツールがさまざまな機能を提供しています。 ストレージ ログのログ ファイルの形式および内容の詳細については、「Storage Analytics Log Format (Storage Analytics のログ形式) 」および「Storage Analytics Logged Operations and Status Message (Storage Analytics によって記録される操作および状態メッセージ) 」を参照してください。
次のステップ