Pular para o conteúdo principal
Active Job é um framework para declarar jobs e fazê-los rodar em diversos backends de filas, fornecido com o Rails. A integração do Active Job rastreia a execução e eventos do job sendo executado. Quando o AppSignal detecta métricas do Active Job, ele cria um Magic Dashboard, permitindo monitorar visualmente as métricas principais.

Adapters suportados

A integração do Active Job suporta todos os adapters do Active Job. Ela também pode oferecer suporte para adapters não listados naquela página, que são acessíveis através de uma gem separada. No entanto, observe que esses adapters não foram testados.

Integração com bibliotecas suportadas pelo AppSignal

As seguintes bibliotecas de background jobs que o AppSignal suporta são automaticamente integradas com o Active Job, permitindo que o AppSignal te dê insights de desempenho mais aprofundados:

Reportar erros no descarte do job

Defina a opção de configuração activejob_report_errors como discard para reportar erros apenas quando um job for descartado. Quando um job é descartado, todas as tentativas de retry do job foram esgotadas e o job não é mais reprocessado. Leia a documentação do Active Job para saber mais sobre tratamento de exceptions do Active Job e retries de jobs com falha.
Alguns adapters do Active Job (como Sidekiq, Delayed::Job, etc.) têm seu próprio sistema de retry. Após o Active Job ter esgotado seus retries, essas bibliotecas podem acionar seu próprio sistema de retry de jobs.Isso fará retry dos jobs mesmo após terem sido esgotados os retries do Active Job e o job ter sido descartado. Para evitar fazer retry de jobs após o Active Job ter parado de fazer retry do job e relatar erros para esses retries, certifique-se de que o sistema de retry do adapter esteja desabilitado.Ao depender do sistema de retry do Sidekiq, também configure-o para reportar erros somente no descarte, para que ele não reporte erros múltiplas vezes.

Enqueue instrumentation

Enfileirar um job através do Active Job registra um event enqueue.active_job, com o título baseado no job sendo enfileirado. Quando um job é enfileirado através de um adapter que o AppSignal também instrumenta, como Sidekiq ou Resque, o AppSignal suprime o event de enqueue do próprio adapter e registra o enqueue apenas uma vez como o event do Active Job. O AppSignal registra events de enqueue na event timeline da transaction ativa, por exemplo, quando você enfileira um job a partir de uma requisição web ou de dentro de outro job. Ele só registra esses events quando uma transaction está ativa, então enfileirar um job fora de uma transaction não registra nada. Para parar de registrar events de enqueue em todas as integrações de background job, defina a opção de configuração enable_job_enqueue_instrumentation como false. Isso não afeta a instrumentação dos jobs em si.

Metadados

O AppSignal coleta os seguintes metadados para jobs do Active Job: *A partir do Rails versão 6, queue times são reportados para o namespace de onde são reportados e podem ser visualizados nos Gráficos de Performance do AppSignal. O AppSignal usa os metadados do Active Job para te dar insights contextuais mais profundos sobre o desempenho do job. Ao inspecionar amostras do Active Job no AppSignal:
  • O Job name será usado para agrupar o job para incidents do AppSignal:
Example performance issues overview
  • Os metadados (exceto job name e events) estarão disponíveis como tags filtráveis nas amostras de incident:
Example Active Job tags
  • Eventos *.active_job serão mostrados na timeline de eventos para amostras de desempenho:
Example Event timeline

Magic dashboard

Quando o AppSignal recebe métricas do Active Job, ele cria um magic dashboard do Active Job, disponível na seção de dashboards do app do AppSignal. O magic dashboard do Active Job terá os seguintes gráficos: As tags fornecem um detalhamento contextual de informações de desempenho do Active Job. Atualmente, o AppSignal reporta as seguintes tags para jobs do Active Job: Cada tag será representada com uma linha colorida no gráfico: Example Actie Job dashboard

Gráfico Duration per job class

O gráfico Duration per job class mostra a quantidade de tempo que os jobs levaram para executar, agrupados pela classe que define o job. Você pode usar este gráfico para monitorar o desempenho dos jobs, por classe, dando uma visão geral do desempenho dos jobs e permitindo identificar e investigar rapidamente picos no tempo de duração.

Gráfico Job status per queue

O gráfico Job status per queue with priority mostra o número de jobs que foram executados, agrupados pelo status resultante, pela fila em que foram enfileirados. Você pode usar este gráfico para monitorar contagens de erros e desempenho de jobs com base na fila, identificar gargalos e otimizar seus background jobs para escalabilidade.

Gráfico Job status per queue with priority

Nem todos os adapters do Active Job suportam prioridade de job. Se os jobs não têm valores de prioridade, o gráfico ficará vazio.
O gráfico Job status per queue with priority mostra o número de jobs que foram executados, agrupados pelo status resultante, pela fila em que foram enfileirados e pela prioridade que lhes foi atribuída. Você pode usar este gráfico para monitorar contagens de erros e desempenho de jobs com base em fila e prioridade, identificar gargalos e otimizar seus background jobs para escalabilidade.

Gráfico Throughput per job class

O gráfico Throughput per job class mostra a quantidade de jobs que foram executados, agrupados pela classe que define o job. Você pode usar este gráfico para monitorar quantos jobs são executados, agrupados pela classe que define o job.