• /
  • EnglishEspañol日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

Caso haja alguma divergência entre a versão em inglês e a traduzida, a versão em inglês prevalece. Acesse esta página para mais informações.

Criar um problema

Monitor processos em segundo plano Ruby

Nosso agente Ruby utiliza automaticamente várias estruturas comuns de trabalho em segundo plano. Você também pode personalizá-lo para trace quaisquer tarefas em segundo plano. Os dados de tarefas em segundo plano aparecem na páginaTransactions do APM como Non-web transactions.

Estrutura suportada

A seguinte estrutura de trabalho em segundo plano é suportada por padrão em versões recentes do agente Ruby:

Importante

O usuário JRuby pode encontrar problemas com métricas de CPU.

Se você estiver usando essa estrutura, o monitoramento de trabalhos em segundo plano normalmente não requer configuração adicional.

Monitor trabalhos personalizados em segundo plano

Você pode instrumentar trabalhos em segundo plano personalizados para que apareçam na páginaTransactions do APM como Non-web transactions. Para monitor Non-web transactions enquanto estiver usando um framework não suportado, você deve adicionar instrumentação personalizada.

Por exemplo, um trabalho em segundo plano executa periodicamente uma tarefa chamada SalesOrganization#find_new_leads.

  1. Adicione o módulo ControllerInstrumentation .

  2. Use a diretiva add_transaction_tracer below a definição do método

  3. Adicione :category => :task para informar ao agente que esse trace é um Non-web transaction.

    require 'newrelic_rpm'
    class SalesOrganization
    include
    ::NewRelic::Agent::Instrumentation::ControllerInstrumentation
    def find_new_leads
    ...
    end
    add_transaction_tracer :find_new_leads, :category => :task
    end

    Você pode passar uma string para :category, mas os valores só aparecerão na página Transactions do APM se a string começar com OtherTransaction/.

Monitor métodos de plano de fundo personalizados

Usando a API do agente Ruby, você pode designar métodos específicos para trace o Non-web transactions. Isso reúne rastreamento de trabalhos de execução lenta e associa erros capturados à transação.

Para instrumentalizar um método de classe, use a classe singleton.

Por exemplo, um trabalho em segundo plano executa periodicamente uma tarefa chamada SalesOrganization#find_new_leads.

  1. Adicione o módulo ControllerInstrumentation below à definição do método.

  2. Use a diretiva add_transaction_tracer

  3. Adicione :category => :task para informar ao agente que esse trace é um Non-web transaction.

    require 'newrelic_rpm'
    class SalesOrganization
    def self.find_new_leads
    ...
    end
    class << self
    include
    ::NewRelic::Agent::Instrumentation::ControllerInstrumentation
    add_transaction_tracer :find_new_leads, :category => :task
    end
    end

    Para mais informações, consulte Ruby métrica personalizada.

Monitor processos de curta duração

Certifique-se de que o processo não esteja em execução antes de o agente se conectar aos servidores backend . Para fazer isso, faça com que o agente Ruby se conecte de forma síncrona ao New Relic, em vez do comportamento assíncrono padrão.

Primeiro, em seu Gemfile, adicione require: false ao final da instalação da gem newrelic_rpm :

gem 'newrelic_rpm', require: false

Em seguida, chame manual_start e passe a opção :sync_startup => true :

require 'new_relic/agent'
NewRelic::Agent.manual_start(:sync_startup => true)

Note: A maioria das opções de configuração podem ser passadas para inicialização manual.

Usar require 'new_relic/agent' exigirá o código do agente e garantirá que o agente não seja executado até que você o inicie manualmente.

Se o processo for mais curto que o ciclo de coleta do agente , será necessário encerrar manualmente o agente com ::NewRelic::Agent.shutdown para garantir que todos os dados na fila sejam enviados.

Configure newrelic.yml para processos em segundo plano

A configuração do newrelic.yml depende do contexto do aplicativo em segundo plano.

Reportar para um nome de aplicativo alternativo

Você pode fazer com que trabalhos executados no contexto de um aplicativo da web existente do New Relic apareçam com um nome de aplicativo diferente na interface do APM.

  1. O início before newrelic_rpm é exigido pelo seu código de trabalho.

  2. Defina a variável de ambiente NEW_RELIC_APP_NAME como o nome do aplicativo a ser usado para tarefas em segundo plano ao iniciar processos de trabalho em segundo plano. Isso substituirá a configuração app_name em seu newrelic.yml.

    bash
    $
    NEW_RELIC_APP_NAME="My Background Jobs"
    $
    ./bin/my_background_worker.rb

Certifique-se de que o agente seja iniciado

O agente Ruby será iniciado automaticamente na maioria dos casos assim que você require 'newrelic_rpm', a menos que o agente detecte um nome executável na lista negra, um nome de tarefa rake ou uma constante. Isso evita que ele seja iniciado durante tarefas comuns de rake e sessões de console interativas.

Para obter mais informações, consulte a documentação sobre como controlar a inicialização do agente

Monitor script

As instruções de inicialização do agente se aplicam à execução de tarefas em segundo plano em um daemon. Se um script executar uma única tarefa em segundo plano e sair, encerre manualmente o agente com ::NewRelic::Agent.shutdown quando o script for concluído. Isso garante que o coletor New Relic receba os dados. Por exemplo:

require 'newrelic_rpm'
class SalesOrganization
include
::NewRelic::Agent::Instrumentation::ControllerInstrumentation
def find_new_leads
...
end
add_transaction_tracer :find_new_leads, :category => :task
end
SalesOrganization.new.find_new_leads
::NewRelic::Agent.shutdown
Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.