Überwachen von Apache Spark-Anwendungsmetriken mit Prometheus und Grafana
Übersicht
In diesem Tutorial erfahren Sie, wie Sie die Lösung für Apache Spark-Anwendungsmetriken in einem Azure Kubernetes Service-Cluster (AKS) bereitstellen. Außerdem erhalten Sie Informationen zur Integration der Grafana-Dashboards.
Verwenden Sie diese Lösung, um die Apache Spark-Metrikdaten in Quasi-Echtzeit zu erfassen und abzufragen. Über die integrierten Grafana-Dashboards können Sie Ihre Apache Spark-Anwendung diagnostizieren und überwachen. Der Quellcode und die Konfigurationen wurden in Open-Source-Form auf GitHub freigegeben.
Voraussetzungen
Alternativ können Sie auch Azure Cloud Shell verwenden. Darin sind die Azure CLI, der Helm-Client und kubectl bereits integriert.
Anmelden an Azure
az login
az account set --subscription "<subscription_id>"
Erstellen einer Azure Kubernetes Service-Instanz (AKS)
Verwenden Sie den Azure CLI-Befehl, um einen Kubernetes-Cluster in Ihrem Abonnement zu erstellen.
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>
Hinweis: Dieser Schritt kann übersprungen werden, wenn Sie bereits über einen AKS-Cluster verfügen.
Erstellen eines Dienstprinzipals und Erteilen einer Berechtigung für den Synapse-Arbeitsbereich
az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>
Das Ergebnis sollte wie folgt aussehen:
{
"appId": "abcdef...",
"displayName": "<service_principal_name>",
"name": "http://<service_principal_name>",
"password": "abc....",
"tenant": "<tenant_id>"
}
Notieren Sie sich die appId, das Kennwort und die tenantID.
Melden Sie sich als Synapse-Administrator beim Azure Synapse Analytics-Arbeitsbereich an.
Wählen Sie in Synapse Studio im linken Bereich Verwalten > Zugriffssteuerung aus.
Klicken Sie links oben auf die Schaltfläche „Hinzufügen“, um eine Rollenzuweisung hinzuzufügen.
Wählen Sie als Bereich Arbeitsbereich aus.
Wählen Sie als Rolle die Option Operator von Synapse-Computeressourcen aus.
Geben Sie unter „Benutzer auswählen“ Ihren <Dienstprinzipalnamen> ein, und klicken Sie auf Ihren Dienstprinzipal.
Klicken Sie auf Anwenden. (Warten Sie drei Minuten, bis die Berechtigung in Kraft tritt.)
Hinweis
Stellen Sie sicher, dass Ihr Dienstprinzipal mindestens über die Rolle „Leser“ in Ihrem Synapse-Arbeitsbereich verfügt. Navigieren Sie im Azure-Portal zur Registerkarte „Zugriffssteuerung (IAM)“, und überprüfen Sie die Berechtigungseinstellungen.
Installieren von Connector, Prometheus-Server und Grafana-Dashboard
- Fügen Sie dem Helm-Client das Repository „synapse-charts“ hinzu.
helm repo add synapse-charts https://github.com/microsoft/azure-synapse-spark-metrics/releases/download/helm-chart
- Installieren von Komponenten über den Helm-Client:
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: Name des Synapse-Arbeitsbereichs.
- subscription_id: Abonnement-ID für den Synapse-Arbeitsbereich.
- workspace_resource_group_name: Name der Ressourcengruppe für den Synapse-Arbeitsbereich.
- tenant_id: Mandanten-ID für den Synapse-Arbeitsbereich.
- service_principal_app_id: „appId“ des Dienstprinzipals.
- service_principal_password: das von Ihnen erstellte Dienstprinzipalkennwort.
Anmelden an Grafana
Fordern Sie das Standardkennwort und die Adresse von Grafana an. Sie können das Kennwort in den Grafana-Einstellungen ändern.
kubectl get secret --namespace spo spo-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
kubectl -n spo get svc spo-grafana
Rufen Sie die Dienst-IP-Adresse ab. Kopieren Sie die externe IP-Adresse, und fügen Sie sie in den Browser ein. Melden Sie sich mit dem Benutzernamen „admin“ und dem Kennwort an.
Verwenden von Grafana-Dashboards
Suchen Sie in der oberen linken Ecke der Grafana-Seite nach dem Synapse-Dashboard (Start -> Synapse Workspace/Synapse Application). Führen Sie einen Beispielcode in Synapse Studio aus, und warten Sie einige Sekunden, bis die Metriken per Pull abgerufen wurden.
Sie können auch die Dashboards „Synapse-Arbeitsbereich/Arbeitsbereich“ und „Synapse-Arbeitsbereich/Apache Spark-Pools“ verwenden, um einen Überblick über Ihren Arbeitsbereich und Ihre Apache Spark-Pools zu erhalten.
Deinstallieren
Entfernen Sie die Komponenten folgendermaßen über den Helm-Befehl.
helm delete <release_name> -n <namespace>
Löschen Sie den AKS-Cluster.
az aks delete --name <kubernetes_cluster_name> --resource-group <kubernetes_cluster_rg>
Einführung in Komponenten
Azure Synapse Analytics stellt ein Helm-Diagramm bereit, das auf dem Prometheus Operator und dem Synapse-Prometheus-Connector basiert. Das Helm-Diagramm enthält den Prometheus-Server, den Grafana-Server und Grafana-Dashboards für Apache Spark-Metriken auf Anwendungsebene. Mit Prometheus, einem beliebten Open-Source-Überwachungssystem, können Sie diese Metriken in Quasi-Echtzeit erfassen und Grafana zur Visualisierung verwenden.
Synapse-Prometheus-Connector
Der Synapse-Prometheus-Connector unterstützt Sie beim Herstellen einer Verbindung zwischen dem Apache Spark-Pool in Azure Synapse und dem Prometheus-Server. Er implementiert Folgendes:
- Authentifizierung: Hierbei handelt es sich um eine auf AAD basierende Authentifizierung, die das AAD-Token des Dienstprinzipals für die Anwendungsermittlung, die Erfassung von Metriken und andere Funktionen automatisch aktualisieren kann.
- Apache Spark-Anwendungsermittlung: Wenn Sie Anwendungen im Zielarbeitsbereich übermitteln, kann der Synapse-Prometheus-Connector diese Anwendungen automatisch ermitteln.
- Apache Spark-Anwendungsmetadaten: Grundlegende Anwendungsinformationen werden erfasst und in Prometheus exportiert.
Der Synapse-Prometheus-Connector wird als Docker-Image freigegeben, das in Microsoft Container Registry gehostet wird. Er liegt im Open-Source-Format unter Azure Synapse Apache Spark-Anwendungsmetriken vor.
Prometheus-Server
Prometheus ist ein Open-Source-Toolkit mit Überwachungs- und Warnfunktionen. Prometheus ist ein graduiertes Projekt der Cloud Native Computing Foundation (CNCF) und stellt den De-Facto-Standard für die cloudbasierte Überwachung dar. Prometheus kann Sie bei der Erfassung, Abfrage und Speicherung gewaltiger Mengen an Zeitreihendaten unterstützen und lässt sich problemlos in Grafana integrieren. In dieser Lösung stellen wir die Prometheus-Komponente basierend auf dem Helm-Diagramm bereit.
Grafana und Dashboards
Grafana ist eine Open Source-Software für Visualisierungs- und Analysefunktionen. Damit können Sie Ihre Metriken abfragen, visualisieren und untersuchen sowie Warnungen erstellen. Azure Synapse Analytics bietet eine Reihe von Grafana-Standarddashboards für die Visualisierung von Apache Spark-Metriken auf Anwendungsebene.
Das Dashboard „Synapse Workspace/Workspace“ bietet für alle Apache Spark-Pools, Anwendungsindikatoren, CPU-Kerne usw. eine Ansicht auf Arbeitsbereichsebene.
Das Dashboard „Synapse-Arbeitsbereich/Apache Spark-Pools“ enthält die Metriken von Apache Spark-Anwendungen, die im ausgewählten Apache Spark-Pool während des betreffenden Zeitraums ausgeführt werden.
Das Dashboard „Synapse-Arbeitsbereich/Apache Spark-Anwendung“ enthält die ausgewählte Apache Spark-Anwendung.
Die obigen Dashboardvorlagen wurden unter Azure Synapse Apache Spark-Anwendungsmetriken im Open-Source-Format bereitgestellt.