Registro em log de eventos da aplicação Spark no Athena - Amazon Athena

Registro em log de eventos da aplicação Spark no Athena

O editor de cadernos do Athena permite o registro em log padrão do Jupyter, do Spark e do Python. É possível usar df.show() para exibir o conteúdo do PySpark DataFrame ou usar print("Output") para exibir os valores na saída da célula. As saídas stdout, stderr e results para seus cálculos serão gravadas no local do bucket de resultados da consulta no Amazon S3.

Registro em log de eventos da aplicação Spark no Amazon CloudWatch

As sessões do Athena também podem gravar logs no Amazon CloudWatch na conta que você está usando.

Noções básicas sobre fluxos de logs e grupos de logs

O CloudWatch organiza a atividade de log em fluxos de logs e grupos de logs.

Fluxos de logs: um fluxo de logs do CloudWatch corresponde a uma sequência de eventos de logs que compartilham a mesma origem. Cada origem separada de logs no CloudWatch Logs compõe um fluxo de logs separado.

Grupos de logs: no CloudWatch Logs, um grupo de logs corresponde a um grupo de fluxos de logs que compartilham as mesmas configurações de retenção, monitoramento e controle de acesso.

Não há limite para o número de streams de log que podem pertencer a um grupo de logs.

No Athena, quando você inicia uma sessão do caderno pela primeira vez, o Athena cria um grupo de logs no CloudWatch que usa o nome do seu grupo de trabalho habilitado para Spark, como no exemplo a seguir.

/aws-athena/workgroup-name

Esse grupo de logs recebe um fluxo de logs para cada executor em sua sessão, o que produz, no mínimo, um evento de logs. Um executor corresponde a menor unidade de computação que uma sessão do caderno pode solicitar do Athena. No CloudWatch, o nome do fluxo de logs começa com o ID da sessão e o ID do executor.

Para obter mais informações sobre os grupos de logs e os fluxos de logs do CloudWatch, consulte Trabalhar com grupos de logs e fluxos de logs no Guia do usuário do Amazon CloudWatch Logs.

Uso de objetos logger padrões no Athena para Spark

Em uma sessão do Athena para Spark, é possível usar os dois objetos logger de padrão global a seguir para gravar logs no Amazon CloudWatch:

  • athena_user_logger: envia logs somente para o CloudWatch. Use esse objeto quando desejar registrar em log as informações de suas aplicações Spark diretamente no CloudWatch, como no exemplo a seguir.

    athena_user_logger.info("CloudWatch log line.")

    O exemplo grava um evento de logs no CloudWatch como o seguinte:

    AthenaForApacheSpark: 2022-01-01 12:00:00,000 INFO builtins: CloudWatch log line.
  • athena_shared_logger: envia o mesmo log para o CloudWatch e para a AWS para fins de suporte. É possível usar esse objeto para compartilhar logs com as equipes de serviço da AWS para solução de problemas, como no exemplo a seguir.

    athena_shared_logger.info("Customer debug line.") var = [...some variable holding customer data...] athena_shared_logger.info(var)

    O exemplo registra em log a linha debug e o valor da variável var no CloudWatch Logs e envia uma cópia de cada linha para o AWS Support.

    nota

    Para sua privacidade, o código e os resultados dos cálculos não são compartilhados com a AWS. Certifique-se de que suas chamadas athena_shared_logger gravem somente as informações que você deseja tornar visíveis para o AWS Support.

Os loggers fornecidos gravam eventos por meio do Apache Log4j e herdam os níveis de registro em log dessa interface. Os valores de nível de log possíveis são DEBUG, ERROR, FATAL, INFO e WARN ou WARNING. É possível usar a função nomeada correspondente no logger para produzir esses valores.

nota

Não vincule novamente os nomes athena_user_logger ou athena_shared_logger. Fazer isso torna os objetos de registro em log incapazes de gravar no CloudWatch pelo restante da sessão.

Exemplo: registro em log de eventos de cadernos no CloudWatch

O procedimento a seguir mostra como registrar em log os eventos de cadernos do Athena no Amazon CloudWatch Logs.

Para registrar em log eventos de cadernos do Athena no Amazon CloudWatch Logs
  1. Siga Conceitos básicos do Apache Spark no Amazon Athena para criar um grupo de trabalho habilitado para Spark no Athena com um nome exclusivo. Este tutorial usa o nome athena-spark-example para o grupo de trabalho.

  2. Siga as etapas em Como criar seu próprio caderno para criar um caderno e iniciar uma nova sessão.

  3. No editor de cadernos do Athena, em uma nova célula do caderno, digite o seguinte comando:

    athena_user_logger.info("Hello world.")
  4. Execute a célula.

  5. Recupere o ID da sessão atual seguindo um destes procedimentos:

    • Visualize a saída da célula (por exemplo, ... session=72c24e73-2c24-8b22-14bd-443bdcd72de4).

    • Em uma nova célula, execute o comando mágico %session_id.

  6. Salve o ID da sessão.

  7. Com a mesma Conta da AWS que você está usando para executar a sessão do caderno, abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.

  8. No painel de navegação do console do CloudWatch, escolha Log groups (Grupos de logs).

  9. Na lista de grupos de logs, escolha o grupo de logs que tem o nome do seu grupo de trabalho do Athena habilitado para Spark, como no exemplo a seguir.

    /aws-athena/athena-spark-example

    A seção Log streams (Fluxos de logs) contém uma lista de um ou mais links de fluxo de logs para o grupo de trabalho. Cada nome de fluxo de logs contém o ID da sessão, o ID do executor e o UUID exclusivo separados por caracteres de barra.

    Por exemplo, se o ID da sessão for 5ac22d11-9fd8-ded7-6542-0412133d3177 e o ID do executor for f8c22d11-9fd8-ab13-8aba-c4100bfba7e2, o nome do fluxo de logs será semelhante ao exemplo a seguir.

    5ac22d11-9fd8-ded7-6542-0412133d3177/f8c22d11-9fd8-ab13-8aba-c4100bfba7e2/f012d7cb-cefd-40b1-90b9-67358f003d0b
  10. Escolha o link do fluxo de logs para sua sessão.

  11. Na página Log events (Eventos de logs), visualize a coluna Message (Mensagem).

    O evento de logs para a célula executada será semelhante ao seguinte:

    AthenaForApacheSpark: 2022-01-01 12:00:00,000 INFO builtins: Hello world.
  12. Retorne ao editor de cadernos do Athena.

  13. Em uma nova célula, insira o código a seguir. O código registrará em log uma variável no CloudWatch:

    x = 6 athena_user_logger.warn(x)
  14. Execute a célula.

  15. Retorne à página Log events (Eventos de logs) do console do CloudWatch para obter um fluxo de logs semelhante.

  16. O fluxo de logs agora vai conter uma entrada de evento de logs com uma mensagem como a seguinte:

    AthenaForApacheSpark: 2022-01-01 12:00:00,000 WARN builtins: 6