

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
<a name="logging"></a>

Para monitorar o progresso do seu trabalho no EMR Sem Servidor e solucionar falhas de trabalho, escolha como o EMR Sem Servidor armazena e veicula os logs de aplicações. 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, consulte[Registro no EMR Serverless com a Amazon CloudWatch](#jobs-log-storage-cw). Com o armazenamento gerenciado e os logs 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](#jobs-log-storage-managed-storage), [buckets do Amazon S3](#jobs-log-storage-s3-buckets) 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 manter 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
<a name="jobs-log-storage-managed-storage"></a>

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 a Spark-UI a partir do console do ERM sem Servidor.

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 a sua aplicação do EMR Sem Servidor estiver em uma sub-rede privada com endpoints de VPC para o Amazon S3 e você anexar uma política de endpoint para controlar o acesso, adicione as seguintes permissões para que o EMR Sem Servidor armazene e forneça logs de aplicações. Substitua `Resource` pelos buckets `AppInfo` da tabela de regiões disponíveis em [Exemplos de políticas para sub-redes privadas que acessam o Amazon S3](https://docs.aws.amazon.com/emr/latest/ManagementGuide/private-subnet-iampolicy.html#private-subnet-iampolicy-regions).

------
#### [ 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 condição `aws:SourceVpc` para garantir que a solicitação passe pela VPC à qual o endpoint da VPC está conectado.

## Registro em log do EMR Sem Servidor com buckets do Amazon S3
<a name="jobs-log-storage-s3-buckets"></a>

Antes que os trabalhos possam enviar dados de log ao Amazon S3, as permissões apresentadas a seguir devem ser incluídas na política de permissões para o perfil de runtime 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 logs do driver do Spark são armazenados no seguinte caminho pelo EMR Sem Servidor

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

Os logs do executor do Spark são armazenados no seguinte caminho pelo EMR Sem Servidor

```
'/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
<a name="jobs-log-storage-cw"></a>

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 em [AWS CLI](#jobs-log-storage-cw-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 ](https://repost.aws/knowledge-center/cloudwatch-logs-throttling) em *AWS re:post*.

### Permissões necessárias para fazer login com CloudWatch
<a name="jobs-log-storage-cw-permissions"></a>

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
<a name="jobs-log-storage-cw-cli"></a>

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 um nome de grupo de logs, nome de prefixo de fluxo de logs, 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 valores de `logTypes` aceitos também estão listados no 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 quiser outros logs, especifique um perfil de contêiner e os tipos de log correspondentes com o campo `logTypes`.

A seguinte lista mostra os tipos de trabalhadores compatíveis que você pode especificar na configuração `logTypes`:

**Spark**  
+ `SPARK_DRIVER : ["STDERR", "STDOUT"]`
+ `SPARK_EXECUTOR : ["STDERR", "STDOUT"]`

**Hive**  
+ `HIVE_DRIVER : ["STDERR", "STDOUT", "HIVE_LOG", "TEZ_AM"]`
+ `TEZ_TASK : ["STDERR", "STDOUT", "SYSTEM_LOGS"]`