Monitorar o AWS Glue usando métricas do Amazon CloudWatch - AWS Glue

Monitorar o AWS Glue usando métricas do Amazon CloudWatch

É possível criar perfis e monitorar operações do AWS Glue usando o criador de perfis de tarefas do AWS Glue. Ele coleta e processa dados brutos de trabalhos do AWS Glue e os transforma em métricas legíveis, quase em tempo real, armazenadas no Amazon CloudWatch. Essas estatísticas são retidas e agregadas no CloudWatch, para que você possa acessar informações históricas e obter uma perspectiva melhor sobre como sua aplicação está se saindo.

nota

Você pode incorrer em cobranças adicionais ao habilitar que métricas de trabalho e métricas personalizadas do CloudWatch sejam criadas. Para obter mais informações, consulte Preço do Amazon CloudWatch.

Visão geral das métricas do AWS Glue

Quando você interage com o AWS Glue, ele envia métricas ao CloudWatch. É possível visualizar essas métricas usando o console do AWS Glue (o método de preferência), o painel do console do CloudWatch ou a AWS Command Line Interface (AWS CLI).

Para visualizar as métricas usando o painel do console do AWS Glue

Você pode visualizar gráficos de métricas detalhados ou resumidos de uma tarefa, ou gráficos detalhadas da execução de uma tarefa.

  1. Faça login no AWS Management Console e abra o console do AWS Glue em https://console.aws.amazon.com/glue/.

  2. No painel de navegação, escolha Monitoramento de execução de trabalho.

  3. Em Execuções de trabalhos, escolha Ações para interromper um trabalho que está em execução no momento, exibir um trabalho ou retroceder o marcador de trabalho.

  4. Selecione um trabalho e escolha Exibir detalhes da execução para ver informações adicionais sobre a execução do trabalho.

Para exibir métricas usando o painel do console do CloudWatch

As métricas são agrupadas primeiro pelo namespace do serviço e, em seguida, por várias combinações de dimensão dentro de cada namespace.

  1. Abra o console do CloudWatch em https://console.aws.amazon.com/cloudwatch/.

  2. No painel de navegação, selecione Métricas.

  3. Selecione o namespace Glue.

Para visualizar métricas usando a AWS CLI
  • Em um prompt de comando, use o seguinte comando.

    aws cloudwatch list-metrics --namespace Glue

O AWS Glue relata métricas para o CloudWatch a cada 30 segundos, e os painéis de métricas do CloudWatch são configurados para exibi-las a cada minuto. As métricas do AWS Glue representam valores do delta a partir dos valores relatados anteriormente. Quando apropriado, os painéis de métricas agregam (somam) os valores de 30 segundos para obter um valor para o último minuto inteiro.

Comportamento de métricas do AWS Glue para trabalhos do Spark

As métricas do AWS Glue são ativadas na inicialização de um GlueContext em um script e geralmente são atualizadas somente no final de um trabalho do Apache Spark. Eles representam os valores agregados em todas as tarefas do Spark concluídas até agora.

No entanto, as métricas do Spark que o AWS Glue transfere para o CloudWatch são geralmente valores absolutos que representam o estado atual no momento em que elas são relatadas. O AWS Glue as informa ao CloudWatch a cada 30 segundos, e os painéis de métricas geralmente mostram a média em todos os pontos de dados recebidos no último minuto.

Os nomes de métricas do AWS Glue são todos precedidos por um dos seguintes tipos de prefixo:

  • glue.driver.: métricas cujos nomes começam com esse prefixo representam métricas do AWS Glue agregadas em todos os executores no driver do Spark ou métricas do Spark correspondentes ao driver do Spark.

  • glue.executorId.: o executorId é o número de um executor específico do Spark. Ele corresponde ao executores listados nos logs.

  • glue.ALL. - Métricas cujos nomes começam com esse prefixo agregam valor a todos os executores do Spark.

AWS Glue métricas

O AWS Glue traça o perfil e envia as seguintes métricas para o CloudWatch a cada 30 segundos, e o painel do console do AWS Glue as relata uma vez por minuto:

Métrica Descrição

glue.driver.aggregate.bytesRead

