Metrische gegevens van Apache Spark-toepassingen verzamelen met behulp van API's
Overzicht
In deze zelfstudie leert u hoe u uw bestaande on-premises Prometheus-server integreert met azure Synapse-werkruimte voor bijna realtime metrische gegevens van Apache Spark-toepassingen met behulp van de Synapse Prometheus-connector.
In deze zelfstudie worden ook de API's voor metrische gegevens van Azure Synapse REST geïntroduceerd. U kunt metrische gegevens van apache Spark-toepassingen ophalen via de REST API's om uw eigen bewakings- en diagnosetoolkit te bouwen of te integreren met uw bewakingssystemen.
Azure Synapse Prometheus-connector gebruiken voor uw on-premises Prometheus-servers
Azure Synapse Prometheus-connector is een opensource-project. De Synapse Prometheus-connector maakt gebruik van een op bestanden gebaseerde servicedetectiemethode waarmee u het volgende kunt doen:
- Verifiëren bij Synapse-werkruimte via een Microsoft Entra-service-principal.
- Lijst met Apache Spark-toepassingen voor werkruimte ophalen.
- Pull Apache Spark application metrics through Prometheus file-based configuration.
1. Vereiste
U moet een Prometheus-server hebben geïmplementeerd op een Virtuele Linux-machine.
2. Een service-principal maken
Als u de Azure Synapse Prometheus-connector in uw on-premises Prometheus-server wilt gebruiken, volgt u de onderstaande stappen om een service-principal te maken.
2.1 Een service-principal maken:
az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>
Het resultaat moet er als volgt uitzien:
{
"appId": "abcdef...",
"displayName": "<service_principal_name>",
"name": "http://<service_principal_name>",
"password": "abc....",
"tenant": "<tenant_id>"
}
Noteer de appId, het wachtwoord en de tenant-id.
2.2 Voeg overeenkomstige machtigingen toe aan de service-principal die in de bovenstaande stap is gemaakt.
Meld u aan bij uw Azure Synapse Analytics-werkruimte als Synapse Beheer istrator
In Synapse Studio selecteert u in het linkerdeelvenster Toegangsbeheer beheren >
Klik linksboven op de knop Toevoegen om een roltoewijzing toe te voegen
Kies voor Bereik de optie Werkruimte
Voor Rol kiest u Synapse Compute-operator
Voer voor Gebruiker selecteren uw <service_principal_name> in en klik op uw service-principal
Klik op Toepassen (wacht 3 minuten totdat de machtiging van kracht wordt.)
3. Download de Azure Synapse Prometheus-Verbinding maken or
Gebruik de opdrachten om de Azure Synapse Prometheus-Verbinding maken or te installeren.
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. Een configuratiebestand maken voor Azure Synapse-werkruimten
Maak een bestand config.yaml in de configuratiemap en vul de volgende velden in: workspace_name, tenant_id, service_principal_name en service_principal_password. U kunt meerdere werkruimten toevoegen in de yaml-configuratie.
workspaces:
- workspace_name: <your_workspace_name>
tenant_id: <tenant_id>
service_principal_name: <service_principal_app_id>
service_principal_password: "<service_principal_password>"
5. De Prometheus-configuratie bijwerken
Voeg de volgende configuratiesectie toe aan uw Prometheus-scrape_config en vervang de your_workspace_name door de <naam van uw werkruimte en de <path_to_synapse_connector> aan de gekloonde map 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. Start de connector in de Prometheus-server-VM
Start als volgt een connectorserver in de Prometheus-server-VM.
python main.py
Wacht enkele seconden en de connector werkt nu. En u kunt de 'synapse-prometheus-connector' zien op de detectiepagina van de Prometheus-service.
Api's voor metrische gegevens van Azure Synapse Prometheus of REST gebruiken om metrische gegevens te verzamelen
1. Verificatie
U kunt de clientreferentiestroom gebruiken om een toegangstoken op te halen. Als u toegang wilt krijgen tot de API voor metrische gegevens, moet u een Microsoft Entra-toegangstoken ophalen voor de service-principal, die over de juiste machtigingen beschikt om toegang te krijgen tot de API's.
Parameter | Vereist | Beschrijving |
---|---|---|
tenant_id | Waar | De tenant-id van uw Azure-service-principal (toepassing) |
grant_type | Waar | Hiermee geeft u het aangevraagde toekenningstype. In een stroom voor het verlenen van clientreferenties moet de waarde worden client_credentials. |
client_id | Waar | De toepassings-id (service-principal) van de toepassing die u hebt geregistreerd in Azure Portal of Azure CLI. |
client_secret | Waar | Het geheim dat is gegenereerd voor de toepassing (service-principal) |
resource | Waar | Synapse-resource-URI moet 'https://dev.azuresynapse.net' zijn |
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
Antwoord ziet er als volgt uit:
{
"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. Lijst met actieve toepassingen in de Azure Synapse-werkruimte
Als u een lijst met Apache Spark-toepassingen voor een Synapse-werkruimte wilt ophalen, volgt u dit document bewaken - Apache Spark-takenlijst ophalen.
3. Metrische gegevens van Apache Spark-toepassingen verzamelen met de Prometheus- of REST-API's
Metrische gegevens van Apache Spark-toepassingen verzamelen met de Prometheus-API
De meest recente metrische gegevens ophalen van de opgegeven Apache Spark-toepassing door de Prometheus-API
GET https://{endpoint}/livyApi/versions/{livyApiVersion}/sparkpools/{sparkPoolName}/sessions/{sessionId}/applications/{sparkApplicationId}/metrics/executors/prometheus?format=html
Parameter | Vereist | Beschrijving |
---|---|---|
endpoint | Waar | Het eindpunt voor de ontwikkeling van de werkruimte, bijvoorbeeld https://myworkspace.dev.azuresynapse.net. |
livyApiVersion | Waar | Geldige API-versie voor de aanvraag. Momenteel is het 2019-11-01-preview |
sparkPoolName | Waar | Naam van de spark-pool. |
sessionId | Waar | Id voor de sessie. |
sparkApplicationId | Waar | Spark-toepassings-id |
Voorbeeldaanvraag:
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
Voorbeeldantwoord:
Statuscode: 200-antwoord ziet er als volgt uit:
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
...
Metrische gegevens van Apache Spark-toepassingen verzamelen met de REST API
GET https://{endpoint}/livyApi/versions/{livyApiVersion}/sparkpools/{sparkPoolName}/sessions/{sessionId}/applications/{sparkApplicationId}/executors
Parameter | Vereist | Beschrijving |
---|---|---|
endpoint | Waar | Het eindpunt voor de ontwikkeling van de werkruimte, bijvoorbeeld https://myworkspace.dev.azuresynapse.net. |
livyApiVersion | Waar | Geldige API-versie voor de aanvraag. Momenteel is het 2019-11-01-preview |
sparkPoolName | Waar | Naam van de spark-pool. |
sessionId | Waar | Id voor de sessie. |
sparkApplicationId | Waar | Spark-toepassings-id |
Voorbeeldaanvraag
GET https://myworkspace.dev.azuresynapse.net/livyApi/versions/2019-11-01-preview/sparkpools/mysparkpool/sessions/1/applications/application_1605509647837_0001/executors
Voorbeeld van antwoordstatuscode: 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. Uw eigen diagnose- en bewakingshulpprogramma's bouwen
De Prometheus-API en de REST API's bieden uitgebreide metrische gegevens over de Apache Spark-toepassing die wordt uitgevoerd. U kunt de toepassingsgerelateerde metrische gegevens verzamelen via de Prometheus-API en de REST API's. En bouw uw eigen diagnose- en bewakingshulpprogramma's die geschikter zijn voor uw behoeften.