

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Monitora le metriche di Spark con Amazon Managed Service per Prometheus
<a name="monitor-with-prometheus"></a>

Con le versioni 7.1.0 e successive di Amazon EMR, puoi integrare EMR Serverless con Amazon Managed Service for Prometheus per raccogliere i parametri di Apache Spark per i job e le applicazioni EMR Serverless. Questa integrazione è disponibile quando invii un lavoro o crei un'applicazione utilizzando la console, l'API EMR Serverless o il. AWS AWS CLI

## Prerequisiti
<a name="monitoring-with-prometheus-prereqs"></a>

Prima di poter fornire le tue metriche Spark ad Amazon Managed Service for Prometheus, completa i seguenti prerequisiti.
+ [Crea uno spazio di lavoro Amazon Managed Service per Prometheus. ](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-onboard-create-workspace.html) Questo Workspace funge da endpoint di acquisizione. Prendi nota dell'URL visualizzato per ** Endpoint - Remote Write URL**. Dovrai specificare l'URL quando crei l'applicazione EMR Serverless.
+ Per concedere l'accesso ai tuoi job ad Amazon Managed Service for Prometheus per scopi di monitoraggio, aggiungi la seguente policy al tuo ruolo di esecuzione dei job.

  ```
  {
      "Sid": "AccessToPrometheus",
      "Effect": "Allow",
      "Action": ["aps:RemoteWrite"],
      "Resource": "arn:aws:aps:{{<AWS_REGION>}}:{{<AWS_ACCOUNT_ID>}}:workspace/{{<WORKSPACE_ID>}}"
  }
  ```

## Configurazione
<a name="monitoring-with-prometheus-setup"></a>

**Per utilizzare nuovamente il plugin AWS console per creare un'applicazione integrata con Amazon Managed Service for Prometheus**

1. Consulta la sezione [ Guida introduttiva ad Amazon EMR Serverless per creare ](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/getting-started.html                             ) un'applicazione.

1. Mentre crei un'applicazione, scegli ** Usa impostazioni personalizzate**, quindi configura l'applicazione specificando le informazioni nei campi che desideri configurare.

1. In Log e metriche delle ** applicazioni**, scegli ** Invio delle metriche del motore ad Amazon Managed Service for Prometheus**, quindi specifica l'URL di scrittura remota.

1. Specifica le altre impostazioni di configurazione che desideri, quindi scegli ** Crea e avvia l'applicazione. **

**Usa l'API Serverless AWS CLI o EMR **

Puoi anche utilizzare l'API AWS CLI o EMR Serverless per integrare la tua applicazione EMR Serverless con Amazon Managed Service for Prometheus quando esegui i comandi o. `create-application` `start-job-run`

------
#### [ create-application ]

```
aws emr-serverless create-application \
--release-label emr-7.1.0 \
--type "SPARK" \
--monitoring-configuration '{ 
    "prometheusMonitoringConfiguration": {
        "remoteWriteUrl": "https://aps-workspaces.{{<AWS_REGION>}}.amazonaws.com/workspaces/{{<WORKSPACE_ID>}}/api/v1/remote_write"
    }
}'
```

------
#### [ start-job-run ]

```
aws emr-serverless start-job-run \
--application-id {{<APPPLICATION_ID>}} \
--execution-role-arn {{<JOB_EXECUTION_ROLE>}} \
--job-driver '{
    "sparkSubmit": {
        "entryPoint": "local:///usr/lib/spark/examples/src/main/python/pi.py",
        "entryPointArguments": ["10000"],
        "sparkSubmitParameters": "--conf spark.dynamicAllocation.maxExecutors=10"
    }
}' \
--configuration-overrides '{
     "monitoringConfiguration": {
        "prometheusMonitoringConfiguration": {
            "remoteWriteUrl": "https://aps-workspaces.{{<AWS_REGION>}}.amazonaws.com/workspaces/{{<WORKSPACE_ID>}}/api/v1/remote_write"
        }
    }
}'
```

------