O número de bytes lidos de todas as fontes de dados por todas as tarefas do Spark concluídas em execução em todos os executores.

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (contagem).

Estatística válida: SUM (SOMA). Essa métrica é um valor delta do último valor relatado, portanto, no painel de métricas do AWS Glue, uma estatística SUM (SOMA) é usada para agregação.

Unidade: bytes

Pode ser usada para monitorar:

  • Bytes lidos.

  • Progresso do trabalho.

  • Fontes de dados JDBC.

  • Problemas com marcadores do trabalho.

  • Variação entre execuções do trabalho.

Essa métrica pode ser usada da mesma maneira que a métrica glue.ALL.s3.filesystem.read_bytes, com a diferença de que essa métrica é atualizada no final de uma tarefa do Spark e também captura fontes de dados que não sejam do S3.

glue.driver.aggregate.elapsedTime

O tempo de ETL decorrido em milissegundos (não inclui os tempos de bootstrap do trabalho).

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (contagem).

Estatística válida: SUM (SOMA). Essa métrica é um valor delta do último valor relatado, portanto, no painel de métricas do AWS Glue, uma estatística SUM (SOMA) é usada para agregação.

Unidade: milissegundos

Pode ser usado para determinar quanto tempo leva em média para uma execução de trabalho ser executada.

Algumas maneiras de usar os dados:

  • Ajustar alarmes para retardatários.

  • Medir a variação entre execuções do trabalho.

glue.driver.aggregate.numCompletedStages

O número de etapas concluídas no trabalho.

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (contagem).

Estatística válida: SUM (SOMA). Essa métrica é um valor delta do último valor relatado, portanto, no painel de métricas do AWS Glue, uma estatística SUM (SOMA) é usada para agregação.

Unidade: contagem

Pode ser usada para monitorar:

  • Progresso do trabalho.

  • Cronograma por etapa de execução de trabalhos, quando correlacionado com outras métricas.

Algumas maneiras de usar os dados:

  • Identificar etapas exigentes na execução de um trabalho.

  • Definir alarmes para picos correlacionados (etapas exigentes) em execuções de trabalhos.

glue.driver.aggregate.numCompletedTasks

O número de tarefas concluídas no trabalho.

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (contagem).

Estatística válida: SUM (SOMA). Essa métrica é um valor delta do último valor relatado, portanto, no painel de métricas do AWS Glue, uma estatística SUM (SOMA) é usada para agregação.

Unidade: contagem

Pode ser usada para monitorar:

  • Progresso do trabalho.

  • Paralelismo dentro de uma etapa.

glue.driver.aggregate.numFailedTasks

O número de tarefas que falharam.

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (contagem).

Estatística válida: SUM (SOMA). Essa métrica é um valor delta do último valor relatado, portanto, no painel de métricas do AWS Glue, uma estatística SUM (SOMA) é usada para agregação.

Unidade: contagem

Pode ser usada para monitorar:

  • Anormalidades de dados que fazem com que as tarefas de trabalhos falhem.

  • Anormalidades de cluster que fazem com que as tarefas de trabalhos falhem.

  • Anormalidades de script que fazem com que as tarefas de trabalhos falhem.

Os dados podem ser usados para definir alarmes para falhas aumentadas que possam sugerir anormalidades em dados, cluster ou scripts.

glue.driver.aggregate.numKilledTasks

O número de tarefas encerradas.

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (contagem).

Estatística válida: SUM (SOMA). Essa métrica é um valor delta do último valor relatado, portanto, no painel de métricas do AWS Glue, uma estatística SUM (SOMA) é usada para agregação.

Unidade: contagem

Pode ser usada para monitorar:

  • Anormalidades na distorção de dados que resultam em exceções (OOMs) que encerram tarefas.

  • Anormalidades no script que resultam em exceções (OOMs) que encerram tarefas.

Algumas maneiras de usar os dados:

  • Definir alarmes para falhas aumentadas indicando anormalidades dos dados.

  • Definir alarmes para falhas aumentadas indicando anormalidades do cluster.

  • Definir alarmes para falhas aumentadas indicando anormalidades dos scripts.

glue.driver.aggregate.recordsRead

