Active Job
Consultez notre page Active Job pour plus d’informations sur le fonctionnement de notre instrumentation Active Job.Action Cable
Consultez notre page Action Cable pour plus d’informations sur le fonctionnement de notre instrumentation Action Cable.Configurer AppSignal dans un initialiseur
Nous recommandons d’utiliser notre fichier de configurationconfig/appsignal.rb ou les variables d’environnement pour configurer AppSignal.
Par défaut, il n’est pas possible de configurer AppSignal depuis un initialiseur Rails, car AppSignal se charge avant les initialiseurs de votre application, afin de pouvoir signaler les erreurs survenant lors de l’initialisation.
Pour configurer AppSignal dans un initialiseur Rails, configurez d’abord Rails pour qu’il démarre AppSignal après l’exécution des initialiseurs de l’application.
Appsignal.start dans les initialiseurs. La gem Ruby démarrera AppSignal automatiquement lorsque Rails aura exécuté tous les initialiseurs.
Lorsqu’une application Rails est configurée pour démarrer AppSignal après le chargement des initialiseurs, il n’est plus possible de signaler les erreurs des initialiseurs lors du démarrage de l’application Rails.
Signalement des erreurs depuis les initialiseurs
Par défaut, AppSignal signale les erreurs qui se produisent dans les contrôleurs, les tâches Rake et les jobs Active Job. Il ne signale pas les erreurs qui se produisent lorsque l’application démarre, avant les initialiseurs Rails. Pour être notifié lorsque ces erreurs se produisent, ajoutez ce qui suit à votre fichierconfig.ru, autour de la ligne qui requiert le fichier environment.rb.
Nettoyeur de backtrace
Avec l’intégration Rails, AppSignal exécutera le backtrace de chaque exception via le nettoyeur de backtrace Rails. Ce nettoyeur vous offre la possibilité de modifier ou de filtrer les lignes de backtrace indésirables, en supprimant l’encombrement et le bruit du backtrace. Vous pouvez ajouter ou supprimer des filtres et des silencieux à la configuration par défaut. Les filtres muteront la ligne donnée. Un exemple serait de supprimer le préfixeRails.root.
Les silencieux supprimeront la ligne du backtrace, si l’expression donnée renvoie true. Vous pouvez ajouter ces règles supplémentaires de nettoyeur de backtrace dans un initialiseur.
Par exemple :
Reporter d’erreurs
AppSignal signale par défaut les erreurs levées viaActiveSupport::ErrorReporter. ActiveSupport::ErrorReporter a été introduit dans Rails 7.0 pour standardiser le signalement personnalisé d’erreurs.
Vous pouvez désactiver cette fonctionnalité avec l’option de configuration enable_rails_error_reporter.
Si une transaction est active dans le contexte où une erreur est signalée via le reporter d’erreurs Rails, elle inclura les mêmes métadonnées et données d’échantillon que la transaction active : namespace, nom d’action, tags, données personnalisées, paramètres, etc.
Namespace et action depuis la transaction actuelle
Lors du signalement des erreurs, nous déterminons le namespace et le nom d’action dans lesquels elles se produisent, comme un contrôleur ou un job en arrière-plan, au mieux de nos capacités. Le namespace de l’incident et le nom d’action ne seront pas toujours définis ou précis. Si une transaction AppSignal est active (comme dans une requête web ou un job en arrière-plan), l’erreur signalée avecRails.error.handle/record aura le même namespace, le même nom d’action, les mêmes tags, paramètres, données personnalisées, etc. que la transaction active. Si aucune transaction AppSignal n’est active, aucun namespace, nom d’action, tags, etc. ne seront définis par défaut.
Namespace et action depuis le contexte
Si vous souhaitez modifier le namespace et le nom d’action de l’erreur signalée sans les modifier sur la transaction AppSignal déjà active, vous pouvez personnaliser cela lors de l’appel au reporter d’erreurs.Tags depuis la transaction active
Par défaut, les tags de la transaction de la requête/job sont copiés sur la transaction AppSignal de l’erreur du reporter d’erreurs depuis la transaction de la requête/job.Tags depuis le contexte
Vous pouvez ajouter des tags à une erreur signalée en utilisantcontext dans l’appel Rails.error.handle/record. Ces tags ne seront définis que sur l’erreur signalée avec les méthodes Rails.error.handle/record.
Appsignal.add_tags.
Comportement hérité de la gem Ruby 3
Dans la gem AppSignal for Ruby version 3, le comportement de signalement d’erreurs est différent.- Les erreurs signalées avec la méthode
Rails.error.handlesont signalées à AppSignal. - Les erreurs signalées avec
Rails.error.recordne sont pas signalées à AppSignal pour éviter de signaler l’erreur deux fois lorsqu’elle est signalée par notre middleware de signalement d’erreurs Rails.
Limitations d’héritage du contexte
Dans la gem Ruby 3, l’héritage du contexte de la transaction active est limité. Les métadonnées et certaines données d’échantillon ne sont copiées que si elles sont définies au moment oùRails.error.handle/record est appelé.
En pratique, cela signifie que les contrôleurs Rails et les jobs Active Job seront signalés avec précision. Pour d’autres bibliothèques comme les jobs Sidekiq, aucun nom d’action n’est défini lors du signalement des erreurs avec Rails.error.handle.
Les tags définis après l’appel de Rails.error.handle/record ne sont pas signalés pour l’erreur signalée à l’aide de cet assistant.
Runners
AppSignal signalera automatiquement les erreurs à l’intérieur des runners Rails. Une configuration manuelle est également requise pour instrumenter les performances d’un runner. Nous recommandons de placer le code du runner dans un fichier séparé et de l’envelopper dans l’assistantAppsignal.monitor, comme dans l’exemple ci-dessous.
Bash
enable_at_exit_hook est définie sur true (ce qui devrait être la valeur par défaut sur les conteneurs). Cela garantira que les données sont vidées vers l’agent AppSignal avant que le runner ne s’arrête.