En plus de votre application Web elle-même, l'agent Ruby New Relic (version 3.6.0 ou supérieur) peut automatiquement instrumenter vos tâches Sidekiq. Vous n’avez pas besoin d’inclure une bibliothèque d’instrumentation dans votre worker.
L'agent Ruby instrumente la méthode perform
sur tous les travailleurs Sidekiq. Les données des tâches en arrière-plan apparaissent sur la pageTransactions d'APM, avec la trace de la transaction et les erreurs, en sélectionnant Non-web transactions comme type de transaction.
Capturer les arguments de travail
À partir de la version 3.6.9 de l'agent Ruby, vous pouvez éventuellement configurer l'agent Ruby pour capturer les arguments de travail Sidekiq dans la trace de transaction et les erreurs de trace. Cela peut être particulièrement utile pour tenter de reproduire des tâches ayant échoué.
Par défaut, cette fonctionnalité est désactivée au cas où vos arguments de travail contiennent des informations sensibles. Pour activer cette fonctionnalité, modifiez votre newrelic.yml
en fonction de la version de votre agent :
- newrelic_rpm 3.12.0 or higher:
attributes.include: job.sidekiq.args.*
- newrelic_rpm 3.6.9 to 3.11.x:
sidekiq.capture_params: true
Conseil
Cette fonctionnalité est distincte du paramètre générique de niveau supérieur capture_params
, qui contrôle si les paramètres de requête HTTP sont capturés lors du suivi des transactions et des erreurs de suivi pour requests Web. Vous pouvez configurer ces deux paramètres indépendamment.
Inclure ou exclure certains arguments professionnels
À partir de la version 9.5.0 de l'agent Ruby, une instance de l'agent configurée pour capturer les arguments de tâche Sidekiq comme décrit ci-dessus peut également être configurée pour inclure ou exclure certains arguments pour un contrôle précis des arguments signalés à New Relic.
L'option configuration :'sidekiq.args.include'
peut être définie sur un éventail de chaînes qui serviront collectivement de liste blanche. Chacune de ces chaînes sera transmise à Regexp.new
pour une prise en charge complète des expressions régulières. Pour les arguments de travail qui sont hacher, si la clé d'un hacher correspond à l'un des modèles d'inclusion, alors la clé et sa valeur correspondante seront incluses. Pour les arguments scalaires, la représentation sous forme de chaîne du scalaire devra correspondre à l’un des modèles d’inclusion à capturer.
L'option :'sidekiq.args.exclude'
fonctionne de la même manière. Il peut être défini sur un éventail de chaînes qui seront chacune transmises à Regexp.new
pour créer des modèles. Ces modèles serviront collectivement de liste de refus pour les arguments de travail indésirables. Toute clé Hacher, valeur Hacher ou scalaire correspondant à un modèle d'exclusion sera exclu (non envoyé à New Relic).
Configurer sidekiq.args.include
et sidekiq.args.exclude
(newrelic_rpm 9.5.0 ou supérieur) :
newrelic.yml
exemples:
Toute chaîne dans l'éventail :'sidekiq.args.include'
ou :'sidekiq.args.exclude'
sera transformée en une expression régulière. La connaissance de la prise en charge des expressions régulières Ruby peut être exploitée mais n'est pas obligatoire. Si la syntaxe des expressions régulières n'est pas utilisée, des correspondances inexactes seront effectuées et la chaîne « Fortune » correspondra à la fois à « Fortune 500 » et à « Fortune and Glory ». Pour des correspondances exactes, utilisez des expressions régulières Anchors.
# Include any argument whose string representation matches either "apple" or "banana"# The "apple" pattern will match both "green apple" and "red apple"sidekiq.args.include: - apple - banana
# Exclude any arguments that match either "grape", "orange", or "pear"sidekiq.args.exclude: - grape - orange - pear
# Exclude any argument that is a 9 digit numbersidekiq.args.exclude: - '\d{9}'
# Include anything that starts with "blue" but exclude anything that ends in "green"sidekiq.args.include: - '^blue'
sidekiq.args.exclude: - 'green$'
Résoudre les problèmes liés aux tâches Sidekiq
S'il semble que les tâches ne sont pas monitorées, vérifiez votre fichier newrelic_agent.log
généré au démarrage du travailleur. Il doit indiquer si l'agent détecte Sidekiq et communique avec le serveur. Si vous avez besoin d'assistance, notez la ligne de commande exacte que vous avez utilisée pour démarrer Sidekiq.