O número de registros lidos de todas as fontes de dados por todas as tarefas do Spark concluídas em execução em todos os executores.

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (contagem).

Estatística válida: SUM (SOMA). Essa métrica é um valor delta do último valor relatado, portanto, no painel de métricas do AWS Glue, uma estatística SUM (SOMA) é usada para agregação.

Unidade: contagem

Pode ser usada para monitorar:

  • Registros lidos.

  • Progresso do trabalho.

  • Fontes de dados JDBC.

  • Problemas com marcadores do trabalho.

  • Distorções em execuções de trabalhos ao longo dos dias.

Essa métrica pode ser usada da mesma maneira que a métrica glue.ALL.s3.filesystem.read_bytes, com a diferença de que essa métrica é atualizada no final de uma tarefa do Spark.

glue.driver.aggregate.shuffleBytesWritten

O número de bytes gravados por todos os executores para gerar a ordem aleatória de dados entre eles desde o relatório anterior (agregado pelo painel de métricas do AWS Glue como o número de bytes gravados para esse fim durante o minuto anterior).

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (contagem).

Estatística válida: SUM (SOMA). Essa métrica é um valor delta do último valor relatado, portanto, no painel de métricas do AWS Glue, uma estatística SUM (SOMA) é usada para agregação.

Unidade: bytes

Pode ser usado para monitorar: ordem aleatória de dados em trabalhos (junções grandes, groupBy, repartição, união).

Algumas maneiras de usar os dados:

  • Reparticionar ou descompactar arquivos de entrada grandes antes de processamento adicional.

  • Reparticionar dados de forma mais uniforme para evitar teclas de atalho.

  • Pré-filtrar dados antes de junções ou operações de groupBy.

glue.driver.aggregate.shuffleLocalBytesRead

O número de bytes lidos por todos os executores para gerar a ordem aleatória dos dados entre eles desde o relatório anterior (agregado pelo painel de métricas do AWS Glue como o número de bytes lidos para esse fim durante o minuto anterior).

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (contagem).

Estatística válida: SUM (SOMA). Essa métrica é um valor delta do último valor relatado, portanto, no painel de métricas do AWS Glue, uma estatística SUM (SOMA) é usada para agregação.

Unidade: bytes

Pode ser usado para monitorar: ordem aleatória de dados em trabalhos (junções grandes, groupBy, repartição, união).

Algumas maneiras de usar os dados:

  • Reparticionar ou descompactar arquivos de entrada grandes antes de processamento adicional.

  • Reparticionar dados de forma mais uniforme usando teclas de atalho.

  • Pré-filtrar dados antes de junções ou operações de groupBy.

glue.driver.BlockManager.disk.diskSpaceUsed_MB

O número de megabytes de espaço em disco usado em todos os executores.

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (medida).

Estatística válida: média. Essa é uma métrica do Spark, relatada como um valor absoluto.

Unidade: megabytes

Pode ser usada para monitorar:

  • Espaço em disco usado para blocos que representam partições RDD armazenadas em cache.

  • Espaço em disco usado para blocos que representam saídas em ordem aleatória intermediárias.

  • Espaço em disco usado para blocos que representam emissões.

Algumas maneiras de usar os dados:

  • Identificar falhas de trabalho pelo aumento do uso do disco.

  • Identificar partições grandes que resultam em despejo ou embaralhamento.

  • Aumentar a capacidade da DPU provisionada para corrigir esses problemas.

glue.driver.ExecutorAllocationManager.executors.numberAllExecutors

O número de executores ativamente executando trabalhos.

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (medida).

Estatística válida: média. Essa é uma métrica do Spark, relatada como um valor absoluto.

Unidade: contagem

Pode ser usada para monitorar:

  • Atividade do trabalho.

  • Executadores atrasados (com alguns executores em execução apenas)

  • Paralelismo atual no nível do executor.

Algumas maneiras de usar os dados:

  • Reparticionar ou descompactar arquivos de entrada grandes de antemão, se o cluster estiver subutilizado.

  • Identificar atrasos na etapa ou na execução do trabalho por cenários atrasados.

  • • Compare com numberMaxNeededExecutors para entender o backlog para provisionamento de mais DPUs.

glue.driver.ExecutorAllocationManager.executors.numberMaxNeededExecutors

