Armazenamento de logs - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Armazenamento de logs

Para monitorar o progresso do seu trabalho no EMR Serverless e solucionar falhas de trabalho, escolha como o EMR Serverless armazena e veicula os registros do aplicativo. Ao enviar uma execução de trabalho, especifique armazenamento gerenciado, Amazon S3 e Amazon CloudWatch como suas opções de registro.

Com CloudWatch, especifique os tipos e locais de registro que você deseja usar ou aceite os tipos e locais padrão. Para obter mais informações sobre CloudWatch registros, consulteRegistro no EMR Serverless com a Amazon CloudWatch. Com o armazenamento gerenciado e o registro do S3, a tabela a seguir lista os locais de log e a disponibilidade da interface do usuário que você pode esperar se escolher armazenamento gerenciado, buckets do Amazon S3 ou ambos.

Opção Logs de eventos Logs de contêineres Interfaces de usuário de aplicações

Armazenamento gerenciado

Armazenamento gerenciado

Armazenamento gerenciado

Compatível

Armazenamento gerenciado e bucket do S3

Armazenado em ambos os locais

Armazenado no bucket do S3

Compatível

Bucket do Amazon S3.

Armazenado no bucket do S3

Armazenado no bucket do S3

Sem suporte1

1 Sugerimos que você mantenha a opção Armazenamento gerenciado selecionada. Caso contrário, você não poderá usar o aplicativo integrado UIs.

Registro em log do EMR Sem Servidor com armazenamento gerenciado

Por padrão, o EMR Sem Servidor armazena logs de aplicações com segurança no armazenamento gerenciado do Amazon EMR por no máximo 30 dias.

nota

Se você desativar a opção padrão, o Amazon EMR não poderá solucionar problemas de trabalhos em seu nome. Exemplo: Você não pode acessar o Spark-UI a partir do console sem servidor do EMR.

Para desativar essa opção no EMR Studio, desmarque AWS a caixa de seleção Permitir reter registros por 30 dias na seção Configurações adicionais da página Enviar trabalho.

Para desativar essa opção no AWS CLI, use a managedPersistenceMonitoringConfiguration configuração ao enviar uma execução de trabalho.

{ "monitoringConfiguration": { "managedPersistenceMonitoringConfiguration": { "enabled": false } } }

Se seu aplicativo EMR Serverless estiver em uma sub-rede privada com endpoints VPC para Amazon S3 e você anexar uma política de endpoint para controlar o acesso, adicione as seguintes permissões para que o EMR Serverless armazene e forneça registros de aplicativos. ResourceSubstitua pelos AppInfo buckets da tabela de regiões disponíveis em Exemplos de políticas para sub-redes privadas que acessam o Amazon S3.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EMRServerlessManagedLogging", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::prod.us-east-1.appinfo.src", "arn:aws:s3:::prod.us-east-1.appinfo.src/*" ], "Condition": { "StringEquals": { "aws:PrincipalServiceName": "emr-serverless.amazonaws.com", "aws:SourceVpc": "vpc-12345678" } } } ] }

Além disso, use a chave de aws:SourceVpc condição para garantir que a solicitação viaje pela VPC à qual o VPC endpoint está conectado.

Registro em log do EMR Sem Servidor com buckets do Amazon S3

Antes que seus trabalhos possam enviar dados de log para o Amazon S3, inclua as seguintes permissões na política de permissões para a função de tempo de execução do trabalho. Substitua amzn-s3-demo-logging-bucket pelo nome do bucket de registro em log.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ], "Sid": "AllowS3Putobject" } ] }

Para configurar um bucket do Amazon S3 para armazenar registros do AWS CLI, use a s3MonitoringConfiguration configuração ao iniciar a execução de um trabalho. Para fazer isso, forneça o --configuration-overrides a seguir na configuração.

{ "monitoringConfiguration": { "s3MonitoringConfiguration": { "logUri": "s3://amzn-s3-demo-logging-bucket/logs/" } } }

Em trabalhos em lotes que não têm novas tentativas habilitadas, o EMR Sem Servidor envia os logs para o seguinte caminho:

'/applications/<applicationId>/jobs/<jobId>'

Os registros do driver Spark são armazenados no seguinte caminho pelo EMR Serverless

'/applications/<applicationId>/jobs/<jobId>/SPARK_DRIVER/'

Os registros do executor do Spark são armazenados no seguinte caminho pelo EMR Serverless

'/applications/<applicationId>/jobs/<jobId>/SPARK_EXECUTOR/<EXECUTOR-ID>'

O <EXECUTOR-ID>é um número inteiro.

