共用方式為


使用 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 來儲存工作區金鑰,請遵循下列步驟:

  1. 在 Azure 入口網站中建立並移至您的金鑰保存庫。

  2. 在金鑰保存庫的設定頁面上,選取 [密碼]

  3. 選取產生/匯入

  4. [建立祕密]畫面中,選擇下列值:

    • 名稱:輸入祕密的名稱。 若為預設值,請輸入 SparkLogAnalyticsSecret
    • [值]:輸入密碼的 <LOG_ANALYTICS_WORKSPACE_KEY>
    • 將其他值保留為其預設值。 然後選取建立
  5. 收集 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 連結服務以儲存工作區金鑰,請遵循下列步驟:

  1. 遵循上一節「選項 2」中的所有步驟。

  2. 在 Synapse Studio 中建立 Key Vault 連結服務:

    a. 移至 [Synapse Studio]>[管理] >[連結服務],然後選取 [新增]

    b. 在搜尋方塊中搜尋 Azure Key Vault

    c. 輸入連結服務的名稱。

    d. 選擇您的金鑰保存庫,然後選取 [建立]

  3. 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 組態。 當您選取時,會顯示組態的詳細資料。

  1. 選取 [管理] > [Apache Spark 組態]

  2. 選取 [ 新增 ] 按鈕以建立新的 Apache Spark 組態。

  3. 選取 [新增] 按鈕之後,將會開啟新的 Apache Spark 組態頁面。

    建立 Spark 設定的螢幕擷取畫面。

  4. 針對 [名稱],您可以輸入慣用的有效名稱。

  5. 針對 [描述],您可以在其中輸入一些描述。

  6. 針對 [註釋],您可以按一下 [新增] 按鈕來新增註釋,也可以選取並按一下 [刪除] 按鈕來刪除現有的註釋。

  7. 針對 [組態屬性],選取 [新增] 按鈕,從您選擇的組態選項新增所有屬性。 針對 [屬性 ] 新增列出的屬性名稱,而 [ ] 會使用您在步驟 2 期間收集的值。 如果您未新增屬性,Azure Synapse 會在適用時使用預設值。

    螢幕快照,其中包含更新組態屬性的範例。

提交 Apache Spark 的應用程式,並檢視記錄和計量

方法如下:

  1. 將 Apache Spark 應用程式提交至在上一個步驟中設定的 Apache Spark 集區。 您可以使用下列任何一種方式來執行此動作:

    • 在 Synapse Studio 中執行筆記本。
    • 在 Synapse Studio 中,透過 Apache Spark 工作定義提交 Apache Spark 批次工作。
    • 執行包含 Apache Spark 活動的管線。
  2. 移至指定的 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")

使用範例活頁簿將計量和記錄視覺化

  1. 下載活頁簿

  2. 開啟並複製活頁簿檔案內容。

  3. Azure 入口網站中,選取 [Log Analytics 工作區]>[活頁簿]

  4. 開啟 [空白] 活頁簿。 選取 </> 圖示,以使用 [進階編輯器]

  5. 貼上現有的任何 JSON 程式碼。

  6. 選取 [套用],然後選取 [完成編輯]

    顯示新活頁簿的螢幕擷取畫面。

    顯示如何匯入活頁簿的螢幕擷取畫面。

然後,將您的 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):

  1. 如果沒有現有的 AMPLS,您可以遵循 Azure 監視器 Private Link 連線設定 來建立一個。
  2. 流覽至 Azure 入口網站 中的 AMPLS,在 [Azure 監視器資源] 頁面上,選取 [新增] 以將連線新增至您的 Azure Log Analytics 工作區。
  3. 流覽至 [Synapse Studio > 管理 > 受控私人端點],選取 [ 新增 ] 按鈕,選取 [Azure 監視器私人連結範圍],然後 繼續

    建立 AMPLS 受控私人端點 1 的螢幕快照。

  4. 選擇您建立的 Azure 監視器 Private Link 範圍,然後選取 [ 建立] 按鈕。

    建立 AMPLS 受控私人端點 2 的螢幕快照。

  5. 等候幾分鐘佈建私人端點。
  6. 再次流覽至 Azure 入口網站 中的 AMPLS,在 [私人端點連線] 頁面上,選取已布建和核准的連線。

注意

  • AMPLS 物件有一些您在規劃 Private Link 設定時應考慮的限制。 如需進一步檢閱這些限制,請參閱 AMPLS 限制
  • 檢查您是否具有建立受控私人端點的適當權限