O número máximo de executores de trabalho (em execução ativa e pendentes) necessários para satisfazer a carga atual.

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (medida).

Estatísticas válidas: máximo. Essa é uma métrica do Spark, relatada como um valor absoluto.

Unidade: contagem

Pode ser usada para monitorar:

  • Atividade do trabalho.

  • Paralelismo atual no nível do executor e backlog de tarefas pendentes ainda não agendadas por causa de executores indisponíveis devido à capacidade da DPU ou executores encerrados/falhados.

Algumas maneiras de usar os dados:

  • Identificar pendência/backlog da fila de agendamento.

  • Identificar atrasos na etapa ou na execução do trabalho por cenários atrasados.

  • Comparar com numberAllExecutors para entender o backlog para provisionamento de mais DPUs.

  • Aumentar a capacidade da DPU provisionada para corrigir o backlog pendente do executor.

glue.driver.jvm.heap.usage

glue.executorId.jvm.heap.usage

glue.ALL.jvm.heap.usage

A fração de memória usada pelo heap da JVM para este driver (escala: 0 a 1) pelo driver, executor identificado por executorId ou TODOS os executores.

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (medida).

Estatística válida: média. Essa é uma métrica do Spark, relatada como um valor absoluto.

Unidade: porcentagem

Pode ser usada para monitorar:

  • Condições de falta de memória (OOM) do driver usando glue.driver.jvm.heap.usage.

  • Condições de falta de memória (OOM) do executor usando glue.ALL.jvm.heap.usage.

Algumas maneiras de usar os dados:

  • Identificar os IDs e etapas do executor que consomem memória.

  • Identificar os IDs e etapas do executor atrasado.

  • Identificar uma condição de falta de memória (OOM) do driver.

  • Identificar uma condição de falta de memória (OOM) do executor e obter o ID de executor correspondente, para obter um rastreamento de pilha do log do executor.

  • Identificar arquivos ou partições que podem ter distorção de dados resultando em atrasos ou condições de falta de memória (OOMs).

glue.driver.jvm.heap.used

glue.executorId.jvm.heap.used

glue.ALL.jvm.heap.used

O número de bytes de memória usados pelo heap da JVM para o driver, o executor identificado por executorId ou TODOS os executores.

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (medida).

Estatística válida: média. Essa é uma métrica do Spark, relatada como um valor absoluto.

Unidade: bytes

Pode ser usada para monitorar:

  • Condições de falta de memória (OOM) do driver.

  • Condições de falta de memória (OOM) do executor.

Algumas maneiras de usar os dados:

  • Identificar os IDs e etapas do executor que consomem memória.

  • Identificar os IDs e etapas do executor atrasado.

  • Identificar uma condição de falta de memória (OOM) do driver.

  • Identificar uma condição de falta de memória (OOM) do executor e obter o ID de executor correspondente, para obter um rastreamento de pilha do log do executor.

  • Identificar arquivos ou partições que podem ter distorção de dados resultando em atrasos ou condições de falta de memória (OOMs).

glue.driver.s3.filesystem.read_bytes

glue.executorId.s3.filesystem.read_bytes

glue.ALL.s3.filesystem.read_bytes

O número de bytes lidos do Amazon S3 pelo driver, um executor identificado por executorId ou TODOS os executores desde o relatório anterior (agregado pelo painel de métricas do AWS Glue como o número de bytes lidos durante o minuto anterior).

Dimensões válidas: JobName, JobRunId e Type (medida).

Estatística válida: SUM (SOMA). Essa métrica é um valor delta do último valor relatado, portanto, no painel de métricas do AWS Glue, uma estatística SUM (SOMA) é usada para agregação. A área sob a curva no painel de métricas do AWS Glue pode ser usada para comparar visualmente os bytes lidos por duas execuções de trabalho diferentes.

Unidade: Bytes.

Pode ser usada para monitorar:

  • Movimentação de dados de ETL.

  • Progresso do trabalho.

  • Problemas com marcadores de trabalhos (dados processados, reprocessados e ignorados).

  • Comparação de leituras com a taxa de ingestão de fontes de dados externas.

  • Variação entre execuções do trabalho.

