• EnglishEspañol日本語한국어Português
  • Inicia sesiónComenzar ahora

Te ofrecemos esta traducción automática para facilitar la lectura.

En caso de que haya discrepancias entre la versión en inglés y la versión traducida, se entiende que prevalece la versión en inglés. Visita esta página para obtener más información.

Crea una propuesta

Monitor los procesos en segundo plano de Ruby

Nuestro agente Ruby instrumentó automáticamente varios marcos de trabajo en segundo plano comunes. También puedes personalizarlo para trazar cualquier tarea en segundo plano. Los datos de los trabajos en segundo plano aparecen en la páginaTransactions de APM como Non-web transactions.

Marco soportado

El siguiente marco de trabajo en segundo plano se admite de forma predeterminada en versiones recientes del agente Ruby:

Importante

El usuario de JRuby puede ver problemas con la CPU métrica.

Si está utilizando estos marcos, los trabajos de monitoreo en segundo plano generalmente no requieren configuración adicional.

Monitor trabajos en segundo plano personalizados

Puede implementar trabajos en segundo plano personalizados para que aparezcan en la página APMTransactions como Non-web transactions. Para monitor Non-web transactions mientras usa un framework no compatible, debe agregar instrumentación personalizada.

Por ejemplo, un trabajo en segundo plano ejecuta periódicamente una tarea llamada SalesOrganization#find_new_leads.

  1. Agregue el módulo ControllerInstrumentation .

  2. Utilice la directiva add_transaction_tracer below la definición del método

  3. Agregue :category => :task para decirle al agente que esta traza es un 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

    Puede pasar una cadena a :category, pero los valores solo aparecerán en la página APM Transactions si la cadena comienza con OtherTransaction/.

Monitor métodos de fondo personalizados

Usando la API del agente Ruby, puedes designar métodos específicos para trazar el Non-web transactions. Esto recopila trazas para trabajos de ejecución lenta y asocia errores capturados a la transacción.

Para instrumentar un método de clase, use la clase singleton.

Por ejemplo, un trabajo en segundo plano ejecuta periódicamente una tarea llamada SalesOrganization#find_new_leads.

  1. Agregue el módulo ControllerInstrumentation below la definición del método.

  2. Utilice la directiva add_transaction_tracer

  3. Agregue :category => :task para decirle al agente que esta traza es un 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 más información, consulte Ruby métrica personalizada.

Monitor procesos de corta duración

Asegúrese de que el proceso no se esté ejecutando antes de que el agente se conecte a los servidores backend. Para hacerlo, haga que el agente Ruby se conecte sincrónicamente a New Relic, en lugar del comportamiento asincrónico predeterminado.

Primero, en su Gemfile, agregue require: false al final de su instalación de gema newrelic_rpm :

gem 'newrelic_rpm', require: false

Luego, llame manual_start y pase la opción :sync_startup => true :

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

Note: La mayoría de las opciones de configuración se pueden pasar al inicio manual.

El uso require 'new_relic/agent' requerirá el código del agente y garantizará que el agente no se ejecute hasta que lo inicie manualmente.

Si el proceso es más corto que el ciclo de recolección del agente, deberá cerrar manualmente el agente con ::NewRelic::Agent.shutdown para garantizar que se envíen todos los datos en cola.

Configurar newrelic.yml para procesos en segundo plano

La configuración de su newrelic.yml depende del contexto de la aplicación en segundo plano.

Informar a un nombre de aplicación alternativo

Puede hacer que los trabajos que se ejecutan en el contexto de una aplicación web New Relic existente aparezcan con un nombre de aplicación diferente en la UI de APM.

  1. El código de trabajador requiere comenzar before newrelic_rpm .

  2. Establezca la variable de entorno NEW_RELIC_APP_NAME en el nombre de la aplicación que se utilizará para sus trabajos en segundo plano al iniciar sus procesos de trabajo en segundo plano. Esto anulará la configuración app_name en su newrelic.yml.

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

Asegúrese de que el agente comience

El agente Ruby se iniciará automáticamente en la mayoría de los casos tan pronto como usted require 'newrelic_rpm', a menos que el agente detecte un nombre de ejecutable, un nombre de tarea de rake o una constante en la lista negra. Esto evita que se inicie durante tareas comunes de rake y sesiones de consola interactiva.

Para obtener más información, consulte la documentación sobre cómo controlar el inicio del agente.

Monitor de secuencia de comandos

Las instrucciones de inicio del agente se aplican cuando se ejecutan trabajos en segundo plano en un daemon. Si un script ejecuta una única tarea en segundo plano y sale, cierre manualmente el agente con ::NewRelic::Agent.shutdown cuando finalice el script. Esto garantiza que el recolector de New Relic reciba los datos. Por ejemplo:

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.