診断ログのセットアップSetup diagnostic logging

Analysis Services ソリューションの重要な部分は、サーバーのパフォーマンスを監視することです。An important part of any Analysis Services solution is monitoring how your servers are performing. Azure Analysis Services は Azure Monitor と統合されています。Azure Analysis services is integrated with Azure Monitor. Azure Monitor のリソース ログを使用すると、ログを監視して Azure Storage に送信したり、ログを Azure Event Hubs にストリーミング配信したり、Azure Monitor ログにエクスポートしたりすることができます。With Azure Monitor resource logs, you can monitor and send logs to Azure Storage, stream them to Azure Event Hubs, and export them to Azure Monitor logs.

Storage、Event Hubs、または Azure Monitor ログへのリソースのログ記録

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

ログに記録されるものWhat's logged?

[エンジン][サービス] 、および [メトリック] のカテゴリを選択できます。You can select Engine, Service, and Metrics categories.

エンジンEngine

[エンジン] を選択すると、すべての xEvents がログに記録されます。Selecting Engine logs all xEvents. 個々のイベントを選択することはできません。You cannot select individual events.

XEvent カテゴリXEvent categories イベント名Event name
セキュリティ監査Security Audit Audit LoginAudit Login
セキュリティ監査Security Audit Audit LogoutAudit Logout
セキュリティ監査Security Audit Audit Server Starts And StopsAudit Server Starts And Stops
進行状況レポートProgress Reports Progress Report BeginProgress Report Begin
進行状況レポートProgress Reports Progress Report EndProgress Report End
進行状況レポートProgress Reports Progress Report CurrentProgress Report Current
クエリQueries Query BeginQuery Begin
クエリQueries Query EndQuery End
コマンドCommands Command BeginCommand Begin
コマンドCommands Command EndCommand End
エラーと警告Errors & Warnings エラーError
発見Discover Discover EndDiscover End
NotificationNotification NotificationNotification
SessionSession Session InitializeSession Initialize
LocksLocks DeadlockDeadlock
クエリ処理Query Processing VertiPaq SE Query BeginVertiPaq SE Query Begin
クエリ処理Query Processing VertiPaq SE Query EndVertiPaq SE Query End
クエリ処理Query Processing VertiPaq SE Query Cache MatchVertiPaq SE Query Cache Match
クエリ処理Query Processing Direct Query BeginDirect Query Begin
クエリ処理Query Processing Direct Query EndDirect Query End

サービスService

操作の名前Operation name 発生するタイミングOccurs when
ResumeServerResumeServer サーバーを再開するときResume a server
SuspendServerSuspendServer サーバーを一時停止するときPause a server
DeleteServerDeleteServer サーバーの削除Delete a server
RestartServerRestartServer ユーザーが SSMS または PowerShell を経由してサーバーを再起動するときUser restarts a server through SSMS or PowerShell
GetServerLogFilesGetServerLogFiles ユーザーが PowerShell を通じてサーバー ログをエクスポートするときUser exports server log through PowerShell
ExportModelExportModel ユーザーが [Visual Studio で開く] を使用してポータルでモデルをエクスポートするときUser exports a model in the portal by using Open in Visual Studio

すべてのメトリックAll metrics

[メトリック] カテゴリでは、同じサーバー メトリックが AzureMetrics テーブルに記録されます。The Metrics category logs the same Server metrics to the AzureMetrics table. クエリのスケールアウトを使用していて、読み取りレプリカごとにメトリックを分離する必要がある場合は、代わりに AzureDiagnostics テーブルを使用します。この OperationNameLogMetric と同じです。If you're using query scale-out and need to separate metrics for each read replica, use the AzureDiagnostics table instead, where OperationName is equal to LogMetric.

診断ログのセットアップSetup diagnostics logging

