共用方式為


使用 Prometheus 和 Grafana 監視 Apache Spark 應用程式計量

概觀

在本教學課程中,您將瞭解如何將 Apache Spark 應用程式計量解決方案部署至 Azure Kubernetes Service (AKS) 叢集,並瞭解如何整合 Grafana 儀錶板。

您可以使用此解決方案,近乎即時地收集和查詢 Apache Spark 計量數據。 整合式 Grafana 儀錶板可讓您診斷和監視 Apache Spark 應用程式。 原始碼和組態已在 GitHub 上開放原始碼。

必要條件

  1. Azure CLI
  2. Helm 用戶端 3.30+
  3. kubectl
  4. Azure Kubernetes Service (AKS)

或者,使用 Azure Cloud Shell,其中包含 Azure CLI、Helm 用戶端和現用 Kubectl。

登入 Azure

az login
az account set --subscription "<subscription_id>"

建立 Azure Kubernetes 服務實例 (AKS)

使用 Azure CLI 命令,在您的訂用帳戶中建立 Kubernetes 叢集。

az aks create --name <kubernetes_name> --resource-group <kubernetes_resource_group> --location <location> --node-vm-size Standard_D2s_v3
az aks get-credentials --name <kubernetes_name> --resource-group <kubernetes_resource_group>

注意:如果您已經有 AKS 叢集,則可以略過此步驟。

建立服務主體,並將許可權授與 Synapse 工作區

az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>

結果看起來應該像這樣:

{
  "appId": "abcdef...",
  "displayName": "<service_principal_name>",
  "name": "http://<service_principal_name>",
  "password": "abc....",
  "tenant": "<tenant_id>"
}

記下 appId、密碼和 tenantID。

screenshot grant permission srbac

  1. 以 Synapse 管理員 istrator 身分登入您的 Azure Synapse Analytics 工作區

  2. 在 Synapse Studio 的左側窗格中,選取 [管理存取控制]>

  3. 按兩下左上方的 [新增] 按鈕以 新增角色指派

  4. 針對 [範圍],選擇 [ 工作區]

  5. 針對 [角色],選擇 [ Synapse 計算運算符]

  6. 針對 [選取使用者],輸入您的 <service_principal_name> 並按兩下您的服務主體

  7. 按兩下 [套用 ] (等候 3 分鐘讓許可權生效。

注意

請確定您的服務主體至少是 Synapse 工作區中的「讀者」角色。 移至 Azure 入口網站 的 [存取控制 (IAM) 索引標籤,並檢查許可權設定。

安裝連接器、Prometheus 伺服器、Grafana 儀錶板

  1. 將 synapse-charts 存放庫新增至 Helm 用戶端。
helm repo add synapse-charts https://github.com/microsoft/azure-synapse-spark-metrics/releases/download/helm-chart
  1. 透過 Helm 用戶端安裝元件:
helm install spo synapse-charts/synapse-prometheus-operator --create-namespace --namespace spo \
    --set synapse.workspaces[0].workspace_name="<workspace_name>" \
    --set synapse.workspaces[0].tenant_id="<tenant_id>" \
    --set synapse.workspaces[0].service_principal_name="<service_principal_app_id>" \
    --set synapse.workspaces[0].service_principal_password="<service_principal_password>" \
    --set synapse.workspaces[0].subscription_id="<subscription_id>" \
    --set synapse.workspaces[0].resource_group="<workspace_resource_group_name>"
  • workspace_name:Synapse 工作區名稱。
  • subscription_id:Synapse 工作區訂用帳戶標識碼。
  • workspace_resource_group_name:Synapse 工作區資源組名。
  • tenant_id:Synapse 工作區租用戶標識符。
  • service_principal_app_id:服務主體 “appId”
  • service_principal_password:您建立的服務主體密碼。

登入 Grafana

取得 Grafana 的預設密碼和位址。 您可以在 Grafana 設定中變更密碼。

kubectl get secret --namespace spo spo-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
kubectl -n spo get svc spo-grafana

取得服務 ip、將外部 IP 複製並貼到瀏覽器,並使用使用者名稱 「admin」 和密碼登入。

使用 Grafana 儀錶板

在 Grafana 頁面左上角尋找 Synapse 儀錶板(首頁 -> Synapse 工作區 /Synapse 應用程式),請嘗試在 Synapse Studio 中執行範例程式代碼,並等候幾秒鐘的計量提取。

此外,您可以使用「Synapse 工作區/工作區」和「Synapse 工作區/Apache Spark 集區」儀錶板來取得工作區和 Apache Spark 集區的概觀。

解除安裝

依 Helm 命令移除元件,如下所示。

helm delete <release_name> -n <namespace>

刪除 AKS 叢集。

az aks delete --name <kubernetes_cluster_name> --resource-group <kubernetes_cluster_rg>

元件簡介

Azure Synapse Analytics 會根據 Prometheus 運算符和 Synapse Prometheus 連線 or 提供 Helm 圖表。 Helm 圖表包含適用於 Apache Spark 應用層級計量的 Prometheus 伺服器、Grafana 伺服器和 Grafana 儀錶板。 您可以使用 熱門的開放原始碼監視系統 Prometheus,以近乎即時的方式收集這些計量,並使用 Grafana 進行視覺效果。

Synapse Prometheus 連線 or

Synapse Prometheus 連線 or 可協助連線 Azure Synapse Apache Spark 集區和您的 Prometheus 伺服器。 它會實作:

  1. 驗證:它是 AAD 型驗證,而且可以針對應用程式探索、計量擷取和其他函式自動重新整理服務主體的 AAD 令牌。
  2. Apache Spark 應用程式探索:當您在目標工作區中提交應用程式時,Synapse Prometheus 連線 or 可以自動探索這些應用程式。
  3. Apache Spark 應用程式元數據:它會收集基本應用程式資訊,並將數據匯出至 Prometheus。

Synapse Prometheus 連線 or 會以裝載在 Microsoft Container Registry 上的 Docker 映射的形式發行。 它是開放原始碼,且位於 Azure Synapse Apache Spark 應用程式計量

Prometheus 伺服器

Prometheus 是開放原始碼監視和警示工具組。 Prometheus 畢業於雲端原生運算基金會 (NCF),成為雲端原生監視的事實上標準。 Prometheus 可協助我們收集、查詢及儲存大量的時間序列數據,而且可以輕鬆地與 Grafana 整合。 在此解決方案中,我們會根據 helm 圖表部署 Prometheus 元件。

Grafana 和儀錶板

Grafana 是開放原始碼視覺效果和分析軟體。 它可讓您查詢、視覺化、警示及探索計量。 Azure Synapse Analytics 提供一組預設 Grafana 儀錶板,以可視化 Apache Spark 應用層級計量。

「Synapse 工作區/工作區」儀錶板提供所有 Apache Spark 集區、應用程式計數、CPU 核心等工作區層級檢視。

screenshot dashboard workspace

「Synapse 工作區/Apache Spark 集區」儀錶板包含期間在所選 Apache Spark 集區中執行的 Apache Spark 應用程式的計量。

screenshot dashboard sparkpool

「Synapse 工作區/Apache Spark 應用程式」儀錶板包含選取的 Apache Spark 應用程式。

screenshot dashboard application

上述儀錶板範本已在 Azure Synapse Apache Spark 應用程式計量開放原始碼。