適用於 Azure HDInsight 叢集的 Azure 監視器代理程式 (AMA) 移轉指南
Azure HDInsight 是符合企業需求的受控叢集服務。 此服務會在 Azure 上執行開放原始碼分析架構,例如 Apache Spark、Hadoop、HBase 和 Kafka。 Azure HDInsight 已與其他 Azure 服務整合,讓客戶能夠更妥善地管理巨量資料分析應用程式。
Log Analytics 提供一項 Azure 入口網站中的工具,可編輯和執行記錄查詢。 查詢是來自 Azure 監視器記錄所收集的資料,並以互動方式分析其結果。 客戶可以使用 Log Analytics 查詢來擷取符合特定準則的記錄。 他們也可以使用查詢來識別趨勢、分析模式,以及提供其資料的深入解析。
Azure HDInsight 已在 2017 年與 Log Analytics 整合。 HDInsight 客戶快速採用這項功能來監視其 HDInsight 叢集,並查詢叢集中的記錄。 雖然採用這項功能的案例有所提升,但客戶也提供了有關整合的意見反應:
客戶無法決定要儲存的記錄,而儲存所有記錄可能會變得很昂貴。
目前的 HDInsight 結構描述記錄不會遵循一致的命名慣例,因此有些資料表會重複。
客戶想要立即可用的儀表板,輕鬆地監視其 HDInsight 叢集的 KPI。
客戶必須跳到 Log Analytics 來執行簡單的查詢。
解決方案概觀
考慮客戶意見反應,Azure HDInsight 小組已投資於 Azure 監視器整合。 此整合可以:
客戶 Log Analytics 工作區中一組新的資料表。 新的資料表會透過新的 Log Analytics 管線來傳遞。
更高的可靠性。
更快速的記錄傳遞。
以資源為基礎的資料表群組和預設查詢。
改善 Azure 監視器代理程式工作區系統受控識別的安全性。
針對現有資料表自動建立 DCR 資源。
注意
Azure 監視器代理程式 (AMA) 整合 (包括 DCR 和系統身分識別驗證) 可在提供 HDInsight 的所有區域使用。
新 Azure 監視器代理程式 (AMA) 整合的優點
本文件概述 Azure 監視器整合的變更,並提供使用新資料表的最佳做法。
重新設計的結構描述:新 Azure 監視器整合的結構描述格式更妥善且易於了解。 盡可能移除舊版結構描述中模棱兩可的結構描述少於兩分之三。
選擇性記錄:Log Analytics 有記錄和計量可供使用。 為協助您節省監視成本,我們發行了新的選擇性記錄功能。 使用這項功能來開啟和關閉不同的記錄和計量來源。 有了這項功能,您只需要為所使用的內容支付費用。 如需詳細資訊,請參閱選擇性記錄。
記錄叢集入口網站整合:[記錄] 窗格是 HDInsight 叢集入口網站的新功能。 具有叢集存取權的任何人員都可以移至此窗格,以查詢接收叢集資源所傳送記錄的任何資料表。 使用者在查看特定叢集資源的記錄時,不再需要存取 Log Analytics 工作區。
Insights 叢集入口網站整合:[Insights] 窗格也是 HDInsight 叢集入口網站的新功能。 啟用新的 Azure 監視器整合之後,您可以選取 [Insights] 窗格,然後叢集類型特定的立即可用記錄和計量儀表板將會自動為您填入。 我們是從先前的 Azure 解決方案中對這些儀表板進行改進。 其可讓您深入解析叢集的效能和健康情況。
客戶案例
下列各節說明客戶如何在不同案例中使用新的 Azure 監視器代理程式整合。
啟動新的 Azure 監視器代理程式整合一節概述如何啟動及使用新的 Azure 監視器整合。
從 Azure 監視器傳統版移轉至新的 Azure 監視器代理程式整合一節包含依賴舊版 Azure 監視器整合之使用者所需的其他資訊。
注意
使用 Azure 監視器傳統版的客戶將無法在 2024 年 8 月 31 日之後繼續使用。
在 2025 年 1 月 31 日之前,使用全新 Azure 監視器體驗 (預覽版) 的客戶會需要移轉至 Azure 監視器代理程式 (AMA)。
使用映像 2407260448 (具有最新 HDInsight API 2024-08-01-preview) 的叢集,將能夠啟用 Azure 監視器代理程式整合,而對於使用映像 2407260448 的客戶而言,這會是預設設定。
啟動新的 Azure 監視器代理程式整合
注意
您必須先在存取的訂用帳戶中建立 Log Analytics 工作區,才能啟用新的 Azure 監視器代理程式整合。 如果您要從 Azure 監視器體驗移轉至 Azure 監視器代理程式設定,您可以從現有的叢集重複使用 Log analytics 工作區
您應該針對 Log Analytics 工作區使用相同的 Azure 區域,而使用 HDInsight 叢集獲得更順暢的移轉。
如需如何建立 Log Analytics 工作區的詳細資訊,請參閱在 Azure 入口網站中建立 Log Analytics 工作區。
方法 1:使用入口網站啟用 Azure 監視器代理程式
移至叢集的入口網站頁面並向下捲動左側功能表,直到您到達 [監視] 區段,即可啟用新的整合。
在 [監視] 區段中,選取 [監視整合]。
啟用 Azure 監視器代理程式與 Log Analytics 整合,並選取工作區 (當您從先前的映像移轉至較新的映像時的現有工作區)。
確認工作區選取之後,就會開始進行先決條件步驟。
完成先決條件步驟之後,請選取 [儲存]。
方法 2:使用 Azure PowerShell 啟用 Azure 監視器代理程式
啟用系統指派的 MSI
首先取得叢集資訊,以檢查叢集的 MSI。
Get-AzHDInsightCluster -ResourceGroupName $resourceGroup –ClusterName $cluster
如果此叢集沒有 MSI,請直接啟用系統指派的 MSI
Update-AzHDInsightCluster -ResourceGroupName $resourceGroup -ClusterName $cluster -IdentityType "SystemAssigned"
如果此叢集只有使用者指派的 MSI,請將系統指派的 MSI 新增至身分識別。
Update-AzHDInsightCluster -ResourceGroupName $resourceGroup -ClusterName $cluster -IdentityType "SystemAssigned,UserAssigned" -IdentityId "$userAssignedIdentityResourceId"
如果此叢集已有系統指派的 MSI,則不需要任何動作。
建立 DCR
如需詳細資訊,請參閱 建立與編輯資料收集規則 (DCR)。
# The URL of the DCR template file, change {HDIClusterType} to your cluster type. # The valid types are: hadoop, hbase, interactivehive, kafka, llap, spark $dcrTemplatejsonUrl = "https://hdiconfigactions.blob.core.windows.net/azuremonitoriningagent/DCR/{HDIClusterType}_dcr_template.json" $dcrJsonContent = Invoke-RestMethod -Uri $dcrTemplatejsonUrl # Get details of your Log Analytics workspace, if your workspace is in another subscription, you need to change context to the subscription $workspaceResourceGroupName = "{yourWorkspaceResourceGroup}" $workspaceName = {yourWorkspaceName} $workspace = Get-AzOperationalInsightsWorkspace -ResourceGroupName $workspaceResourceGroupName -Name $workspaceName # Customize the DCR content $dcrJsonContent.properties.destinations.logAnalytics[0].workspaceResourceId = $workspace.ResourceId $dcrJsonContent.properties.destinations.logAnalytics[0].workspaceId = $workspace.CustomerId $dcrJsonContent.location = $workspace.Location # Create the DCR using the customized JSON (DCR needs to be in the same location as Log Analytics workspace). # If your HDInsight cluster is in another subscription, you need to change context to your cluster’s subscription $dcrName = " {yourDcrName} " $resourceGroupName = " {YourDcrResourceGroup} " $dcrStr = $dcrJsonContent | ConvertTo-Json -Depth 10 $dcr = New-AzDataCollectionRule -Name $dcrName -ResourceGroupName $resourceGroupName -JsonString $dcrStr
DCR 的關聯。
如需詳細資訊,請參閱 在 Windows 用戶端裝置上設定 Azure 監視器代理程式。
# Associate DCR to HDInsight cluster $hdinsightClusterResourceId = "/subscriptions/{subscription}/resourceGroups/{resourceGroup}/providers/Microsoft.HDInsight/clusters/{clusterName}" $dcrAssociationName = "{yourDcrAssociation}" New-AzDataCollectionRuleAssociation -AssociationName $dcrAssociationName -ResourceUri $hdinsightClusterResourceId -DataCollectionRuleId $dcr.Id
啟用 Azure 監視器代理程式。
# Enter user information $resourceGroup = "<your-resource-group>" $cluster = "<your-cluster>" $LAW = "<your-Log-Analytics-workspace>" # End of user input # obtain workspace id for defined Log Analytics workspace $WorkspaceId = (Get-AzOperationalInsightsWorkspace -ResourceGroupName $resourceGroup -Name $LAW).CustomerId # obtain primary key for defined Log Analytics workspace $PrimaryKey = (Get-AzOperationalInsightsWorkspace -ResourceGroupName $resourceGroup -Name $LAW | Get-AzOperationalInsightsWorkspaceSharedKeys).PrimarySharedKey # Enables monitoring and relevant logs will be sent to the specified workspace. Enable-AzHDInsightAzureMonitorAgent -ResourceGroupName $resourceGroup -ClusterName $cluster -WorkspaceId $WorkspaceId -PrimaryKey $PrimaryKey # Gets the status of monitoring installation on the cluster. Get-AzHDInsightAzureMonitorAgent -ResourceGroupName $resourceGroup -ClusterName $cluster
(選用) 停用 Azure 監視器代理程式。
Disable-AzHDInsightAzureMonitorAgent -ResourceGroupName $resourceGroup -ClusterName $cluster
方法 3:使用 Azure CLI 啟用 Azure 監視器代理程式
啟用系統指派的 MSI。
首先取得叢集資訊,以檢查叢集的 MSI。
az hdinsight show –-resource-group $resourceGroup –name $cluster #get access token if needed accessToken=$(az account get-access-token --query accessToken -o tsv) url="https://management.azure.com/subscriptions/${subscriptionId}/resourcegroups/${resourceGroupName}/providers/Microsoft.HDInsight/clusters/${clusterName}?api-version=2024-08-01-preview"
如果此叢集沒有 MSI,請透過 REST API 直接啟用系統指派的 MSI。
body="{\"identity\": {\"type\": \"SystemAssigned\"}}" az rest --method patch --url "$url" --body "$body" --headers "Authorization=Bearer $accessToken"
如果此叢集只有使用者指派的 MSI,請將系統指派的 MSI 新增至身分識別。
body="{\"identity\": {\"type\": \"SystemAssigned,UserAssigned\", \"userAssignedIdentities\": {$userAssignedIdentityResourceId:{}}}}" az rest --method patch --url "$url" --body "$body" --headers "Authorization=Bearer $accessToken"
如果此叢集已有系統指派的 MSI,則不需要任何動作。
建立 DCR。
如需詳細資訊,請參閱 建立與編輯資料收集規則 (DCR)
# The URL of the DCR template file, change {HDIClusterType} to your cluster type. # The valid types are: hadoop, hbase, interactivehive, kafka, llap, spark $dcrTemplatejsonUrl = "https://hdiconfigactions.blob.core.windows.net/azuremonitoriningagent/DCR/{HDIClusterType}_dcr_template.json?api-version=2020-08-01" # Download dcr template to local $dcrTemplateLocalFile = "dcrTemplateFileName.json" azcopy copy $dcrTemplatejsonUrl $dcrTemplateLocalFile # Set subscription az account set --subscription "{yourSubscription}" # Get details of your Log Analytics workspace $workspaceResourceGroupName = "{yourWorkspaceResourceGroup}" $workspaceName = "{yourWorkspaceName}" $workspace = az monitor log-analytics workspace show --resource-group $workspaceResourceGroupName --workspace-name $workspaceName # Customize the DCR content. Below script depends on jq, you need to install it if it’s not available in your environment. $workspaceResourceId = $workspace | jq -r '.id' $workspaceId = $workspace | jq -r '.customerId' $location = $workspace | jq -r '.location' # Read the JSON file $templateJsonData=cat $dcrTemplateLocalFile # Update the JSON fields using jq $templateJsonData=echo $templateJsonData | jq --arg workspaceResourceId $workspaceResourceId '.properties.destinations.logAnalytics[0].workspaceResourceId = $workspaceResourceId' $templateJsonData=echo $templateJsonData | jq --arg workspaceId $workspaceId '.properties.destinations.logAnalytics[0].workspaceId = $workspaceId' $templateJsonData=echo $templateJsonData | jq --arg location $location '.location = $location' # Save the updated JSON back to the file echo $templateJsonData > $dcrTemplateLocalFile # Print the updated JSON cat $dcrTemplateLocalFile # Create the DCR using the customized JSON (DCR needs to be in the same location as Log Analytics workspace) # If your HDInsight cluster is in another subscription, you need to set subscription to your cluster’s subscription $dcrName = "{yourDcrName}" $resourceGroupName = "{YourDcrResourceGroup}" # Suggest to put DCR in the same resource group as your HDInsight cluster $dcr = az monitor data-collection rule create --name $dcrName --location $location --resource-group $resourceGroupName --rule-file $dcrTemplateLocalFile
DCR 的關聯
# Associate DCR to HDInsight cluster $hdinsightClusterResourceId = "{YourHDInsightClusterResourceId}" $dcrAssociationName = "{yourDcrAssociation}" $dcrId = $dcr | jq -r '.id' az monitor data-collection rule association create --association-name $dcrAssociationName --resource $hdinsightClusterResourceId --data-collection-rule-id $dcrId
啟用 Azure 監視器代理程式
# set variables export resourceGroup=RESOURCEGROUPNAME export cluster=CLUSTERNAME export LAW=LOGANALYTICSWORKSPACENAME # Enable the Azure Monitor Agent logs integration on an HDInsight cluster. az hdinsight azure-monitor-agent enable --name $cluster --resource-group $resourceGroup --workspace $LAW # Get the status of Azure Monitor Agent logs integration on an HDInsight cluster. az hdinsight azure-monitor-agent show --name $cluster --resource-group $resourceGroup
(選用) 停用 Azure 監視器代理程式。
az hdinsight azure-monitor-agent disable --name $cluster --resource-group $resourceGroup
針對 Spark 叢集啟用 Azure 監視器代理程式記錄
Azure HDInsight Spark 叢集會使用 Spark 設定 spark.hdi.ama.enabled
控制 AMA 整合,依預設此值會設為 false。 此設定可控制 Spark 特定記錄是否會出現在 Log Analytics 工作區中。 如果想要在 Spark 叢集中啟用 AMA,擷取其 LA 工作區中的 Spark 事件記錄,則必須執行額外的步驟,為 Spark 特定記錄啟用 AMA。
下列步驟說明客戶如何為其 Spark 工作負載,啟用新的 Azure 監視器代理程式記錄。
移至 Ambari -> Spark 設定。
瀏覽至 [自訂 Spark 預設值] 並搜尋設定
spark.hdi.ama.enabled
,此設定的預設值會是 false。 將此值設定為 true。按一下 [儲存],並重新啟動所有節點上的 Spark 服務。
存取 LA 工作區中的資料表。
存取新的資料表
有兩種方式可以存取新的資料表。
方法 1
存取新資料表的第一種方式是透過 Log Analytics 工作區。
移至您在啟用整合時選取的 Log Analytics 工作區。
在畫面左側的功能表中向下捲動,然後選取 [記錄]。 記錄查詢編輯器會跳出工作區中所有資料表的清單快顯視窗。
如果資料表是依 [解決方案] 分組,則新的 HDInsight 資料表位於 [記錄管理] 區段底下。
如果您是依 [資源類型] 將資料表分組,則資料表位於 [HDInsight 叢集] 區段下,如圖所示。
注意
此程序描述在舊整合中存取記錄的方式。 這需要使用者能夠存取工作區。
方法 2
存取新資料表的第二種方式是透過叢集入口網站存取。
瀏覽至叢集的入口網站頁面,然後向下捲動左側的功能表,直到您看到 [監視] 區段為止。 在本節中,您會看到 [記錄] 窗格。
選取 [記錄],隨即出現 [記錄] 查詢編輯器。 編輯器包含與叢集資源相關聯的所有記錄。 當您啟用整合時,會將記錄傳送至 Log Analytics 工作區。 這些記錄會提供資源型存取 (RBAC)。 使用 RBAC 時,可存取叢集但無法存取工作區的使用者,可以看到與叢集相關聯的記錄。
如需比較,下列螢幕擷取畫面會顯示舊版整合工作區檢視和新的整合工作區檢視:
舊版 (Azure 監視器傳統版) 整合工作區檢視
新增 (Azure 監視器體驗 / Azure 監視器代理程式) 整合工作區檢視
使用新資料表
要與新資料表搭配使用的預設查詢
在記錄查詢編輯器中,將切換為資料表清單上方的 [查詢]。 請確定您依 [資源類型] 將查詢分組,而且沒有針對 [HDInsight 叢集] 以外資源類型設定的篩選。 下圖顯示依 [資源類型] 分組並篩選 [HDInsight 叢集] 時的結果外觀。 只要選取一個,其隨即出現在記錄查詢編輯器中。 請務必閱讀查詢中包含的註解,因為有些註解需要您輸入一些資訊,例如叢集名稱,以便順利執行查詢。
建立您自己的查詢
您可以在記錄查詢編輯器中輸入自己的查詢。 舊資料表上使用的查詢在新的資料表上無效,因為許多新資料表中都包含新的精簡結構描述。 預設查詢是在新資料表上形成查詢的絕佳參考。
深入解析
Insights 是使用 Azure Workbooks 建立的叢集特定視覺效果儀表板。 這些儀表板提供叢集執行方式的詳細圖表和視覺效果。 儀表板具有每個叢集類型、YARN、系統計量和元件記錄的區段。 您可以造訪入口網站中的叢集頁面、向下捲動至 [監視] 區段,然後選取 [Insights] 窗格,以存取叢集的儀表板。 如果已啟用新的整合,則儀表板會自動載入。 圖表在查詢記錄時等待其幾秒鐘進行載入。
自訂 Azure 活頁簿
您可以使用自訂圖表和視覺效果來建立自己的 Azure 活頁簿。 在叢集的入口網站頁面中,向下捲動至 [監視] 區段,然後選取左側功能表中的 [活頁簿] 窗格。 您可以開始使用空白範本,或使用 [HDInsight 叢集] 區段底下的其中一個範本。 每個叢集類型都有範本。 如果您想要儲存預設 HDInsight Insights 所未提供的特定自訂,則範本會很有用。 如果您認為缺少某些功能,歡迎傳送要求,以取得 HDInsight Insights 中的新功能。
警示
您可以在記錄查詢編輯器中,將自訂警示新增至您的叢集和工作區。 從叢集或工作區入口網站選取 [記錄] 窗格,以移至記錄查詢編輯器。 執行查詢,然後選取 [新增警示規則],如下列螢幕擷取畫面所示。 如需詳細資訊,請閱讀設定警示。
遷移至新的 Azure 監視器代理程式整合
如果您是使用傳統 Azure 監視器整合,則需要在切換至新的 Azure 監視器整合之後,對新的資料表格式進行一些調整。
若要啟用新的 Azure 監視器整合,請遵循啟動新的 Azure 監視器代理程式整合一節中所述的步驟。
Log Analytics 中的執行查詢
由於新的資料表格式與先前的資料表不同,因此您必須修改您的查詢,才能使用我們的新資料表。 啟用新的 Azure 監視器整合之後,您可以瀏覽資料表和結構描述,以識別舊查詢中使用的欄位。
我們提供舊資料表與新資料表之間的對應資料表,以協助您快速找出遷移儀表板和查詢所需的新欄位。
預設查詢:我們建立了預設查詢,說明如何在常見情況下使用新的資料表。 預設查詢也會顯示每個資料表中可用的資訊。 您可以遵循本文中要與新資料表搭配使用的預設查詢一節中的指示,來存取預設查詢。
更新 HDInsight 叢集的儀表板
如果您建置多個儀表板來監視 HDInsight 叢集,則必須在啟用新的 Azure 監視器整合之後,調整資料表背後的查詢。 資料表名稱或欄位名稱在新的整合中可能會變更,但會包含您在舊整合中的所有資訊。
請參閱舊資料表/結構描述與新資料表/結構描述之間的對應資料表,以更新儀表板背後的查詢
立即可用的儀表板
我們也改善了叢集層級的立即可用儀表板。 每個圖形右上方都有一個按鈕,可讓您查看產生資訊的基礎查詢。 圖表是熟悉如何有效地查詢新資料表的絕佳方式。
發行和支援時間表
傳統 Azure 監視整合在 2021 年 10 月 15 日之後已無法使用。 在此日期之後,您無法啟用傳統 Azure 監視整合。
傳統 Azure 監視整合擷取在 2024 年 8 月 31 日之後將無法使用。
在 2025 年 2 月 1 日之後,不再支援搭配 Azure 監視器整合 (預覽版) 的 HDInsight 叢集。
現有的 Azure 監視器整合 (預覽版) 將繼續運作到 2025 年 1 月 31 日為止。 Azure 監視器 (預覽版) 整合僅可獲得有限支援。
如果解決方案需要影像變更,則客戶應該移至新的整合。
除了重大安全性問題之外,Microsoft 不會修補 Azure 監視器整合 (預覽版) 叢集。
附錄:資料表對應
如需從傳統 Azure 監視器整合至新資料表的記錄資料表對應,請參閱記錄資料表對應。