Azure portalAzure portal

  1. Azure portal > サーバーで、左のナビゲーションにある [診断設定] をクリックし、 [診断をオンにする] をクリックします。In Azure portal > server, click Diagnostic settings in the left navigation, and then click Turn on diagnostics.

    Azure portal で Azure Cosmos DB のリソースのログ記録を有効にする

  2. [診断設定] で、次のオプションを指定します。In Diagnostic settings, specify the following options:

    • 名前Name. 作成するログの名前を入力します。Enter a name for the logs to create.

    • [ストレージ アカウントへのアーカイブ]Archive to a storage account. このオプションを使用するには、接続先として既存のストレージ アカウントが必要です。To use this option, you need an existing storage account to connect to. ストレージ アカウントを作成する」を参照してください。See Create a storage account. 指示に従って、Resource Manager の汎用アカウントを作成し、ポータルのこのページに戻ってストレージ アカウントを選択します。Follow the instructions to create a Resource Manager, general-purpose account, then select your storage account by returning to this page in the portal. 新しく作成されたストレージ アカウントがドロップダウン メニューに表示されるまでには、数分かかる場合があります。It may take a few minutes for newly created storage accounts to appear in the drop-down menu.

    • イベント ハブにストリーミングしますStream to an event hub. このオプションを使用するには、既存の Event Hubs 名前空間と接続先のイベント ハブが必要です。To use this option, you need an existing Event Hub namespace and event hub to connect to. 詳細については、「Azure Portal を使用して Event Hubs 名前空間とイベント ハブを作成する」をご覧ください。To learn more, see Create an Event Hubs namespace and an event hub using the Azure portal. Portal でこのページに戻り、Event Hubs 名前空間とポリシー名を選択します。Then return to this page in the portal to select the Event Hub namespace and policy name.

    • Azure Monitor (Log Analytics ワークスペース) に送信しますSend to Azure Monitor (Log Analytics workspace). このオプションを使用するには、既存のワークスペースを使用するか、またはポータルで新しいワークスペース リソースを作成します。To use this option, either use an existing workspace or create a new workspace resource in the portal. ログを表示する方法について詳しくは、この記事の「Log Analytics ワークスペースでログを表示する」をご覧ください。For more information on viewing your logs, see View logs in Log Analytics workspace in this article.

    • エンジンEngine. xEvents をログ記録するには、このオプションを選択します。Select this option to log xEvents. ストレージ アカウントにアーカイブする場合、リソース ログの保持期間を選択できます。If you're archiving to a storage account, you can select the retention period for the resource logs. リテンション期間が過ぎると、ログは自動的に削除されます。Logs are autodeleted after the retention period expires.

    • サービスService. サービス レベル イベントをログ記録するには、このオプションを選択します。Select this option to log service level events. ストレージ アカウントにアーカイブする場合、リソース ログの保持期間を選択できます。If you are archiving to a storage account, you can select the retention period for the resource logs. リテンション期間が過ぎると、ログは自動的に削除されます。Logs are autodeleted after the retention period expires.

    • メトリックMetrics. メトリックに詳細データを保存するには、このオプションを使用します。Select this option to store verbose data in Metrics. ストレージ アカウントにアーカイブする場合、リソース ログの保持期間を選択できます。If you are archiving to a storage account, you can select the retention period for the resource logs. リテンション期間が過ぎると、ログは自動的に削除されます。Logs are autodeleted after the retention period expires.

  3. [保存] をクリックします。Click Save.

    "<workspace name> の診断を更新できませんでした。If you receive an error that says "Failed to update diagnostics for <workspace name>. サブスクリプション <subscription id> は microsoft.insights を使用するために登録されていません。"The subscription <subscription id> is not registered to use microsoft.insights." というエラーが表示される場合は、Azure Diagnostics のトラブルシューティングに関する指示に従ってアカウントを登録してから、この手順を再試行してください。follow the Troubleshoot Azure Diagnostics instructions to register the account, then retry this procedure.

    今後、リソース ログを保存する方法を変更する場合は、このページに戻って設定を変更できます。If you want to change how your resource logs are saved at any point in the future, you can return to this page to modify settings.

PowerShellPowerShell

興味を引く基本的なコマンドを次に示します。Here are the basic commands to get you going. PowerShell を使用してストレージ アカウントにログ記録をセットアップする詳細な手順が必要な場合は、この記事で後述するチュートリアルを参照してください。If you want step-by-step help on setting up logging to a storage account by using PowerShell, see the tutorial later in this article.

