Minha tarefa no AWS Glue gera muitos logs no Amazon CloudWatch. Quero reduzir o número de logs gerados.
Breve descrição
As tarefas de Extract/Transform/Load (ETL) do AWS Glue Spark geram muitos logs que é possível usar para monitorar falhas internas e diagnosticar tarefas com falha. Não é possível controlar o número de logs que as tarefas do AWS Glue geram em suas instâncias, mas sim ajustar o detalhamento dos logs.
Para fazer isso, use os seguintes métodos:
- Ative a configuração padrão do filtro para registro em log contínuo.
- Use o método de contexto setLogLevel do Spark.
- Use um arquivo log4j.properties personalizado.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Ativar a configuração padrão do filtro para registro em log contínuo
Se você ativou o log contínuo na sua tarefa, ative o filtro Padrão para a opção de Filtragem de logs.
Para ativar esse filtro, use a AWS CLI para adicionar os seguintes parâmetros de tarefa:
'--enable-continuous-cloudwatch-log': 'true''--enable-continuous-log-filter': 'true'
Observação: o registro em log contínuo do AWS Glue está disponível somente no AWS Glue 4.0 e versões anteriores.
Usar o método de contexto setLogLevel do Spark
É possível usar o método setLogLevel de pyspark.context.SparkContext para definir o nível de registro em log da sua tarefa. Os níveis de log válidos incluem ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE e WARN. Para mais informações, consulte setLogLevel no site do Apache Spark.
Para importar o método de contexto do Spark e definir o nível de registro em log, adicione o seguinte código à sua tarefa do AWS Glue:
from pyspark.context import SparkContext
sc = SparkContext()
sc.setLogLevel("new-log-level")
Observação: substitua new-log-level pelo seu novo nível de registro em log. Esse código afeta o comportamento do log do driver, mas não os logs do executor.
Para mais informações, consulte Configuring logging (Como configurar o registro em log) no site do Apache Spark.
Usar um arquivo log4j.properties personalizado
O AWS Glue 3.0 usa o Log4j 1 para o comportamento de registro em log, e é possível personalizar esses comportamentos com o arquivo log4j.properties. O AWS Glue 4.0 usa o Log4j 2 para o comportamento de registro em log, e é possível personalizar esses comportamentos com o arquivo log4j2.properties. Para mais informações sobre o Log4j 2, consulte Configuration properties (Propriedades de configuração) no site do Apache Logging Services.
Observação: se você aplicar um arquivo de configuração log4j.properties ou log4j2.properties personalizado, o AWS Glue desativará o registro em log contínuo. Além disso, as propriedades personalizadas do Log4j estão disponíveis somente no AWS Glue 4.0 e versões anteriores.
É possível incluir suas preferências de registro em log no arquivo log4j2.properties. Em seguida, é possível fazer upload do arquivo no Amazon Simple Storage Service (Amazon S3) e use o arquivo na tarefa do AWS Glue.
Para usar um arquivo de configuração personalizado no AWS Glue 4.0, conclua as seguintes etapas:
-
Crie um arquivo chamado log4j2.properties para definir o nível do registrador em log raiz como erro.
Exemplo de arquivo log4j2.properties:
rootLogger.level = error
rootLogger.appenderRef.stdout.ref = STDOUT
appender.console.type = Console
appender.console.name = STDOUT
appender.console.target = SYSTEM_ERR
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss,SSS} %p [%t] %c{2} (%F:%M(%L)): %m%n
-
Faça o upload do arquivo log4j2.properties no Amazon S3 e copie o URI do S3 do arquivo.
-
Na tarefa do AWS Glue, adicione os seguintes parâmetros:
--extra-files, s3://[objectpath]/log4j2.properties
Observação: substitua s3://[objectpath]/log4j.properties pelo URI do S3 que você usou na etapa anterior.
-
Salve a tarefa do AWS Glue e execute-a.
-
Verifique o fluxo de logs relacionado no grupo de logs /aws-glue/jobs/error.
Informações relacionadas
Monitoramento com Amazon CloudWatch