As versões 7.1.0 e posteriores do EMR Sem Servidor oferecem suporte a novas tentativas para trabalhos de streaming e em lote. Se você executar um trabalho com novas tentativas habilitadas, o EMR Sem Servidor adicionará automaticamente um número de tentativas ao prefixo do caminho do log, para que você possa distinguir e rastrear melhor os logs.

'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/'

Registro no EMR Serverless com a Amazon CloudWatch

Ao enviar um trabalho para um aplicativo EMR Serverless, escolha a Amazon CloudWatch como uma opção para armazenar os registros do seu aplicativo. Isso permite que você use recursos de análise de CloudWatch registros, como CloudWatch Logs Insights e Live Tail. Você também pode transmitir registros CloudWatch para outros sistemas, por exemplo, OpenSearch para análise posterior.

O EMR Sem Servidor fornece registro em log em tempo real para logs de drivers. Você pode acessar os registros em tempo real com o recurso de cauda ao CloudWatch vivo ou por meio de comandos de cauda da CloudWatch CLI.

Por padrão, o CloudWatch registro está desativado para o EMR Serverless. Para habilitá-lo, use a configuração emAWS CLI.

nota

A Amazon CloudWatch publica registros em tempo real, portanto, gera mais recursos dos trabalhadores. Se você escolher uma baixa capacidade de trabalhador, o impacto no runtime do trabalho poderá aumentar. Se você ativar o CloudWatch registro, sugerimos que escolha uma capacidade de trabalho maior. Também é possível que a publicação de logs faça controle de utilização se a taxa de transações por segundo (TPS) for muito baixa para PutLogEvents. A configuração de CloudWatch limitação é global para todos os serviços, incluindo o EMR Serverless. Para obter mais informações, consulte Como determino a limitação em meus registros? CloudWatch em AWS re:post.

Permissões necessárias para fazer login com CloudWatch

Antes que seus trabalhos possam enviar dados de log para a Amazon CloudWatch, inclua as seguintes permissões na política de permissões para a função de tempo de execução do trabalho.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:*:123456789012:*" ], "Sid": "AllowLOGSDescribeloggroups" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:123456789012:log-group:my-log-group-name:*" ], "Sid": "AllowLOGSPutlogevents" } ] }

AWS CLI

Para configurar a Amazon CloudWatch para armazenar registros do EMR Serverless a partir do AWS CLI, use a cloudWatchLoggingConfiguration configuração ao iniciar a execução de um trabalho. Para fazer isso, forneça as substituições de configuração a seguir. Opcionalmente, forneça também um nome de grupo de log, nome de prefixo de fluxo de log, tipos de log e um ARN de chave de criptografia.

Se você não especificar os valores opcionais, CloudWatch publicará os registros em um grupo de registros padrão/aws/emr-serverless, com o fluxo /applications/applicationId/jobs/jobId/worker-type de registros padrão.

As versões 7.1.0 e posteriores do EMR Sem Servidor oferecem suporte a novas tentativas para trabalhos de streaming e em lote. Se você habilitou novas tentativas para um trabalho, o EMR Sem Servidor adiciona automaticamente um número de tentativas ao prefixo do caminho do log, para que você possa distinguir e rastrear melhor os logs.

'/applications/<applicationId>/jobs/<jobId>/attempts/<attemptNumber>/worker-type'

O seguinte demonstra a configuração mínima necessária para ativar o Amazon CloudWatch Logging com as configurações padrão para o EMR Serverless:

{ "monitoringConfiguration": { "cloudWatchLoggingConfiguration": { "enabled": true } } }

O exemplo a seguir mostra todas as configurações obrigatórias e opcionais que especificam quando você ativa o Amazon CloudWatch Logging para o EMR Serverless. Os logTypes valores suportados também estão listados neste exemplo a seguir.

{ "monitoringConfiguration": { "cloudWatchLoggingConfiguration": { "enabled": true, // Required "logGroupName": "Example_logGroup", // Optional "logStreamNamePrefix": "Example_logStream", // Optional "encryptionKeyArn": "key-arn", // Optional "logTypes": { "SPARK_DRIVER": ["stdout", "stderr"] //List of values } } } }

Por padrão, o EMR Serverless publica somente os registros do driver stdout e stderr em. CloudWatch Se você quiser outros registros, especifique uma função de contêiner e os tipos de registro correspondentes com o logTypes campo.

A lista a seguir mostra os tipos de trabalhadores compatíveis que são especificados para a logTypes configuração:

Spark
  • SPARK_DRIVER : ["STDERR", "STDOUT"]

  • SPARK_EXECUTOR : ["STDERR", "STDOUT"]

Hive
  • HIVE_DRIVER : ["STDERR", "STDOUT", "HIVE_LOG", "TEZ_AM"]

  • TEZ_TASK : ["STDERR", "STDOUT", "SYSTEM_LOGS"]