• /
  • EnglishEspañolFrançais日本語한국어Português
  • Se connecterDémarrer

Cette traduction automatique est fournie pour votre commodité.

En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.

Créer un problème

Monitorer les processus d'arrière-plan Ruby

Notre agent Ruby instrumente automatiquement plusieurs frameworks de tâches d'arrière-plan courants. Vous pouvez également le personnaliser pour trace toutes les tâches en arrière-plan. Les données des tâches en arrière-plan apparaissent dans la pageTransactions dans APM sous la forme Non-web transactions.

Frameworks pris en charge

Les frameworks de tâches d'arrière-plan suivants sont pris en charge par défaut dans les versions récentes de l'agent Ruby :

Important

L'utilisateur JRuby peut voir des problèmes avec les métriques CPU.

Si vous utilisez ces frameworks, monitoring des tâches en arrière-plan ne nécessite généralement pas configuration supplémentaire.

tâches d'arrière-plan personnalisées du moniteur

Vous pouvez instrumenter des tâches d'arrière-plan personnalisées pour qu'elles apparaissent dans la page APMTransactions sous le nom Non-web transactions. Pour monitorer Non-web transactions tout en utilisant un framework non pris en charge, vous devez ajouter instrumentation personnalisée.

À titre d’exemple, une tâche en arrière-plan exécute périodiquement une tâche appelée SalesOrganization#find_new_leads.

  1. Ajoutez le module ControllerInstrumentation .

  2. Utilisez la directive add_transaction_tracer below la définition de la méthode

  3. Ajoutez :category => :task pour indiquer à l'agent que cette trace est 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

    Vous pouvez passer une chaîne à :category, mais les valeurs n'apparaîtront sur la page APM Transactions que si la chaîne commence par OtherTransaction/.

méthodes d'arrière-plan personnalisées du moniteur

En utilisant l'API d'agent Ruby , vous pouvez désigner des méthodes spécifiques pour trace le Non-web transactions. Cela rassemble les traces des tâches lentes et associe les erreurs capturées aux transactions.

Pour instrumenter une méthode de classe, utilisez la classe singleton.

À titre d’exemple, une tâche en arrière-plan exécute périodiquement une tâche appelée SalesOrganization#find_new_leads.

  1. Ajoutez le module ControllerInstrumentation below à la définition de la méthode.

  2. Utilisez la directive add_transaction_tracer

  3. Ajoutez :category => :task pour indiquer à l'agent que cette trace est 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

    Pour plus d'informations, voir Ruby métriques personnalisées.

Monitorer les processus de courte durée

Assurez-vous que le processus n'est pas en cours d'exécution avant que l'agent se connecte aux serveurs backend . Pour ce faire, faites en sorte que l’agent Ruby se connecte de manière synchrone à New Relic, plutôt que le comportement asynchrone par défaut.

Tout d’abord, dans votre Gemfile, ajoutez require: false à la fin de votre installation de gem newrelic_rpm :

gem 'newrelic_rpm', require: false

Ensuite, appelez manual_start et transmettez l'option :sync_startup => true :

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

Note: La plupart des options de configuration peuvent être transmises au démarrage manuel.

L'utilisation de require 'new_relic/agent' nécessitera le code de l'agent et garantira que l'agent ne s'exécutera pas tant que vous ne l'aurez pas démarré manuellement.

Si le processus est plus court que le cycle de collecte de l'agent, vous devez arrêter manuellement l'agent avec ::NewRelic::Agent.shutdown pour garantir que toutes les données en file d'attente sont envoyées.

Configurer newrelic.yml pour les processus en arrière-plan

La configuration de votre newrelic.yml dépend du contexte de l'application en arrière-plan.

Signaler un nom d'application alternatif

Vous pouvez faire en sorte que les tâches exécutées dans le contexte d'une application Web New Relic existante apparaissent sous un nom d'application différent dans l'UI APM.

  1. Le début before newrelic_rpm est requis par votre code de travailleur.

  2. Définissez la variable d’environnement NEW_RELIC_APP_NAME sur le nom de l’application à utiliser pour vos tâches en arrière-plan lors du démarrage de vos processus de travail en arrière-plan. Cela remplacera le paramètre app_name dans votre newrelic.yml.

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

Assurez-vous que l'agent démarre

L'agent Ruby démarre automatiquement dans la plupart des cas dès que vous require 'newrelic_rpm', sauf si l'agent détecte un nom d'exécutable, un nom de tâche de rake ou une constante sur liste noire. Cela l'empêche de démarrer pendant les tâches de râteau courantes et les sessions de console interactives.

Pour plus d'informations, consultez la documentation sur le contrôle du démarrage de l'agent

Script de monitoring

Les instructions de démarrage de l'agent s'appliquent lors de l'exécution de tâches en arrière-plan dans un daemon. Si un script exécute une seule tâche en arrière-plan et se ferme, arrêtez manuellement l'agent avec ::NewRelic::Agent.shutdown lorsque le script se termine. Cela garantit que le collecteur New Relic reçoit les données. Par exemple:

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
Droits d'auteur © 2025 New Relic Inc.

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