使用 Azure Log Analytics 監視 Apache Spark 應用程式
在本教學課程中,您將瞭解如何啟用 Log Analytics 內建的 Synapse Studio 連接器。 然後,您可以收集 Apache Spark 的應用程式計量和記錄,並將其傳送至 Log Analytics 工作區。 最後,您可以使用 Azure 監視器活頁簿來視覺化計量和記錄。
設定工作區資訊
遵循下列步驟來設定 Synapse Studio 中的必要資訊。
步驟 1:建立 Log Analytics 工作區
請參閱下列其中一項資源來建立此工作區:
步驟 2:收集組態資訊
使用下列任一選項來準備組態。
選項 1:使用 Log Analytics 工作區識別碼和金鑰進行設定
收集 Spark 組態的下列值:
<LOG_ANALYTICS_WORKSPACE_ID>
:Log Analytics 工作區識別碼。<LOG_ANALYTICS_WORKSPACE_KEY>
:Log Analytics 金鑰。 如要尋找此項目,請在 Azure 入口網站中,移至 [Azure Log Analytics 工作區]>[代理程式]>[主要金鑰]。
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.secret <LOG_ANALYTICS_WORKSPACE_KEY>
選項 2:使用 Azure Key Vault 設定
注意
您必須將「讀取密碼」權限授與給要提交 Apache Spark 應用程式的使用者。 如需詳細資訊,請參閱透過 Azure 角色型存取控制,提供 Key Vault 金鑰、憑證和密碼的存取權 (預覽)。 當您在 Synapse 管線中啟用這項功能時,必須使用 [選項 3]。 若要從具有工作區受控身分識別的 Azure Key Vault 取得密碼,此為必要動作。
如要設定 Azure Key Vault 來儲存工作區金鑰,請遵循下列步驟:
在 Azure 入口網站中建立並移至您的金鑰保存庫。
在金鑰保存庫的設定頁面上,選取 [密碼]。
選取產生/匯入。
在 [建立祕密]畫面中,選擇下列值:
- 名稱:輸入祕密的名稱。 若為預設值,請輸入
SparkLogAnalyticsSecret
。 - [值]:輸入密碼的
<LOG_ANALYTICS_WORKSPACE_KEY>
。 - 將其他值保留為其預設值。 然後選取建立。
- 名稱:輸入祕密的名稱。 若為預設值,請輸入
收集 Spark 組態的下列值:
<LOG_ANALYTICS_WORKSPACE_ID>
:Log Analytics 工作區識別碼。<AZURE_KEY_VAULT_NAME>
:您設定的金鑰保存庫名稱。<AZURE_KEY_VAULT_SECRET_KEY_NAME>
(選擇性):適用於工作區金鑰的金鑰保存庫密碼名稱。 預設值為SparkLogAnalyticsSecret
。
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.keyVault.name <AZURE_KEY_VAULT_NAME>
spark.synapse.logAnalytics.keyVault.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>
注意
您也可以將工作區識別碼儲存在 Key Vault 中。 請參閱上述步驟,並以密碼名稱 SparkLogAnalyticsWorkspaceId
儲存工作區識別碼。 或者,您可以使用 spark.synapse.logAnalytics.keyVault.key.workspaceId
設定來指定 Key Vault 中的工作區識別碼密碼名稱。
選項 3。 使用連結服務進行設定
注意
在此選項中,您必須將「讀取密碼」權限授與工作區受控身分識別。 如需詳細資訊,請參閱透過 Azure 角色型存取控制,提供 Key Vault 金鑰、憑證和密碼的存取權 (預覽)。
如要在 Synapse Studio 中設定 Key Vault 連結服務以儲存工作區金鑰,請遵循下列步驟:
遵循上一節「選項 2」中的所有步驟。
在 Synapse Studio 中建立 Key Vault 連結服務:
a. 移至 [Synapse Studio]>[管理] >[連結服務],然後選取 [新增]。
b. 在搜尋方塊中搜尋 Azure Key Vault。
c. 輸入連結服務的名稱。
d. 選擇您的金鑰保存庫,然後選取 [建立]。
將
spark.synapse.logAnalytics.keyVault.linkedServiceName
項目新增至 Apache Spark 設定。
spark.synapse.logAnalytics.enabled true
spark.synapse.logAnalytics.workspaceId <LOG_ANALYTICS_WORKSPACE_ID>
spark.synapse.logAnalytics.keyVault.key.secret <AZURE_KEY_VAULT_SECRET_KEY_NAME>
spark.synapse.logAnalytics.keyVault.linkedServiceName <LINKED_SERVICE_NAME>
如需 Apache Spark 組態的清單,請參閱可用的 Apache Spark 組態
步驟 3:建立 Apache Spark 組態
您可以將 Apache Spark 組態建立至工作區,當您建立 Notebook 或 Apache spark 作業定義時,您可以選取您想要搭配 Apache Spark 集區使用的 Apache Spark 組態。 當您選取時,會顯示組態的詳細資料。
選取 [管理] > [Apache Spark 組態]。
選取 [ 新增 ] 按鈕以建立新的 Apache Spark 組態。
選取 [新增] 按鈕之後,將會開啟新的 Apache Spark 組態頁面。
針對 [名稱],您可以輸入慣用的有效名稱。
針對 [描述],您可以在其中輸入一些描述。
針對 [註釋],您可以按一下 [新增] 按鈕來新增註釋,也可以選取並按一下 [刪除] 按鈕來刪除現有的註釋。
針對 [組態屬性],選取 [新增] 按鈕,從您選擇的組態選項新增所有屬性。 針對 [屬性 ] 新增列出的屬性名稱,而 [ 值 ] 會使用您在步驟 2 期間收集的值。 如果您未新增屬性,Azure Synapse 會在適用時使用預設值。
提交 Apache Spark 的應用程式,並檢視記錄和計量
方法如下:
將 Apache Spark 應用程式提交至在上一個步驟中設定的 Apache Spark 集區。 您可以使用下列任何一種方式來執行此動作:
- 在 Synapse Studio 中執行筆記本。
- 在 Synapse Studio 中,透過 Apache Spark 工作定義提交 Apache Spark 批次工作。
- 執行包含 Apache Spark 活動的管線。
移至指定的 Log Analytics 工作區,然後在 Apache Spark 應用程式開始執行時,檢視應用程式計量和記錄。
寫入自訂應用程式記錄檔
您可以使用 Apache Log4j 程式庫來撰寫自訂記錄。
Scala 的範例:
%%spark
val logger = org.apache.log4j.LogManager.getLogger("com.contoso.LoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
//log exception
try {
1/0
} catch {
case e:Exception =>logger.warn("Exception", e)
}
// run job for task level metrics
val data = sc.parallelize(Seq(1,2,3,4)).toDF().count()
PySpark 的範例:
%%pyspark
logger = sc._jvm.org.apache.log4j.LogManager.getLogger("com.contoso.PythonLoggerExample")
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
使用範例活頁簿將計量和記錄視覺化
開啟並複製活頁簿檔案內容。
在 Azure 入口網站中,選取 [Log Analytics 工作區]>[活頁簿]。
開啟 [空白] 活頁簿。 選取 </> 圖示,以使用 [進階編輯器]。
貼上現有的任何 JSON 程式碼。
選取 [套用],然後選取 [完成編輯]。
然後,將您的 Apache Spark 應用程式提交至設定的 Apache Spark 集區。 應用程式進入執行狀態之後,請在 [活頁簿] 下拉式清單中選擇正在執行的應用程式。
您可以自訂活頁簿。 例如,您可以使用 Kusto 查詢和設定警示。
使用 Kusto 查詢資料
以下是查詢 Apache Spark 事件的範例:
SparkListenerEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100
以下是查詢 Apache Spark 應用程式驅動程式和執行程式記錄檔的範例:
SparkLoggingEvent_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| order by TimeGenerated desc
| limit 100
以下是查詢 Apache Spark 計量的範例:
SparkMetrics_CL
| where workspaceName_s == "{SynapseWorkspace}" and clusterName_s == "{SparkPool}" and livyId_s == "{LivyId}"
| where name_s endswith "jvm.total.used"
| summarize max(value_d) by bin(TimeGenerated, 30s), executorId_s
| order by TimeGenerated asc
建立及管理警示
使用者可查詢以設定的頻率評估計量和記錄,並根據結果引發警示。 如需詳細資訊,請參閱使用 Azure 監視器建立、檢視及管理記錄警示。
Synapse 工作區已啟用資料外流保護
並建立 Synapse 工作區之後,啟用資料外流保護。
當您想要啟用這項功能時,您必須在工作區核准的 Microsoft Entra 租使用者中,建立 Azure 監視器私人連結範圍 (AMPLS) 的受控私人端點連線要求。
您可以遵循下列步驟來建立 Azure 監視器私人連結範圍的受控私人端點連線(AMPLS):
- 如果沒有現有的 AMPLS,您可以遵循 Azure 監視器 Private Link 連線設定 來建立一個。
- 流覽至 Azure 入口網站 中的 AMPLS,在 [Azure 監視器資源] 頁面上,選取 [新增] 以將連線新增至您的 Azure Log Analytics 工作區。
- 流覽至 [Synapse Studio > 管理 > 受控私人端點],選取 [ 新增 ] 按鈕,選取 [Azure 監視器私人連結範圍],然後 繼續。
- 選擇您建立的 Azure 監視器 Private Link 範圍,然後選取 [ 建立] 按鈕。
- 等候幾分鐘佈建私人端點。
- 再次流覽至 Azure 入口網站 中的 AMPLS,在 [私人端點連線] 頁面上,選取已布建和核准的連線。