Monitorice las métricas de Spark con Amazon Managed Service para Prometheus - Amazon EMR

Monitorice las métricas de Spark con Amazon Managed Service para Prometheus

Con las versiones 7.1.0 y posteriores de EMR sin servidor, puede integrar EMR sin servidor con Amazon Managed Service para Prometheus para recopilar métricas de Apache Spark para trabajos y aplicaciones de EMR sin servidor. Esta integración está disponible cuando envía un trabajo o crea una aplicación mediante la consola AWS, la API de EMR sin servidor, o la AWS CLI.

Requisitos previos

Antes de enviar sus métricas de Spark a Amazon Managed Service para Prometheus, debe cumplir los siguientes requisitos previos.

  • Crear un espacio de trabajo de Amazon Managed Service para Prometheus. Este espacio de trabajo sirve como punto de conexión de ingestión. Anote la URL que se muestra para el punto de conexión: URL de escritura remota. Deberá especificar la URL al crear la aplicación EMR sin servidor.

  • Para conceder acceso a sus trabajos a Amazon Managed Service para Prometheus con fines de monitorización, añada la siguiente política a su rol de ejecución de trabajos.

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

Configuración

Para utilizar la consola AWS para crear una aplicación que esté integrada con Amazon Managed Service para Prometheus
  1. Consulte Introducción a Amazon EMR sin servidor para crear una aplicación.

  2. Mientras crea una aplicación, elija Usar ajustes personalizados y, a continuación, configure la aplicación especificando la información en los campos que desee configurar.

  3. En Registros y métricas de aplicaciones, seleccione Entregar las métricas del motor a Amazon Managed Service para Prometheus y, a continuación, especifique su URL de escritura remota.

  4. Especifique cualquier otro ajuste de configuración que desee y, a continuación, seleccione Crear e iniciar la aplicación.

Utilice la AWS CLI o la API de EMR sin servidor

También puede utilizar la AWS CLI o la API de EMR sin servidor para integrar su aplicación EMR sin servidor con Amazon Managed Service para Prometheus cuando ejecute los comandos del create-application o del 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" } } }'

Incluir prometheusMonitoringConfiguration en su comando indica que EMR sin servidor debe ejecutar el trabajo de Spark con un agente que recopile las métricas de Spark y las escriba en su punto de conexión remoteWriteUrl para Amazon Managed Service para Prometheus. A continuación, puede utilizar las métricas de Spark en Amazon Managed Service para Prometheus para la visualización, las alertas y el análisis.

Propiedades de configuración avanzada

EMR sin servidor utiliza un componente de Spark denominado PrometheusServlet para recopilar las métricas de Spark y traduce los datos de rendimiento en datos compatibles con Amazon Managed Service para Prometheus. De forma predeterminada, EMR sin servidor establece los valores predeterminados en Spark y analiza las métricas de los controladores y ejecutores cuando envía un trabajo mediante PrometheusMonitoringConfiguration.

En la siguiente tabla se describen todas las propiedades que puede configurar al enviar un trabajo de Spark que envíe métricas a Amazon Managed Service para Prometheus.

Propiedad de Spark Valor predeterminado Descripción
spark.metrics.conf.*.sink.prometheusServlet.class

org.apache.spark.metrics.sink.PrometheusServlet

La clase que Spark utiliza para enviar métricas a Amazon Managed Service para Prometheus. Para anular el comportamiento predeterminado, especifique su propia clase personalizada.

spark.metrics.conf.*.source.jvm.class

org.apache.spark.metrics.source.jvmSource

La clase que Spark utiliza para recopilar y enviar métricas cruciales desde la máquina virtual Java subyacente. Para dejar de recopilar métricas de JVM, deshabilite esta propiedad configurándola en una cadena vacía, como "". Para anular el comportamiento predeterminado, especifique su propia clase personalizada.

spark.metrics.conf.driver.sink.prometheusServlet.path

/metrics/prometheus

La URL diferente que Amazon Managed Service para Prometheus utiliza para recopilar las métricas del controlador. Para anular el comportamiento predeterminado, especifique su propia ruta. Para dejar de recopilar métricas del controlador, deshabilite esta propiedad configurándola en una cadena vacía, como "".

spark.metrics.conf.executor.sink.prometheusServlet.path

/metrics/executor/prometheus

La URL diferente que Amazon Managed Service para Prometheus utiliza para recopilar las métricas del ejecutor. Para anular el comportamiento predeterminado, especifique su propia ruta. Para dejar de recopilar métricas del ejecutor, deshabilite esta propiedad configurándola en una cadena vacía, como "".

Para obtener más información sobre las métricas de Spark, consulte las métricas de Apache Spark.

Consideraciones y limitaciones

Cuando utilice Amazon Managed Service para Prometheus para recopilar métricas de EMR sin servidor, tenga en cuenta las siguientes consideraciones y limitaciones.

  • El soporte técnico para usar Amazon Managed Service para Prometheus con EMR sin servidor solo está disponible en aquellas Regiones de AWS donde Amazon Managed Service para Prometheus esté disponible de forma general.

  • Ejecutar el agente para recopilar las métricas de Spark en Amazon Managed Service para Prometheus requiere más recursos por parte de los trabajadores. Si elige un tamaño de trabajador más pequeño, como un trabajador de vCPU, el tiempo de ejecución de su trabajo podría aumentar.

  • La compatibilidad con Amazon Managed Service para Prometheus con EMR sin servidor solo está disponible para las versiones 7.1.0 y posteriores de Amazon EMR.

  • Amazon Managed Service para Prometheus debe implementarse en la misma cuenta en la que ejecuta EMR sin servidor para poder recopilar métricas.