L'inclusione `prometheusMonitoringConfiguration` nel comando indica che EMR Serverless deve eseguire il job Spark con un agente che raccoglie le metriche Spark e le scrive sul tuo endpoint per Amazon Managed Service for Prometheus. `remoteWriteUrl` Puoi quindi utilizzare le metriche Spark in Amazon Managed Service for Prometheus per la visualizzazione, gli avvisi e l'analisi.

## Proprietà di configurazione avanzate
<a name="monitoring-with-prometheus-config-options"></a>

EMR Serverless utilizza un componente all'interno di Spark denominato `PrometheusServlet` per raccogliere le metriche di Spark e tradurre i dati sulle prestazioni in dati compatibili con Amazon Managed Service for Prometheus. Per impostazione predefinita, EMR Serverless imposta i valori predefiniti in Spark e analizza le metriche dei driver e degli esecutori quando invii un lavoro utilizzando. `PrometheusMonitoringConfiguration` 

La tabella seguente descrive tutte le proprietà configurate quando si invia un job Spark che invia metriche ad Amazon Managed Service for Prometheus.


| Proprietà Spark | Valore predefinito | Description | 
| --- | --- | --- | 
| spark.metrics.conf.\*.sink.prometheusServlet.class | org.apache.spark.metrics.sink. PrometheusServlet | La classe utilizzata da Spark per inviare le metriche ad Amazon Managed Service for Prometheus. Per sovrascrivere il comportamento predefinito, specifica la tua classe personalizzata. | 
| spark.metrics.conf.\*.source.jvm.class | org.apache.spark.metrics.source. JvmSource | La classe utilizzata da Spark per raccogliere e inviare metriche cruciali dalla macchina virtuale Java sottostante. Per interrompere la raccolta di metriche JVM, disabilita questa proprietà impostandola su una stringa vuota, ad esempio. `""` Per sovrascrivere il comportamento predefinito, specifica la tua classe personalizzata.  | 
| spark.metrics.conf.driver.sink.prometheusServlet.path | /metrics/prometheus | L'URL distinto che Amazon Managed Service for Prometheus utilizza per raccogliere le metriche dal driver. Per sovrascrivere il comportamento predefinito, specifica il tuo percorso. Per interrompere la raccolta delle metriche dei driver, disabilita questa proprietà impostandola su una stringa vuota, ad esempio. `""` | 
| spark.metrics.conf.executor.sink.prometheusServlet.path | //prometheus metrics/executor | L'URL distinto che Amazon Managed Service for Prometheus utilizza per raccogliere le metriche dall'esecutore. Per sovrascrivere il comportamento predefinito, specifica il tuo percorso. Per interrompere la raccolta delle metriche dell'esecutore, disabilita questa proprietà impostandola su una stringa vuota, ad esempio. `""` | 

Per ulteriori informazioni sulle metriche di Spark, consulta le metriche di Apache Spark. [https://spark.apache.org/docs/latest/monitoring.html#metrics](https://spark.apache.org/docs/latest/monitoring.html#metrics)

## Considerazioni e limitazioni
<a name="monitoring-with-prometheus-limitations"></a>

Quando utilizzi Amazon Managed Service for Prometheus per raccogliere metriche da EMR Serverless, considera le seguenti considerazioni e limitazioni.
+ Il supporto per l'utilizzo di Amazon Managed Service for Prometheus con EMR Serverless è disponibile solo laddove Amazon Managed Service for Prometheus è generalmente disponibile. [Regioni AWS](https://docs.aws.amazon.com/general/latest/gr/prometheus-service.html)
+ L'esecuzione dell'agente per raccogliere le metriche Spark su Amazon Managed Service for Prometheus richiede più risorse da parte dei lavoratori. Se scegli una dimensione di lavoro inferiore, ad esempio un lavoratore vCPU, il tempo di esecuzione del lavoro potrebbe aumentare.
+ Il supporto per l'utilizzo di Amazon Managed Service for Prometheus con EMR Serverless è disponibile solo per le versioni di Amazon EMR 7.1.0 e successive.
+ Amazon Managed Service for Prometheus deve essere distribuito nello stesso account in cui si esegue EMR Serverless per raccogliere le metriche.