Samla in mått för Apache Spark-program med API:er
Översikt
I den här självstudien får du lära dig hur du integrerar din befintliga lokala Prometheus-server med Azure Synapse-arbetsytan för Apache Spark-programmått i nära realtid med hjälp av Synapse Prometheus-anslutningsappen.
I den här självstudien beskrivs även API:er för Azure Synapse REST-mått. Du kan hämta Apache Spark-programstatistikdata via REST-API:erna för att skapa en egen verktygslåda för övervakning och diagnos eller integrera med dina övervakningssystem.
Använda Azure Synapse Prometheus-anslutningsappen för dina lokala Prometheus-servrar
Azure Synapse Prometheus-anslutningsprogrammet är ett projekt med öppen källkod. Synapse Prometheus-anslutningsappen använder en filbaserad tjänstidentifieringsmetod så att du kan:
- Autentisera till Synapse-arbetsytan via tjänstens huvudnamn för Microsoft Entra.
- Hämta listan med Apache Spark-program på arbetsytan.
- Hämta Apache Spark-programmått via Prometheus-filbaserad konfiguration.
1. Krav
Du måste ha en Prometheus-server distribuerad på en virtuell Linux-dator.
2. Skapa ett huvudnamn för tjänsten
Om du vill använda Azure Synapse Prometheus-anslutningsappen på din lokala Prometheus-server bör du följa stegen nedan för att skapa ett huvudnamn för tjänsten.
2.1 Skapa ett huvudnamn för tjänsten:
az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>
Resultatet bör se ut så här:
{
"appId": "abcdef...",
"displayName": "<service_principal_name>",
"name": "http://<service_principal_name>",
"password": "abc....",
"tenant": "<tenant_id>"
}
Anteckna appId, lösenord och klientorganisations-ID.
2.2 Lägg till motsvarande behörigheter till tjänstens huvudnamn som skapades i ovanstående steg.
Logga in på din Azure Synapse Analytics-arbetsyta som Synapse-administratör
I Synapse Studio går du till fönstret till vänster och väljer Hantera > åtkomstkontroll
Klicka på knappen Lägg till längst upp till vänster för att lägga till en rolltilldelning
För Omfång väljer du Arbetsyta
För Roll väljer du Synapse Compute Operator
För Välj användare anger du service_principal_name <> och klickar på tjänstens huvudnamn
Klicka på Använd (Vänta 3 minuter för att behörigheten ska börja gälla.)
3. Ladda ned Azure Synapse Prometheus Anslut eller
Använd kommandona för att installera Azure Synapse Prometheus Anslut or.
git clone https://github.com/microsoft/azure-synapse-spark-metrics.git
cd ./azure-synapse-spark-metrics/synapse-prometheus-connector/src
python pip install -r requirements.txt
4. Skapa en konfigurationsfil för Azure Synapse-arbetsytor
Skapa en config.yaml-fil i mappen config och fyll i följande fält: workspace_name, tenant_id, service_principal_name och service_principal_password. Du kan lägga till flera arbetsytor i yaml-konfigurationen.
workspaces:
- workspace_name: <your_workspace_name>
tenant_id: <tenant_id>
service_principal_name: <service_principal_app_id>
service_principal_password: "<service_principal_password>"
5. Uppdatera Prometheus-konfigurationen
Lägg till följande konfigurationsavsnitt i din Prometheus-scrape_config och ersätt <your_workspace_name> till arbetsytans namn och <path_to_synapse_connector> till din klonade mapp synapse-prometheus-connector
- job_name: synapse-prometheus-connector
static_configs:
- labels:
__metrics_path__: /metrics
__scheme__: http
targets:
- localhost:8000
- job_name: synapse-workspace-<your_workspace_name>
bearer_token_file: <path_to_synapse_connector>/output/workspace/<your_workspace_name>/bearer_token
file_sd_configs:
- files:
- <path_to_synapse_connector>/output/workspace/<your_workspace_name>/application_discovery.json
refresh_interval: 10s
metric_relabel_configs:
- source_labels: [ __name__ ]
target_label: __name__
regex: metrics_application_[0-9]+_[0-9]+_(.+)
replacement: spark_$1
- source_labels: [ __name__ ]
target_label: __name__
regex: metrics_(.+)
replacement: spark_$1
6. Starta anslutningsappen på den virtuella Datorn Prometheus-servern
Starta en anslutningsserver på den virtuella Prometheus-serverdatorn enligt följande.
python main.py
Vänta några sekunder och anslutningsappen bör börja fungera. Och du kan se "synapse-prometheus-connector" på sidan För identifiering av Prometheus-tjänsten.
Använda API:er för Azure Synapse Prometheus eller REST-mått för att samla in måttdata
1. Autentisering
Du kan använda flödet för klientautentiseringsuppgifter för att hämta en åtkomsttoken. För att få åtkomst till mått-API:et bör du få en Microsoft Entra-åtkomsttoken för tjänstens huvudnamn, som har rätt behörighet att komma åt API:erna.
Parameter | Obligatoriskt | Beskrivning |
---|---|---|
tenant_id | Sant | Ditt klient-ID för Azure-tjänstens huvudnamn (program) |
grant_type | Sant | Anger den begärda beviljandetypen. I ett flöde för beviljande av klientautentiseringsuppgifter måste värdet vara client_credentials. |
client_id | Sant | Programmets (tjänstens huvudnamn) ID för det program som du registrerade i Azure-portalen eller Azure CLI. |
client_secret | Sant | Hemligheten som genereras för programmet (tjänstens huvudnamn) |
resource | Sant | Synapse-resurs-URI bör vara "https://dev.azuresynapse.net" |
curl -X GET -H 'Content-Type: application/x-www-form-urlencoded' \
-d 'grant_type=client_credentials&client_id=<service_principal_app_id>&resource=<azure_synapse_resource_id>&client_secret=<service_principal_secret>' \
https://login.microsoftonline.com/<tenant_id>/oauth2/token
Svaret ser ut så här:
{
"token_type": "Bearer",
"expires_in": "599",
"ext_expires_in": "599",
"expires_on": "1575500666",
"not_before": "1575499766",
"resource": "2ff8...f879c1d",
"access_token": "ABC0eXAiOiJKV1Q......un_f1mSgCHlA"
}
2. Lista program som körs på Azure Synapse-arbetsytan
Om du vill hämta en lista över Apache Spark-program för en Synapse-arbetsyta kan du följa det här dokumentet Övervakning – Hämta Apache Spark-jobblista.
3. Samla in Apache Spark-programmått med Prometheus- eller REST-API:er
Samla in Apache Spark-programmått med Prometheus API
Hämta de senaste måtten för det angivna Apache Spark-programmet av Prometheus API
GET https://{endpoint}/livyApi/versions/{livyApiVersion}/sparkpools/{sparkPoolName}/sessions/{sessionId}/applications/{sparkApplicationId}/metrics/executors/prometheus?format=html
Parameter | Obligatoriskt | Beskrivning |
---|---|---|
slutpunkt | Sant | Slutpunkten för arbetsytans utveckling, till exempel https://myworkspace.dev.azuresynapse.net. |
livyApiVersion | Sant | Giltig API-version för begäran. För närvarande är det 2019-11-01-preview |
sparkPoolName | Sant | Namnet på spark-poolen. |
sessionId | Sant | Identifierare för sessionen. |
sparkApplicationId | Sant | Spark-program-ID |
Exempelbegäran:
GET https://myworkspace.dev.azuresynapse.net/livyApi/versions/2019-11-01-preview/sparkpools/mysparkpool/sessions/1/applications/application_1605509647837_0001/metrics/executors/prometheus?format=html
Exempelsvar:
Statuskod: 200 Svar ser ut så här:
metrics_executor_rddBlocks{application_id="application_1605509647837_0001", application_name="mynotebook_mysparkpool_1605509570802", executor_id="driver"} 0
metrics_executor_memoryUsed_bytes{application_id="application_1605509647837_0001", application_name="mynotebook_mysparkpool_1605509570802", executor_id="driver"} 74992
metrics_executor_diskUsed_bytes{application_id="application_1605509647837_0001", application_name="mynotebook_mysparkpool_1605509570802", executor_id="driver"} 0
metrics_executor_totalCores{application_id="application_1605509647837_0001", application_name="mynotebook_mysparkpool_1605509570802", executor_id="driver"} 0
metrics_executor_maxTasks{application_id="application_1605509647837_0001", application_name="mynotebook_mysparkpool_1605509570802", executor_id="driver"} 0
metrics_executor_activeTasks{application_id="application_1605509647837_0001", application_name="mynotebook_mysparkpool_1605509570802", executor_id="driver"} 1
metrics_executor_failedTasks_total{application_id="application_1605509647837_0001", application_name="mynotebook_mysparkpool_1605509570802", executor_id="driver"} 0
metrics_executor_completedTasks_total{application_id="application_1605509647837_0001", application_name="mynotebook_mysparkpool_1605509570802", executor_id="driver"} 2
...
Samla in Apache Spark-programmått med REST-API:et
GET https://{endpoint}/livyApi/versions/{livyApiVersion}/sparkpools/{sparkPoolName}/sessions/{sessionId}/applications/{sparkApplicationId}/executors
Parameter | Obligatoriskt | Beskrivning |
---|---|---|
slutpunkt | Sant | Slutpunkten för arbetsytans utveckling, till exempel https://myworkspace.dev.azuresynapse.net. |
livyApiVersion | Sant | Giltig API-version för begäran. För närvarande är det 2019-11-01-preview |
sparkPoolName | Sant | Namnet på spark-poolen. |
sessionId | Sant | Identifierare för sessionen. |
sparkApplicationId | Sant | Spark-program-ID |
Exempelförfrågan
GET https://myworkspace.dev.azuresynapse.net/livyApi/versions/2019-11-01-preview/sparkpools/mysparkpool/sessions/1/applications/application_1605509647837_0001/executors
Exempel på svarsstatuskod: 200
[
{
"id": "driver",
"hostPort": "f98b8fc2aea84e9095bf2616208eb672007bde57624:45889",
"isActive": true,
"rddBlocks": 0,
"memoryUsed": 75014,
"diskUsed": 0,
"totalCores": 0,
"maxTasks": 0,
"activeTasks": 0,
"failedTasks": 0,
"completedTasks": 0,
"totalTasks": 0,
"totalDuration": 0,
"totalGCTime": 0,
"totalInputBytes": 0,
"totalShuffleRead": 0,
"totalShuffleWrite": 0,
"isBlacklisted": false,
"maxMemory": 15845975654,
"addTime": "2020-11-16T06:55:06.718GMT",
"executorLogs": {
"stdout": "http://f98b8fc2aea84e9095bf2616208eb672007bde57624:8042/node/containerlogs/container_1605509647837_0001_01_000001/trusted-service-user/stdout?start=-4096",
"stderr": "http://f98b8fc2aea84e9095bf2616208eb672007bde57624:8042/node/containerlogs/container_1605509647837_0001_01_000001/trusted-service-user/stderr?start=-4096"
},
"memoryMetrics": {
"usedOnHeapStorageMemory": 75014,
"usedOffHeapStorageMemory": 0,
"totalOnHeapStorageMemory": 15845975654,
"totalOffHeapStorageMemory": 0
},
"blacklistedInStages": []
},
// ...
]
4. Skapa egna diagnos- och övervakningsverktyg
Prometheus-API:et och REST-API:erna innehåller omfattande måttdata om apache Spark-programmet som kör information. Du kan samla in programrelaterade måttdata via Prometheus-API:et och REST-API:erna. Och skapa dina egna diagnos- och övervakningsverktyg som passar bättre för dina behov.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för