PowerShell を使用してメトリックとリソースのログ記録を有効にするには、次のコマンドを使用します。To enable metrics and resource logging by using PowerShell, use the following commands:

  • ストレージ アカウントでのリソース ログの保存を有効にするには、次のコマンドを使います。To enable storage of resource logs in a storage account, use this command:

    Set-AzDiagnosticSetting -ResourceId [your resource id] -StorageAccountId [your storage account id] -Enabled $true
    

    ストレージ アカウント ID は、ログの送信先となるストレージ アカウントのリソース ID です。The storage account ID is the resource ID for the storage account where you want to send the logs.

  • イベント ハブへのリソース ログのストリーミングを有効にするには、次のコマンドを使います。To enable streaming of resource logs to an event hub, use this command:

    Set-AzDiagnosticSetting -ResourceId [your resource id] -ServiceBusRuleId [your service bus rule id] -Enabled $true
    

    Azure Service Bus ルール ID は、次の形式の文字列です。The Azure Service Bus rule ID is a string with this format:

    {service bus resource ID}/authorizationrules/{key name}
    
  • Log Analytics ワークスペースへのリソース ログの送信を有効にするには、次のコマンドを使用します。To enable sending resource logs to a Log Analytics workspace, use this command:

    Set-AzDiagnosticSetting -ResourceId [your resource id] -WorkspaceId [resource id of the log analytics workspace] -Enabled $true
    
  • 次のコマンドを使用して、Log Analytics ワークスペースのリソース ID を取得できます。You can obtain the resource ID of your Log Analytics workspace by using the following command:

    (Get-AzOperationalInsightsWorkspace).ResourceId
    

このパラメーターを組み合わせて、複数の出力オプションを有効にできます。You can combine these parameters to enable multiple output options.

REST APIREST API

Azure Monitor REST API を使用して診断設定を変更する方法を学習します。Learn how to change diagnostics settings by using the Azure Monitor REST API.

Resource Manager テンプレートResource Manager template

Resource Manager テンプレートを使用してリソースの作成時に診断設定を有効にする方法を学習します。Learn how to enable diagnostics settings at resource creation by using a Resource Manager template.

ログを管理するManage your logs

ログは通常、ログをセットアップしてから 2 時間以内に利用できるようになります。Logs are typically available within a couple hours of setting up logging. ストレージ アカウントでのログの管理はお客様に委ねられます。It's up to you to manage your logs in your storage account:

  • ログにアクセスできるユーザーを制限することでログのセキュリティを保護するには、標準的な Azure アクセス制御方法を使用します。Use standard Azure access control methods to secure your logs by restricting who can access them.
  • ストレージ アカウントに保持する必要がなくなったログは削除します。Delete logs that you no longer want to keep in your storage account.
  • 古いログをストレージ アカウントから削除するためのリテンション期間を必ず設定してください。Be sure to set a retention period for so old logs are deleted from your storage account.

Log Analytics ワークスペースでログを表示するView logs in Log Analytics workspace

メトリックとサーバー イベントは、side-by-side 分析のため、Log Analytics ワークスペース リソースで xEvents と統合されます。Metrics and server events are integrated with xEvents in your Log Analytics workspace resource for side-by-side analysis. 他の Azure サービスからイベントを受信するように Log Analytics ワークスペースを構成して、アーキテクチャ全体の診断ログ データの全体像を提供することもできます。Log Analytics workspace can also be configured to receive events from other Azure services providing a holistic view of diagnostic logging data across your architecture.

診断データを表示するには、Log Analytics ワークスペースの左側のメニューで [ログ] を開きます。To view your diagnostic data, in Log Analytics workspace, open Logs from the left menu.

Azure Portal の [ログ検索] オプション

クエリ ビルダーで、LogManagement > AzureDiagnostics を展開します。In the query builder, expand LogManagement > AzureDiagnostics. AzureDiagnostics には、エンジンとサービスのイベントが含まれています。AzureDiagnostics includes Engine and Service events. クエリが即座に作成されることに注目してください。Notice a query is created on-the-fly. EventClass_s フィールドには、オンプレミスのログ記録の xEvents を使用している場合にはなじみのある、xEvent 名が含まれています。The EventClass_s field contains xEvent names, which may look familiar if you've used xEvents for on-premises logging. [EventClass_s] またはイベント名のいずれかをクリックすると、Log Analytics ワークスペースでクエリの作成が続行されます。Click EventClass_s or one of the event names and Log Analytics workspace continues constructing a query. 後で再利用するため、クエリは必ず保存しておいてください。Be sure to save your queries to reuse later.

クエリの例Example queries

例 1Example 1

次のクエリでは、モデル データベースとサーバーの各クエリの終了/更新終了イベントの期間が返されます。The following query returns durations for each query end/refresh end event for a model database and server. スケールアウトした場合、レプリカ番号は ServerName_s に含まれているので、結果はレプリカごとに分割されます。If scaled out, the results are broken out by replica because the replica number is included in ServerName_s. RootActivityId_g によるグループ化で Azure Diagnostics REST API から取得される行数が減り、Log Analytics のレート制限に関する記事で説明されている制限内に収めることができます。Grouping by RootActivityId_g reduces the row count retrieved from the Azure Diagnostics REST API and helps stay within the limits as described in Log Analytics Rate limits.

