Monitoramento de métricas do Spark com o Amazon Managed Service para Prometheus
Com as versões 7.1.0 e posteriores do Amazon EMR, você pode integrar o EMR Sem Servidor ao Amazon Managed Service for Prometheus para coletar métricas do Apache Spark para trabalhos e aplicações do EMR Sem Servidor. Essa integração está disponível ao enviar um trabalho ou criar uma aplicação usando o console da AWS, a API do EMR Sem Servidor ou a AWS CLI.
Pré-requisitos
Antes de fornecer as métricas do Spark para o Amazon Managed Service for Prometheus, será necessário concluir os pré-requisitos a seguir.
-
Crie um Workspace do Amazon Managed Service para Prometheus. Este Workspace serve como um endpoint de ingestão. Anote o URL exibido em Endpoint: URL de gravação remota. Você precisará especificar o URL ao criar sua aplicação do EMR Sem Servidor.
-
Para conceder acesso aos seus trabalhos ao Amazon Managed Service for Prometheus para fins de monitoramento, adicione a política a seguir ao perfil de execução de tarefas.
{ "Sid": "AccessToPrometheus", "Effect": "Allow", "Action": ["aps:RemoteWrite"], "Resource": "arn:aws:aps:
<AWS_REGION>
:<AWS_ACCOUNT_ID>
:workspace/<WORKSPACE_ID>
" }
Configuração
Para usar o console da AWS para criar uma aplicação integrada ao Amazon Managed Service for Prometheus
-
Consulte Getting started with Amazon EMR Serverless para criar uma aplicação.
-
Ao criar uma aplicação, escolha Usar configurações personalizadas e, em seguida, configure-a especificando as informações nos campos que deseja configurar.
-
Em Logs e métricas da aplicação, escolha Fornecer métricas do mecanismo ao Amazon Managed Service for Prometheus e, em seguida, especifique o URL de gravação remota.
-
Especifique todas as outras configurações desejadas e escolha Criar e iniciar aplicação.
Uso da AWS CLI ou da API do EMR Sem Servidor
Você também pode usar a AWS CLI ou a API ou EMR Sem Servidor para integrar sua aplicação do EMR Sem Servidor ao Amazon Managed Service for Prometheus ao executar create-application
ou os comandos start-job-run
.
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"
}
}'
Incluir prometheusMonitoringConfiguration
no comando indica que o EMR Sem Servidor deve executar o trabalho do Spark com um agente que coleta as métricas do Spark e as grava no endpoint remoteWriteUrl
para o Amazon Managed Service for Prometheus. Em seguida, você pode usar as métricas do Spark no Amazon Managed Service for Prometheus para exibição, alertas e análises.
Propriedades de configuração avançada
O EMR Sem Servidor usa um componente do Spark chamado PrometheusServlet
para coletar métricas do Spark e traduzir dados de performance em dados compatíveis com o Amazon Managed Service for Prometheus. Por padrão, o EMR Sem Servidor define valores padrão no Spark e analisa as métricas do driver e do executor quando você envia um trabalho usando PrometheusMonitoringConfiguration
.
A tabela a seguir descreve todas as propriedades que você pode configurar ao enviar um trabalho do Spark que envia métricas ao Amazon Managed Service for Prometheus.
Propriedade do Spark | Valor padrão | Descrição |
---|---|---|
spark.metrics.conf.*.sink.prometheusServlet.class |
org.apache.spark.metrics.sink.PrometheusServlet |
A classe que o Spark usa para enviar métricas ao Amazon Managed Service for Prometheus. Para substituir o comportamento padrão, especifique sua própria classe personalizada. |
spark.metrics.conf.*.source.jvm.class |
org.apache.spark.metrics.source.JvmSource |
A classe que o Spark usa para coletar e enviar métricas cruciais da máquina virtual Java subjacente. Para parar de coletar métricas da JVM, desabilite essa propriedade definindo-a como uma string vazia, como |
spark.metrics.conf.driver.sink.prometheusServlet.path |
/metrics/prometheus |
O URL distinto que o Amazon Managed Service for Prometheus usa para coletar métricas do driver. Para substituir o comportamento padrão, especifique seu próprio caminho. Para parar de coletar métricas do driver, desabilite essa propriedade definindo-a como uma string vazia, como |
spark.metrics.conf.executor.sink.prometheusServlet.path |
/metrics/executor/prometheus |
O URL distinto que o Amazon Managed Service for Prometheus usa para coletar métricas do executor. Para substituir o comportamento padrão, especifique seu próprio caminho. Para parar de coletar métricas do executor, desabilite essa propriedade definindo-a como uma string vazia, como |
Para obter mais informações sobre as métricas do Spark, consulte Apache Spark metrics
Considerações e limitações
Ao usar o Amazon Managed Service for Prometheus para coletar métricas do EMR Sem Servidor, considere as informações e limitações a seguir.
-
O suporte para o uso do Amazon Managed Service for Prometheus com o EMR Sem Servidor está disponível somente nas Regiões da AWS onde o Amazon Managed Service for Prometheus encontra-se disponível ao público geral.
-
Executar o agente para coletar métricas do Spark no Amazon Managed Service para Prometheus exige mais recursos dos trabalhadores. Se você escolher um trabalhador menor, como um trabalhador de uma vCPU, o tempo de execução do trabalho poderá aumentar.
-
O suporte para o uso do Amazon Managed Service para Prometheus com o EMR Sem Servidor está disponível somente nas versões 7.1.0 e posteriores do Amazon EMR.
-
O Amazon Managed Service para Prometheus deve ser implantado na mesma conta em que você executa o EMR Sem Servidor para coletar métricas.