Os dados resultantes podem ser usados para:

  • Planejar a capacidade da DPU.

  • Configurar alarmes para grandes picos ou quedas de dados lidos para execuções e etapas de trabalhos.

glue.driver.s3.filesystem.write_bytes

glue.executorId.s3.filesystem.write_bytes

glue.ALL.s3.filesystem.write_bytes

O número de bytes gravados no Amazon S3 pelo driver, um executor identificado por executorId ou TODOS os executores desde o relatório anterior (agregado pelo painel de métricas do AWS Glue como o número de bytes gravados durante o minuto anterior).

Dimensões válidas: JobName, JobRunId e Type (medida).

Estatística válida: SUM (SOMA). Essa métrica é um valor delta do último valor relatado, portanto, no painel de métricas do AWS Glue, uma estatística SUM (SOMA) é usada para agregação. A área sob a curva no painel de métricas do AWS Glue pode ser usada para comparar visualmente os bytes gravados por duas execuções de trabalho diferentes.

Unidade: bytes

Pode ser usada para monitorar:

  • Movimentação de dados de ETL.

  • Progresso do trabalho.

  • Problemas com marcadores de trabalhos (dados processados, reprocessados e ignorados).

  • Comparação de leituras com a taxa de ingestão de fontes de dados externas.

  • Variação entre execuções do trabalho.

Algumas maneiras de usar os dados:

  • Planejar a capacidade da DPU.

  • Configurar alarmes para grandes picos ou quedas de dados lidos para execuções e etapas de trabalhos.

glue.driver.streaming.numRecords

O número de registros que são recebidos em um microlote. Essa métrica só está disponível para os trabalhos de transmissão do AWS Glue com o AWS Glue versão 2.0 e posterior.

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (contagem).

Estatísticas válidas: soma , máximo, mínimo, média, porcentagem

Unidade: contagem

Pode ser usada para monitorar:

  • Registros lidos.

  • Progresso do trabalho.

glue.driver.streaming.batchProcessingTimeInMs

O tempo necessário para processar os lotes em milissegundos. Essa métrica só está disponível para os trabalhos de transmissão do AWS Glue com o AWS Glue versão 2.0 e posterior.

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (contagem).

Estatísticas válidas: soma , máximo, mínimo, média, porcentagem

Unidade: contagem

Pode ser usada para monitorar:

  • Progresso do trabalho.

  • Performance do script.

glue.driver.system.cpuSystemLoad

glue.executorId.system.cpuSystemLoad

glue.ALL.system.cpuSystemLoad

A fração de carga de sistema da CPU usada (escala: 0 a 1) pelo driver, um executor identificado por executorId ou TODOS os executores.

Dimensões válidas: JobName (o nome do trabalho do AWS Glue), JobRunId (o ID de JobRun. ou ALL) e Type (medida).

Estatística válida: média. Essa métrica é relatada como um valor absoluto.

Unidade: porcentagem

Pode ser usada para monitorar:

  • Carga de CPU do driver.

  • Carga de CPU do executor.

  • Detecção de executores ou etapas vinculados à CPU ou E/S em um trabalho.

Algumas maneiras de usar os dados:

  • Planejar a capacidade da DPU junto com métricas de E/S (bytes de leitura/ordem aleatória de de bytes, paralelismo de tarefas) e a métrica de número máximo de executores necessários.

  • Identificar a relação entre vinculção à CPU e a E/S. Isso permite reparticionar e aumentar a capacidade provisionada para trabalhos de longa execução com conjuntos de dados divisíveis com menor utilização da CPU.

Dimensões para métricas do AWS Glue

As métricas do AWS Glue usam namespace do AWS Glue e fornecem métricas para as seguintes dimensões:

Dimensão Descrição

JobName

Esta dimensão filtra as métricas de todas as execuções de trabalho de um trabalho do AWS Glue.

JobRunId

Esta dimensão filtra as métricas de um trabalho do AWS Glue específico executado por um ID JobRun ou ALL.

Type

Esta dimensão filtra as métricas por count (um número agregado) ou gauge (um valor em um determinado ponto no tempo).

Para mais informações, consulte o Guia do usuário do Amazon CloudWatch.