let window = AzureDiagnostics
   | where ResourceProvider == "MICROSOFT.ANALYSISSERVICES" and Resource =~ "MyServerName" and DatabaseName_s =~ "MyDatabaseName" ;
window
| where OperationName has "QueryEnd" or (OperationName has "CommandEnd" and EventSubclass_s == 38)
| where extract(@"([^,]*)", 1,Duration_s, typeof(long)) > 0
| extend DurationMs=extract(@"([^,]*)", 1,Duration_s, typeof(long))
| project  StartTime_t,EndTime_t,ServerName_s,OperationName,RootActivityId_g,TextData_s,DatabaseName_s,ApplicationName_s,Duration_s,EffectiveUsername_s,User_s,EventSubclass_s,DurationMs
| order by StartTime_t asc

例 2Example 2

次のクエリでは、サーバーのメモリと QPU の消費量が返されます。The following query returns memory and QPU consumption for a server. スケールアウトした場合、レプリカ番号は ServerName_s に含まれているので、結果はレプリカごとに分割されます。If scaled out, the results are broken out by replica because the replica number is included in ServerName_s.

let window = AzureDiagnostics
   | where ResourceProvider == "MICROSOFT.ANALYSISSERVICES" and Resource =~ "MyServerName";
window
| where OperationName == "LogMetric" 
| where name_s == "memory_metric" or name_s == "qpu_metric"
| project ServerName_s, TimeGenerated, name_s, value_s
| summarize avg(todecimal(value_s)) by ServerName_s, name_s, bin(TimeGenerated, 1m)
| order by TimeGenerated asc 

例 3Example 3

次のクエリでは、サーバーの Rows read/sec Analysis Services エンジン パフォーマンス カウンターが返されます。The following query returns the Rows read/sec Analysis Services engine performance counters for a server.

let window =  AzureDiagnostics
   | where ResourceProvider == "MICROSOFT.ANALYSISSERVICES" and Resource =~ "MyServerName";
window
| where OperationName == "LogMetric" 
| where parse_json(tostring(parse_json(perfobject_s).counters))[0].name == "Rows read/sec" 
| extend Value = tostring(parse_json(tostring(parse_json(perfobject_s).counters))[0].value) 
| project ServerName_s, TimeGenerated, Value
| summarize avg(todecimal(Value)) by ServerName_s, bin(TimeGenerated, 1m)
| order by TimeGenerated asc 

使用できるクエリは数百あります。There are hundreds of queries you can use. クエリについて詳しくは、「Azure Monitor ログ クエリの使用を開始する」をご覧ください。To learn more about queries, see Get started with Azure Monitor log queries.

PowerShell を使用してログ記録を有効にするTurn on logging by using PowerShell

このクイック チュートリアルでは、Analysis Service サーバーと同じサブスクリプションとリソース グループでストレージ アカウントを作成します。In this quick tutorial, you create a storage account in the same subscription and resource group as your Analysis Service server. 次に、Set-AzDiagnosticSetting を使用して、診断ログを有効にし、出力を新しいストレージ アカウントに送信します。You then use Set-AzDiagnosticSetting to turn on diagnostics logging, sending output to the new storage account.

前提条件Prerequisites

このチュートリアルを完了するには、以下のリソースが必要です。To complete this tutorial, you must have the following resources:

サブスクリプションへの接続Connect to your subscriptions

Azure PowerShell セッションを開始し、次のコマンドで Azure アカウントにサインインします。Start an Azure PowerShell session and sign in to your Azure account with the following command:

Connect-AzAccount

ポップアップ ブラウザー ウィンドウで、Azure アカウントのユーザー名とパスワードを入力します。In the pop-up browser window, enter your Azure account user name and password. Azure PowerShell は、このアカウントに関連付けられているすべてのサブスクリプションを取得し、既定で最初のサブスクリプションを使用します。Azure PowerShell gets all the subscriptions that are associated with this account and by default, uses the first one.

複数のサブスクリプションをお持ちの場合は、Azure Key Vault を作成するときに使用した特定の 1 つを指定することが必要なことがあります。If you have multiple subscriptions, you might have to specify a specific one that was used to create your Azure Key Vault. アカウントのサブスクリプションを確認するには、次を入力します。Type the following to see the subscriptions for your account:

Get-AzSubscription

ログを記録する Azure Analysis Services アカウントに関連付けられているサブスクリプションを指定するには、次を入力します。Then, to specify the subscription that's associated with the Azure Analysis Services account you are logging, type:

