設定診斷記錄

任何 Analysis Services 解決方案的一個重要部分是監視伺服器的執行方式。 Azure Analysis Services 與 Azure 監視器整合。 使用 Azure 監視器資源記錄,您可以監視記錄並將其傳送至 Azure 儲存體、串流至 Azure 事件中樞,並將其匯出至 Azure 監視器記錄

Resource logging to Storage, Event Hubs, or Azure Monitor logs

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

記錄的內容?

您可以選取 [引擎]、 [服務] 和 [計量] 類別

引擎

選取 [引擎] 會記錄所有 xEvent。 您無法選取個別事件。

XEvent 類別 事件名稱
安全性稽核 稽核登入
安全性稽核 稽核登出
安全性稽核 稽核伺服器啟動和停止
進度報告 進度報表開始
進度報告 進度報表結束
進度報告 進度報告目前
查詢 查詢開始
查詢 查詢結束
命令 命令開始
命令 命令結束
錯誤和警告 錯誤
探索 探索結束
通知 通知
會議 會話初始化
鎖定 鎖死
查詢處理 VertiPaq SE 查詢開始
查詢處理 VertiPaq SE 查詢結束
查詢處理 VertiPaq SE 查詢快取比對
查詢處理 直接查詢開始
查詢處理 直接查詢結束

服務

作業名稱 發生於
ResumeServer 繼續伺服器
SuspendServer 暫停伺服器
DeleteServer 刪除伺服器
RestartServer 用戶透過 SSMS 或 PowerShell 重新啟動伺服器
GetServerLogFiles 使用者透過PowerShell匯出伺服器記錄
ExportModel 使用者在入口網站中使用 Open 在 Visual Studio 中導出模型

所有計量

計量類別會將相同的 伺服器計量 記錄至 AzureMetrics 數據表。 如果您使用查詢 向外 延展,且需要分隔每個讀取複本的計量,請改用 AzureDiagnostics 數據表,其中 OperationName 等於 LogMetric

設定診斷記錄

Azure 入口網站

  1. Azure 入口網站> 伺服器中,按兩下左側導覽中的 [診斷設定],然後按兩下 [開啟診斷]。

    Screenshot showing Turn on diagnostics in the Azure portal.

  2. [診斷設定] 中,指定下列選項:

    • 名稱. 輸入要建立之記錄的名稱。

    • 封存至儲存體帳戶。 若要使用此選項,您需要現有的記憶體帳戶才能連線。 請參閱 建立記憶體帳戶。 依照指示建立 Resource Manager 一般用途帳戶,然後在入口網站中返回此頁面來選取您的記憶體帳戶。 新建立的記憶體帳戶可能需要幾分鐘的時間才會出現在下拉功能表中。

    • 串流處理至事件中樞。 若要使用此選項,您需要現有的事件中樞命名空間和事件中樞才能連線。 若要深入瞭解,請參閱使用 Azure 入口網站 建立事件中樞命名空間和事件中樞。 然後返回入口網站中的此頁面,以選取事件中樞命名空間和原則名稱。

    • 傳送至 Azure 監視器 (Log Analytics 工作區) 。 若要使用此選項,請使用現有的工作區,或在 入口網站中建立新的工作區 資源。 如需檢視記錄的詳細資訊,請參閱 本文中的<在Log Analytics工作區 中檢視記錄>。

    • 引擎。 選取此選項即可記錄 xEvents。 如果您要封存至記憶體帳戶,您可以選取資源記錄的保留期間。 記錄會在保留期間到期後自動刪除。

    • 服務。 選取此選項即可記錄服務等級事件。 如果您要封存至記憶體帳戶,您可以選取資源記錄的保留期間。 記錄會在保留期間到期後自動刪除。

    • 計量。 選取此選項可將詳細資訊數據儲存在計量。 如果您要封存至記憶體帳戶,您可以選取資源記錄的保留期間。 記錄會在保留期間到期後自動刪除。

  3. 按一下 [檔案] 。

    如果您收到錯誤,指出「無法更新工作區名稱>的<診斷。 <訂用帳戶訂用帳戶標識碼>未註冊為使用 microsoft.insights。」請遵循疑難解答 Azure 診斷 指示來註冊帳戶,然後重試此程式。

    如果您想要變更未來任何時間點儲存資源記錄的方式,您可以返回此頁面以修改設定。

PowerShell

以下是要開始的基本命令。 如果您想要使用 PowerShell 設定記憶體帳戶記錄的逐步說明,請參閱本文稍後的教學課程。

若要使用 PowerShell 啟用計量和資源記錄,請使用下列命令:

  • 若要在記憶體帳戶中啟用資源記錄的記憶體,請使用下列命令:

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

    記憶體帳戶識別碼是您要傳送記錄之記憶體帳戶的資源標識碼。

  • 若要啟用將資源記錄串流至事件中樞,請使用下列命令:

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

    Azure 服務匯流排規則識別碼是此格式的字串︰

    {service bus resource ID}/authorizationrules/{key name}
    
  • 若要啟用將資源記錄傳送至 Log Analytics 工作區,請使用下列命令:

    Set-AzDiagnosticSetting -ResourceId [your resource id] -WorkspaceId [resource id of the log analytics workspace] -Enabled $true
    
  • 您可以使用下列命令取得 Log Analytics 工作區的資源識別碼:

    (Get-AzOperationalInsightsWorkspace).ResourceId
    

