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 exceções do Active Job e retries de jobs com falha.
class ExampleJob < ActiveJob::Base
  # Configure the retry attempts using the `retry_on` method
  retry_on StandardError, :attempts => 2

  # ...
end
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.

Metadados

O AppSignal coleta os seguintes metadados para jobs do Active Job:
MetadadoDescrição
Active Job IDO Active Job ID é reportado pelo adapter do Active Job.
ArgumentsArgumentos passados ao job ao chamar perform_later.
EventsTodos os eventos *.active_job.
Job nameex. MyBackgroundJob#perform usado para agrupar o job para incidents do AppSignal.
PriorityA prioridade da amostra, se usar um adapter que suporte prioridade de job.
Provider job IDO ID do job reportado pelo adapter do Active Job.
QueueO nome da fila da amostra, se usar um adapter que suporte múltiplas filas.
Queue time*Tempo decorrido desde que um job foi enfileirado até ser executado.
*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:
GráficoMétricasTags
Duration per job classtransaction_duration
  • namespace
  • action
  • Job status per queueactive_job_queue_job_count
  • status
  • queue
  • Job status per queue with priorityactive_job_queue_job_count
  • status
  • queue
  • priority
  • Throughput per job classtransaction_duration
  • namespace
  • action
  • 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:
    NomeDescrição
    actionO nome da action a partir da qual a métrica foi reportada (ex.: YourWorker#perform).
    queueFila nomeada em que os jobs são processados, ex. default ou mailer.
    statusStatus de cada job, processed ou failed.
    Jobs failed também são contabilizados como processed.
    priorityA prioridade dada a cada job, ex. 0 ou 1.
    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.