Passer au contenu principal
Chaque exception enregistrée dans une tâche Rake sera envoyée à AppSignal et classée sous le namespace « Background ». Notez que nous ne suivons que les exceptions dans les tâches Rake. Il n’y a pas de surveillance des performances pour les tâches Rake. (Pour intégrer manuellement la surveillance des performances dans des tâches Rake sélectionnées, veuillez consulter notre guide d’intégration et notre guide d’instrumentation personnalisée.) Selon la version de la gem AppSignal que vous utilisez et le contexte, certaines étapes manuelles sont requises.

Intégrations

Applications Rails

Pour les applications Rails, assurez-vous de dépendre de la tâche :environment. Cela charge l’application Rails en mémoire et démarre AppSignal dans le cadre de l’application.
# lib/tasks/my_task.rb
task :my_task => :environment do
  # do stuff
end

Rakefile

Le Rakefile de votre application Rails devrait ressembler à l’exemple ci-dessous. Cela devrait déjà être le cas, pas besoin de le modifier.
# Rakefile
require File.expand_path("../config/application", __FILE__)

# Only require this file for gem version < 1.0
# require "appsignal/integrations/rake"

Rails.application.load_tasks
(Pour les versions plus anciennes de la gem AppSignal, versions < 1, vous devrez requérir manuellement l’intégration Rake. Elle est chargée automatiquement pour la version 1.x et supérieure.)

Applications Ruby

Pour les applications Ruby pures, des étapes supplémentaires sont requises pour charger AppSignal. AppSignal doit être requis, configuré et chargé. Consultez également notre guide d’intégration.
# Rakefile
require "appsignal"

Appsignal.start

task :foo do
  raise "bar"
end

Surveillance des performances des tâches Rake

Pour surveiller les performances des tâches Rake et tous les événements qui se produisent dans la tâche, configurez AppSignal avec l’option de configuration enable_rake_performance_instrumentation définie sur true. Une fois cette fonctionnalité activée, toutes les tâches Rake seront instrumentées et comptabilisées dans votre forfait.

Exigence d’arrêt

Pour les tâches Rake s’exécutant sur des hôtes de courte durée, il est nécessaire d’arrêter la gem AppSignal Ruby avant la sortie du processus Rake. Cela garantira qu’elle signale les données des tâches Rake à AppSignal avant l’arrêt de l’hôte. Ce comportement n’est nécessaire que dans des scénarios tels que :
  • Lorsqu’une tâche Rake planifiée (un cron job) est exécutée par un service d’hébergement.
  • Lorsqu’une tâche Rake est exécutée sur un conteneur qui démarre pour exécuter cette tâche Rake et s’arrête lorsque la tâche Rake se termine.
  • Lorsqu’une tâche Rake est exécutée sur un Heroku runner, ou des fournisseurs d’hébergement similaires.
Il n’est pas nécessaire d’arrêter la gem AppSignal Ruby si l’hôte sur lequel le script est démarré continue à fonctionner après la sortie du script. AppSignal est arrêté automatiquement à la fin de la tâche Rake si un conteneur ou un environnement d’hébergement comme Heroku est détecté. Ce comportement est contrôlé par l’option enable_at_exit_hook. Assurez-vous que cette option est définie sur true pour les scripts qui nécessitent l’arrêt d’AppSignal, s’il n’est pas détecté automatiquement. Il peut être nécessaire d’ajouter un appel sleep supplémentaire de quelques secondes pour s’assurer qu’il y a suffisamment de temps pour envoyer toutes les données. Utilisez l’exemple d’utilisation at_exit du code ci-dessous si nécessaire.
# Short-lived host example task

# This block is called after all tasks are ran
# Ensures the AppSignal agent has enough time to send the data to the AppSignal servers
at_exit { sleep 10 }

task :foo do
  # Your Rake task code
end

Exigence d’arrêt héritée

La section ci-dessous concerne les applications utilisant la gem Ruby 4.5.7 et inférieure. Ces versions n’incluent pas l’option enable_at_exit_hook qui automatise ce comportement.Pour les versions plus récentes de la gem Ruby, consultez la section d’exigence d’arrêt.
Lors de l’exécution d’une seule tâche Rake sur un hôte de courte durée (par exemple avec des conteneurs Docker, des planificateurs Kubernetes ou Heroku), il y a trois exigences. Cela garantit que l’extension AppSignal de l’application a le temps de vider les données vers l’agent et que l’agent a le temps d’envoyer les données à notre API avant l’arrêt (du conteneur). Les exigences sont :
  • Appsignal.stop doit être appelé dans la tâche Rake.
  • running_in_container doit être défini sur true dans la configuration.
    • Pour la plupart des types de conteneurs, running_in_container est automatiquement défini sur true lorsqu’il est détecté, pour d’autres une configuration manuelle est requise.
  • Un sleep de par exemple 10 secondes pour donner à l’agent AppSignal le temps d’envoyer les données
Un exemple de la façon dont Appsignal.stop est appelé dans le Rakefile :
# Short-lived host example task

# This block is called after all tasks are ran
# The argument "rake" is the name of the parent process name which is being
# stopped and logs it as the reason why AppSignal is stopping.
at_exit do
  Appsignal.stop "rake"
  sleep 10 # For short-lived hosts, give the AppSignal agent time to send the data
end

task :foo do
  # Tracking data with AppSignal in your task
  Appsignal.increment_counter "my_custom_counter"
end
Remarque : un sleep de 10 secondes a été ajouté à la fin de l’exemple de tâche Rake ci-dessus. Ceci est requis pour les tâches exécutées sur des hôtes de courte durée. Lorsque la tâche se termine, le processus s’arrête. L’appel Appsignal.stop vide toutes les données de transaction actuellement dans l’extension AppSignal vers notre agent. Il se met ensuite en sommeil pendant 10 secondes pour permettre à l’agent d’envoyer les données avant l’arrêt.