Dashboards gebruiken om metrische gegevens van Azure Databricks te visualiseren
In dit artikel wordt beschreven hoe u een Grafana-dashboard in kunt stellen om uw Azure Databricks te controleren op prestatieproblemen.
Azure Databricks is een snelle, krachtige en op samenwerking gebaseerde analyseservice Apache Sparkwaarmee u eenvoudig snel big data analytics- en AI-oplossingen (kunstmatige intelligentie) kunt ontwikkelen en implementeren. Bewaking is een essentieel onderdeel van het Azure Databricks workloads in productie. De eerste stap is het verzamelen van metrische gegevens in een werkruimte voor analyse. In Azure is de beste oplossing voor het beheren van logboekgegevens Azure Monitor. Azure Databricks biedt geen standaardondersteuning voor het verzenden van logboekgegevens naar Azure Monitor, maar er is een bibliotheek voor deze functionaliteit beschikbaar in GitHub.
Deze bibliotheek maakt logboekregistratie van metrische gegevens Azure Databricks service mogelijk, evenals Apache Spark metrische gegevens van streamingquerygebeurtenissen te structureren. Zodra u deze bibliotheek hebt geïmplementeerd in een Azure Databricks-cluster, kunt u een set Grafana-dashboards verder implementeren die u als onderdeel van uw productieomgeving kunt implementeren.