您可以結合這些參數來啟用多個輸出選項。

REST API

瞭解如何 使用 Azure 監視器 REST API 來變更診斷設定。

Resource Manager 範本

瞭解如何使用 Resource Manager 範本資源建立時啟用診斷設定。

管理您的記錄

記錄通常會在設定記錄的幾個小時內使用。 您必須管理記憶體帳戶中的記錄:

  • 使用標準 Azure 訪問控制方法,藉由限制誰可以存取記錄來保護您的記錄。
  • 刪除您不想再保留在記憶體帳戶中的記錄。
  • 請務必設定保留期間,以便從記憶體帳戶中刪除舊的記錄。

在Log Analytics工作區中檢視記錄

計量和伺服器事件會與Log Analytics工作區資源中的 xEvents 整合,以進行並存分析。 Log Analytics 工作區也可以設定為接收來自其他 Azure 服務的事件,以全面檢視整個架構的診斷記錄數據。

若要檢視診斷數據,請在Log Analytics工作區中,從左側功能表開啟 [記錄 ]。

Screenshot showing log Search options in the Azure portal.

在查詢產生器中,展開 [LogManagement>AzureDiagnostics]。 AzureDiagnostics 包含引擎和服務事件。 請注意,查詢是即時建立的。 [EventClass_s] 字段包含 xEvent 名稱,如果您使用 xEvents 進行內部部署記錄,則看起來可能很熟悉。 按兩下 EventClass_s 或其中一個事件名稱,Log Analytics 工作區會繼續建構查詢。 請務必儲存查詢,以便稍後重複使用。

範例查詢

範例 1

下列查詢會針對模型資料庫和伺服器傳回每個查詢結束/重新整理結束事件的持續時間。 如果相應放大,則結果會依復本細分,因為複本編號會包含在ServerName_s中。 依RootActivityId_g分組可減少從 Azure 診斷 REST API 擷取的數據列計數,並協助維持在Log Analytics速率限制中所述的限制內。

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

範例 2

下列查詢會傳回伺服器的記憶體和 QPU 耗用量。 如果相應放大,則結果會依復本細分,因為複本編號會包含在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 

範例 3

下列查詢會傳回伺服器的 Rows 讀取/秒 Analysis Services 引擎性能計數器。

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 

您可以使用數百個查詢。 若要深入了解查詢,請參閱 開始使用 Azure 監視器記錄查詢

使用 PowerShell 開啟記錄

在本快速教學課程中,您會在與 Analysis Service 伺服器相同的訂用帳戶和資源群組中建立記憶體帳戶。 然後使用 Set-AzDiagnosticSetting 開啟診斷記錄,將輸出傳送至新的記憶體帳戶。

必要條件

若要完成本教學課程,您必須具有下列資源:

  • 現有的 Azure Analysis Services 伺服器。 如需建立伺服器資源的指示,請參閱在 Azure 入口網站 中建立伺服器,或使用PowerShell建立 Azure Analysis Services 伺服器。

連線 訂用帳戶

啟動 Azure PowerShell 工作階段,並使用下列命令登入您的 Azure 帳戶:

Connect-AzAccount

在快顯瀏覽器視窗中,輸入您的 Azure 帳戶使用者名稱和密碼。 Azure PowerShell 會取得與此帳戶相關聯的所有訂用帳戶,且預設會使用第一個訂用帳戶。

如果您有多個訂用帳戶,您可能必須指定用來建立 Azure 金鑰保存庫 的特定訂用帳戶。 輸入下列命令以查看您帳戶的訂用帳戶:

Get-AzSubscription

然後,若要指定與您記錄的 Azure Analysis Services 帳戶相關聯的訂用帳戶,請輸入:

Set-AzContext -SubscriptionId <subscription ID>

注意

如果您有多個與您的帳戶相關聯的訂用帳戶,請務必指定訂用帳戶。

為您的記錄建立新的記憶體帳戶

您可以針對記錄使用現有的記憶體帳戶,前提是其位於與伺服器相同的訂用帳戶中。 在本教學課程中,您會建立 Analysis Services 記錄專用的新記憶體帳戶。 為了方便起義,您要將記憶體帳戶詳細數據儲存在名為 sa的變數中。

您也可以使用與包含 Analysis Services 伺服器的資源群組相同。 以您自己的值 awsales_resgroup取代、 awsaleslogsWest Central US 值:

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

識別記錄的伺服器帳戶

將帳戶名稱設定為名為 account 的變數,其中 ResourceName 是帳戶的名稱。

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

啟用 記錄

若要啟用記錄,請使用Set-AzDiagnosticSetting Cmdlet 搭配新記憶體帳戶、伺服器帳戶和類別的變數。 執行下列命令,將 -Enabled 旗標設定為 $true

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

輸出看起來應該像下列範例:

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                        :

此輸出會確認現在已啟用伺服器的記錄,並將資訊儲存至記憶體帳戶。

您也可以設定記錄的保留原則,以便自動刪除較舊的記錄。 例如,使用 -RetentionEnabled 旗標將保留原則設定為 $true,並將 -RetentionInDays 參數設定90。 超過 90 天的記錄會自動刪除。

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

下一步

深入瞭解 Azure 監視器資源記錄

請參閱 PowerShell 說明中的 Set-AzDiagnosticSetting