Set-AzContext -SubscriptionId <subscription ID>

注意

複数のサブスクリプションがアカウントに関連付けられている場合は、サブスクリプションを指定することが重要です。If you have multiple subscriptions associated with your account, it is important to specify the subscription.

ログ用に新しいストレージ アカウントを作成するCreate a new storage account for your logs

ログの既存のストレージ アカウントがサーバーと同じサブスクリプション内にある場合は、それを使用できます。You can use an existing storage account for your logs, provided it's in the same subscription as your server. このチュートリアルでは、Analysis Services ログ専用の新しいストレージ アカウントを作成します。For this tutorial, you create a new storage account dedicated to Analysis Services logs. 便宜上、ストレージ アカウントの詳細を sa という変数に格納します。To make it easy, you're storing the storage account details in a variable named sa.

また、お使いの Analysis Services サーバーを含むリソース グループと同じリソース グループを使用します。You also use the same resource group as the one that contains your Analysis Services server. awsales_resgroupawsaleslogsWest Central US の値を独自の値に置き換えます。Substitute values for awsales_resgroup, awsaleslogs, and West Central US with your own values:

$sa = New-AzStorageAccount -ResourceGroupName awsales_resgroup `
-Name awsaleslogs -Type Standard_LRS -Location 'West Central US'

ログのサーバー アカウントを特定するIdentify the server account for your logs

アカウント名を account という変数に設定します。この ResourceName は、アカウントの名前です。Set the account name to a variable named account, where ResourceName is the name of the account.

$account = Get-AzResource -ResourceGroupName awsales_resgroup `
-ResourceName awsales -ResourceType "Microsoft.AnalysisServices/servers"

ログの有効化Enable logging

ログ記録を有効にするために、Set-AzDiagnosticSetting コマンドレットを、新しいストレージ アカウント、サーバー アカウント、およびカテゴリの変数と組み合わせて使用します。To enable logging, use the Set-AzDiagnosticSetting cmdlet together with the variables for the new storage account, server account, and the category. 次のコマンドを実行し、 -Enabled フラグを $true に設定します。Run the following command, setting the -Enabled flag to $true:

Set-AzDiagnosticSetting  -ResourceId $account.ResourceId -StorageAccountId $sa.Id -Enabled $true -Categories Engine

出力は次の例のようになります。The output should look something like this example:

StorageAccountId            : 
/subscriptions/a23279b5-xxxx-xxxx-xxxx-47b7c6d423ea/resourceGroups/awsales_resgroup/providers/Microsoft.Storage/storageAccounts/awsaleslogs
ServiceBusRuleId            :
EventHubAuthorizationRuleId :
Metrics                    
    TimeGrain       : PT1M
    Enabled         : False
    RetentionPolicy
    Enabled : False
    Days    : 0


Logs                       
    Category        : Engine
    Enabled         : True
    RetentionPolicy
    Enabled : False
    Days    : 0


    Category        : Service
    Enabled         : False
    RetentionPolicy
    Enabled : False
    Days    : 0


WorkspaceId                 :
Id                          : /subscriptions/a23279b5-xxxx-xxxx-xxxx-47b7c6d423ea/resourcegroups/awsales_resgroup/providers/microsoft.analysisservic
es/servers/awsales/providers/microsoft.insights/diagnosticSettings/service
Name                        : service
Type                        :
Location                    :
Tags                        :

この出力を見れば、ログ記録がサーバーに対して有効になっていること、ストレージ アカウントに情報が保存されることを確認できます。This output confirms that logging is now enabled for the server, saving information to the storage account.

古いログが自動的に削除されるように、ログのアイテム保持ポリシーを設定することもできます。You can also set retention policy for your logs so older logs are automatically deleted. たとえば、 -RetentionEnabled フラグを $true に設定し、 -RetentionInDays パラメーターを 90 に設定したアイテム保持ポリシーを設定します。For example, set retention policy using -RetentionEnabled flag to $true, and set -RetentionInDays parameter to 90. 90 日を経過したログは自動的に削除されます。Logs older than 90 days are automatically deleted.

Set-AzDiagnosticSetting -ResourceId $account.ResourceId`
 -StorageAccountId $sa.Id -Enabled $true -Categories Engine`
  -RetentionEnabled $true -RetentionInDays 90

次のステップNext steps

Azure Monitor のリソースのログ記録の詳細について確認します。Learn more about Azure Monitor resource logging.

PowerShell ヘルプの「Set-AzDiagnosticSetting」を参照してください。See Set-AzDiagnosticSetting in PowerShell help.