Vereisten
Configureer uw Azure Databricks voor het gebruik van de bewakingsbibliotheek, zoals beschreven in GitHub leesmij.
De Azure Log Analytics-werkruimte implementeren
Volg deze stappen om de Azure Log Analytics-werkruimte te implementeren:
Navigeer naar de
/perftools/deployment/loganalyticsmap .Implementeer delogAnalyticsDeploy.jsop Azure Resource Manager sjabloon. Zie Deploy resources with Resource Manager templates and Azure CLI (Resources implementeren met Resource Manager en Azure CLI) voor meer informatie over het implementeren van Resource Manager-sjablonen. De sjabloon heeft de volgende parameters:
- location: de regio waar de Log Analytics-werkruimte en dashboards worden geïmplementeerd.
- serviceTier: de prijscategorie van de werkruimte. Kijk hier voor een lijst met geldige waarden.
- dataRetention (optioneel): het aantal dagen dat de logboekgegevens worden bewaard in de Log Analytics-werkruimte. De standaardwaarde is 30 dagen. Als de prijscategorie
Freeis, moet de gegevensretentie zeven dagen zijn. - workspaceName (optioneel): een naam voor de werkruimte. Als dit niet wordt opgegeven, genereert de sjabloon een naam.
az group deployment create --resource-group <resource-group-name> --template-file logAnalyticsDeploy.json --parameters location='East US' serviceTier='Standalone'
Met deze sjabloon maakt u de werkruimte en maakt u ook een set vooraf gedefinieerde query's die door het dashboard worden gebruikt.
Grafana implementeren in een virtuele machine
Grafana is een open source-project dat u kunt implementeren om de metrische tijdreeksgegevens te visualiseren die zijn opgeslagen in uw Azure Log Analytics-werkruimte met behulp van de Grafana-invoeghulp voor Azure Monitor. Grafana wordt uitgevoerd op een virtuele machine (VM) en vereist een opslagaccount, virtueel netwerk en andere resources. Volg deze stappen om een virtuele machine te implementeren met de bitnami-gecertificeerde Grafana-afbeelding en de bijbehorende resources:
Gebruik de Azure CLI om de voorwaarden voor de Azure Marketplace grafana te accepteren.
az vm image accept-terms --publisher bitnami --offer grafana --plan defaultNavigeer
/spark-monitoring/perftools/deployment/grafananaar de map in uw lokale kopie van GitHub-repo.Implementeer degrafanaDeploy.jsop Resource Manager sjabloon als volgt:
export DATA_SOURCE="https://raw.githubusercontent.com/mspnp/spark-monitoring/master/perftools/deployment/grafana/AzureDataSource.sh" az group deployment create \ --resource-group <resource-group-name> \ --template-file grafanaDeploy.json \ --parameters adminPass='<vm password>' dataSource=$DATA_SOURCE
Zodra de implementatie is voltooid, wordt de bitnami-installatiekop van Grafana geïnstalleerd op de virtuele machine.
Het Grafana-wachtwoord bijwerken
Als onderdeel van het installatieproces wordt met het Grafana-installatiescript een tijdelijk wachtwoord voor de gebruiker met beheerdersrechten uitgevoerd. U hebt dit tijdelijke wachtwoord nodig om u aan te melden. Volg deze stappen om het tijdelijke wachtwoord te verkrijgen:
- Meld u aan bij Azure Portal.
- Selecteer de resourcegroep waarin de resources zijn geïmplementeerd.
- Selecteer de VM waarop Grafana is geïnstalleerd. Als u de standaardparameternaam in de implementatiesjabloon hebt gebruikt, wordt de VM-naam vooraf laten gaan door sparkmonitoring-vm-grafana.
- Klik in de sectie Ondersteuning en probleemoplossing op Diagnostische gegevens over opstarten om de pagina Diagnostische gegevens over opstarten te openen.
- Klik op Seriële logboek op de pagina Diagnostische gegevens over opstarten.
- Zoek naar de volgende tekenreeks: 'Bitnami-toepassingswachtwoord instellen op'.
- Kopieer het wachtwoord naar een veilige locatie.
Wijzig vervolgens het Grafana-beheerderswachtwoord door de volgende stappen uit te voeren:
- Selecteer in Azure Portal VM en klik op Overzicht.
- Kopieer het openbare IP-adres.
- Open een webbrowser en navigeer naar de volgende URL:
http://<IP address>:3000. - Voer in het scherm Grafana-aanmelding de gebruikersnaam admin in en gebruik het Grafana-wachtwoord uit de vorige stappen.
- Wanneer u bent aangemeld, selecteert u Configuratie (het tandwielpictogram).
- Selecteer Serverbeheerder.
- Selecteer op het tabblad Gebruikers de aanmeldgegevens van de beheerder.
- Werk het wachtwoord bij.
Een Azure Monitor maken
Maak een service-principal waarmee Grafana de toegang tot uw Log Analytics-werkruimte kan beheren. Zie Een Azure-service-principal maken met Azure CLI voor meer informatie
az ad sp create-for-rbac --name http://<service principal name> --role "Log Analytics Reader"Noteer de waarden voor appId, password en tenant in de uitvoer van deze opdracht:
{ "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "displayName": "azure-cli-2019-03-27-00-33-39", "name": "http://<service principal name>", "password": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }Meld u aan bij Grafana zoals eerder beschreven. Selecteer Configuratie (het tandwielpictogram) en vervolgens Gegevensbronnen.
Klik op het tabblad Gegevensbronnen op Gegevensbron toevoegen.
Selecteer Azure Monitor als het gegevensbrontype.
Voer in Instellingen in het tekstvak Naam een naam in voor de gegevensbron.
Voer in Azure Monitor api-details de volgende gegevens in:
- Abonnements-id: uw Azure-abonnements-id.
- Tenant-id: de tenant-id van eerder.
- Client-id: de waarde van 'appId' van eerder.
- Clientgeheim: de waarde van 'wachtwoord' van eerder.
In de sectie Details van de Azure Log Analytics-API controleert u het selectievakje Dezelfde details als Azure Monitor API.
Klik op Save & Test. Als de Log Analytics-gegevensbron juist is geconfigureerd, wordt een bericht weergegeven dat de configuratie is geslaagd.
Het dashboard maken
Volg de volgende stappen om de dashboards in Grafana te maken:
Navigeer
/perftools/dashboards/grafananaar de map in uw lokale kopie van GitHub-repo.Voer het volgende script uit:
export WORKSPACE=<your Azure Log Analytics workspace ID> export LOGTYPE=SparkListenerEvent_CL sh DashGen.shDe uitvoer van het script is een bestand met deSparkMonitoringDash.jsop.
Ga terug naar het Grafana-dashboard en selecteer Maken (het pluspictogram).
Selecteer Importeren.
Klik Upload JSON-bestand.
Selecteer het SparkMonitoringDash.jsbestand dat u in stap 2 hebt gemaakt.
Selecteer in de sectie Opties, onder ALA, de Azure Monitor gegevensbron die u eerder hebt gemaakt.
Klik op Import.
Visualisaties in de dashboards
Zowel de Azure Log Analytics- als grafana-dashboards bevatten een set tijdreeksvisualisaties. Elke grafiek is een tijdreeksplot van metrische gegevens die betrekking hebbenop een Apache Spark job, fasen van de job en taken waar elke fase deel van uit maakt.
De visualisaties zijn:
Taaklatentie
Deze visualisatie toont de uitvoeringslatentie voor een taak. Dit is een coarse-weergave van de algehele prestaties van een taak. Geeft de duur van de taakuitvoering weer van begin tot eind. Houd er rekening mee dat de begintijd van de taak niet hetzelfde is als de tijd voor het indienen van de taak. Latentie wordt weergegeven als percentielen (10%, 30%, 50%, 90%) van de taakuitvoering, geïndexeerd op cluster-id en toepassings-id.
Faselatentie
De visualisatie toont de latentie van elke fase per cluster, per toepassing en per afzonderlijke fase. Deze visualisatie is handig voor het identificeren van een bepaalde fase die langzaam wordt uitgevoerd.
Taaklatentie
In deze visualisatie ziet u de latentie van de taakuitvoering. Latentie wordt weergegeven als een percentiel van taakuitvoering per cluster, fasenaam en toepassing.
Taakuitvoering per host optelsom
Deze visualisatie toont de som van de latentie van de taakuitvoering per host die wordt uitgevoerd op een cluster. Als u de latentie van de taakuitvoering per host bekijkt, worden hosts geïdentificeerd die een veel hogere algemene taaklatentie hebben dan andere hosts. Dit kan betekenen dat taken inefficiënt of ongelijkmatig zijn verdeeld over hosts.
Metrische gegevens voor taken
Deze visualisatie toont een set metrische uitvoeringsgegevens voor de uitvoering van een bepaalde taak. Deze metrische gegevens omvatten de grootte en duur van een willekeurige volgorde van gegevens, de duur van serialisatie- en deserialisatiebewerkingen, en andere. Bekijk de Log Analytics-query voor het deelvenster voor de volledige set metrische gegevens. Deze visualisatie is handig om inzicht te krijgen in de bewerkingen waar een taak uit bestaat en om het resourceverbruik van elke bewerking te identificeren. Pieken in de grafiek vertegenwoordigen kostbare bewerkingen die moeten worden onderzocht.
Clusterdoorvoer
Deze visualisatie is een weergave op hoog niveau van werkitems die zijn geïndexeerd door cluster en toepassing om de hoeveelheid werk weer te geven die per cluster en toepassing wordt uitgevoerd. U ziet het aantal taken, taken en fasen dat per cluster, toepassing en fase is voltooid in stappen van één minuut.
Streamingdoorvoer/latentie
Deze visualisatie is gerelateerd aan de metrische gegevens die zijn gekoppeld aan een gestructureerde streamingquery. In de grafiek ziet u het aantal invoerrijen per seconde en het aantal rijen dat per seconde wordt verwerkt. De metrische streaminggegevens worden ook per toepassing weergegeven. Deze metrische gegevens worden verzonden wanneer de gebeurtenis OnQueryProgress wordt gegenereerd terwijl de gestructureerde streamingquery wordt verwerkt en de visualisatie de streaminglatentie vertegenwoordigt als de hoeveelheid tijd, in milliseconden, die nodig is om een querybatch uit te voeren.
Resourceverbruik per uitvoerder
Vervolgens ziet u een set visualisaties voor het dashboard die het specifieke type resource laten zien en hoe deze per uitvoerder op elk cluster wordt gebruikt. Deze visualisaties helpen bij het identificeren van uitschieters in resourceverbruik per uitvoerder. Als de werktoewijzing voor een bepaalde uitvoerder bijvoorbeeld scheef is, wordt het resourceverbruik verhoogd ten opzichte van andere uitvoerders die op het cluster worden uitgevoerd. Dit kan worden geïdentificeerd door pieken in het resourceverbruik voor een uitvoerder.
Metrische gegevens voor rekentijd van uitvoerder
Hierna ziet u een set visualisaties voor het dashboard die de verhouding tussen tijd serialiseren van uitvoerders, deserialiseren van tijd, CPU-tijd en tijd van de java-virtuele machine tot de totale rekentijd van de uitvoerder tonen. Hiermee wordt visueel gedemonstreerd hoeveel van deze vier metrische gegevens bijdragen aan de algehele verwerking van uitvoerders.
Metrische gegevens in willekeurige volgorde
De laatste set visualisaties toont de metrische gegevens voor het in willekeurige volgorde wijzigen van gegevens die zijn gekoppeld aan een gestructureerde streamingquery voor alle uitvoerders. Deze omvatten willekeurige bytes lezen, willekeurige bytes geschreven, willekeurige geheugen en schijfgebruik in query's waar het bestandssysteem wordt gebruikt.