View a markdown version of this page

Registro em log e monitoramento de sessões do Apache Spark - Amazon Athena

Registro em log e monitoramento de sessões do Apache Spark

A partir da versão 3.5 do Apache Spark, você pode especificar o registro em log gerenciado, no Amazon S3 ou no CloudWatch, como suas opções de registro em log.

Com o registro em log gerenciado e o registro em log do S3, a tabela a seguir lista os locais de logs e a disponibilidade da interface do usuário que você pode esperar se escolher essas opções.

Opção Logs de eventos Logs de contêineres Interfaces de usuário de aplicações
Registro em log gerenciado (padrão) Armazenado no bucket gerenciado do S3 Armazenado no bucket gerenciado do S3 Compatível
Registro em log 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 de registro em log gerenciado selecionada. Caso contrário, você não poderá usar as interfaces de usuário integradas da aplicação.

Registro em log gerenciado

Por padrão, os grupos de trabalho do Athena Spark armazenam logs de aplicações com segurança em buckets gerenciados por serviços do S3 por no máximo 30 dias.

Opcionalmente, você pode fornecer uma chave do KMS (id da chave, arn, alias ou alias arn) que o serviço usará para criptografar os logs gerenciados.

aws athena start-session \ --work-group "WORKGROUP" \ --monitoring-configuration '{ "ManagedLoggingConfiguration": { "Enabled": true, "KmsKey": "KMS_KEY" }, }' --engine-configuration ''
nota

Se você desativar o registro em log gerenciado, o Athena não poderá solucionar problemas de sessões em seu nome. Exemplo: você não acessará a interface do usuário do Spark nos cadernos do Estúdio Amazon SageMaker AI ou usando a API GetResourceDashboard.

Para desativar essa opção na AWS CLI, use a configuração ManagedLoggingConfiguration ao iniciar uma sessão interativa.

aws athena start-session \ --work-group "WORKGROUP" \ --monitoring-configuration '{ "ManagedLoggingConfiguration": { "Enabled": false }, }' --engine-configuration ''

Permissões necessárias para registro em log gerenciado

Se você forneceu uma chave do KMS, precisará das permissões a seguir na política de permissões para o perfil de execução.

{ "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Effect": "Allow" }

Registro em log do Amazon S3

Você pode configurar a entrega de logs para buckets do Amazon S3.

Para habilitar a entrega de logs do S3 na AWS CLI, use a configuração S3LoggingConfiguration ao iniciar uma sessão interativa.

aws athena start-session \ --work-group "WORKGROUP" \ --monitoring-configuration '{ "S3LoggingConfiguration": { "Enabled":true, "LogLocation": "s3://bucket/", }, }' --engine-configuration ''

Opcionalmente, você pode fornecer uma chave do KMS (id da chave, arn, alias ou alias arn) que o serviço usará para criptografar os logs do S3.

aws athena start-session \ --work-group "WORKGROUP" \ --monitoring-configuration '{ "S3LoggingConfiguration": { "Enabled":true, "LogLocation": "s3://bucket/", "KmsKey": "KMS_KEY" }, }' --engine-configuration ''

Permissões necessárias para a entrega de logs do Amazon S3

Antes que suas sessões possam entregar logs aos buckets do Amazon S3, inclua as permissões na política de permissões para o perfil de execução.

{ "Action": "s3:*", "Resource": "*", "Effect": "Allow" }

Se você forneceu uma chave do KMS, também precisará das permissões a seguir na política de permissões para o perfil de execução.

{ "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Effect": "Allow" }

Se a chave do KMS e o bucket não forem da mesma conta, o KMS precisará permitir a entidade principal do serviço do S3.

{ "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "ACCOUNT_HAVING_KMS_KEY" } } }

Registro em log do CloudWatch

Você pode configurar a entrega de logs para grupos de logs do CloudWatch.

Para habilitar a entrega de logs do S3 na AWS CLI, use a configuração CloudWatchLoggingConfiguration ao iniciar uma sessão interativa.

aws athena start-session \ --work-group "WORKGROUP" \ --monitoring-configuration '{ "CloudWatchLoggingConfiguration": { "Enabled": true, "LogGroup": "/aws/athena/sessions/${workgroup}", "LogStreamNamePrefix": "session-" } }' --engine-configuration ''

Todos os logs serão entregues por padrão, mas você pode, opcionalmente, especificar quais tipos de logs incluir.

aws athena start-session \ --work-group "WORKGROUP" \ --monitoring-configuration '{ "CloudWatchLoggingConfiguration": { "Enabled": true, "LogGroup": "/aws/athena/sessions/${workgroup}", "LogStreamNamePrefix": "session-", "LogTypes": { "SPARK_DRIVER": [ "STDOUT", "STDERR" ], "SPARK_EXECUTOR": [ "STDOUT", "STDERR" ] } } }' --engine-configuration ''

Permissões necessárias para a entrega de logs ao CloudWatch

Para que suas sessões possam entregar logs aos grupos de logs do CloudWatch, inclua as permissões a seguir na política de permissões para o perfil de execução.

{ "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": "*", "Effect": "Allow" }

E a permissão a seguir na política de recursos da chave do KMS.

{ "Effect": "Allow", "Principal": { "Service": "logs.<region>.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

Configuração de padrões de registro em log no grupo de trabalho

Você também pode especificar as opções padrão de registro em log no nível do grupo de trabalho.

Para especificar as opções padrão de registro em log na AWS CLI para um grupo de trabalho, use a configuração monitoring-configuration ao criar um novo grupo de trabalho:

aws athena create-work-group \ --region "REGION" \ --name "WORKGROUP_NAME" \ --monitoring-configuration '{ "CloudWatchLoggingConfiguration": { "Enabled": true, "LogGroup": "/aws/athena/sessions/${workgroup}", "LogStreamNamePrefix": "session-", "LogTypes": { "SPARK_DRIVER": [ "STDOUT", "STDERR" ], "SPARK_EXECUTOR": [ "STDOUT", "STDERR" ] } }, "ManagedLoggingConfiguration": { "Enabled": true, "KmsKey": "KMS_KEY" }, "S3LoggingConfiguration": { "Enabled": true, "KmsKey": "KMS_KEY" "LogLocation": "s3://bucket/", "LogTypes": { "SPARK_DRIVER": [ "STDOUT", "STDERR" ], "SPARK_EXECUTOR": [ "STDOUT", "STDERR" ] } } }'

Para modificar as opções padrão de registro em log na AWS CLI para um grupo de trabalho, use a configuração monitoring-configuration ao atualizar um grupo de trabalho. As mudanças se aplicam às novas sessões interativas daqui em diante.

aws athena update-work-group \ --region "REGION" \ --work-group "WORKGROUP_NAME" --monitoring-configuration '{ "CloudWatchLoggingConfiguration": { "Enabled": true, "LogGroup": "/aws/athena/sessions/${workgroup}", "LogStreamNamePrefix": "session-", "LogTypes": { "SPARK_DRIVER": [ "STDOUT", "STDERR" ], "SPARK_EXECUTOR": [ "STDOUT", "STDERR" ] } }, "ManagedLoggingConfiguration": { "Enabled": true, "KmsKey": "KMS_KEY" }, "S3LoggingConfiguration": { "Enabled": true, "KmsKey": "KMS_KEY" "LogLocation": "s3://bucket/", "LogTypes": { "SPARK_DRIVER": [ "STDOUT", "STDERR" ], "SPARK_EXECUTOR": [ "STDOUT", "STDERR" ] } } }'