Skip to main content
Utilisez le mode collector pour envoyer des données à AppSignal via le Collector AppSignal. Le distributed tracing n’est pris en charge que lorsque les données sont envoyées via un collector hébergé par AppSignal. À la fin de cette page, votre application enverra ses données au collector que vous aurez choisi, et chaque service s’identifiera avec son propre nom de service. Cette page suppose que vous avez déjà suivi les instructions d’installation.

Prérequis

Le mode collector nécessite Ruby 3.1 ou une version plus récente. Sur les versions de Ruby plus anciennes, l’option collector_endpoint est ignorée. Le mode collector ne prend pas en charge JRuby. Cela dépend de la façon dont Ruby gère le forking, que JRuby traite différemment.

Installer les gems OpenTelemetry

Le mode collector envoie les données via OpenTelemetry. Le gem appsignal n’installe pas les gems OpenTelemetry. Ajoutez donc appsignal-opentelemetry à côté de la ligne gem "appsignal" déjà présente dans votre Gemfile :
Exécutez ensuite bundle install. Le gem appsignal-opentelemetry ne fait rien par lui-même. Il installe uniquement les versions des gems OpenTelemetry prises en charge par le mode collector, afin que vous n’ayez pas à les suivre vous-même. Sa version correspond à celle du gem appsignal, de sorte que appsignal-opentelemetry 5.0.0 va de pair avec appsignal 5.0.0. Si ces gems sont manquants ou si leurs versions ne sont pas prises en charge, AppSignal enregistre un avertissement au démarrage et n’entre pas en mode collector.

Déployer un collector

Vous pouvez également faire héberger un collector par AppSignal en utilisant la page « Hosted Collector » dans les paramètres de votre organisation.

Configurer le collector

Définissez l’option de configuration collector_endpoint sur l’URL de base de votre collector. Lorsque vous utilisez un collector hébergé, copiez la « Collector URL » depuis la page de paramètres « Hosted Collector ». Définissez l’option service_name pour identifier cette application dans les traces. Utilisez une valeur différente pour chaque service, par exemple web-server ou background-worker.
AppSignal pour Ruby envoie désormais ses traces, ses métriques et ses logs au collector configuré. Pour vérifier qu’AppSignal a bien chargé ces paramètres, exécutez bundle exec appsignal diagnose --no-send-report et confirmez que la section Configuration affiche les valeurs attendues pour collector_endpoint et service_name. Envoyez ensuite une requête ou exécutez un job, puis vérifiez que sa trace apparaît dans AppSignal. AppSignal construit ses traces à partir de spans OpenTelemetry lorsqu’il envoie des données à un collector. Consultez AppSignal pour Ruby et OpenTelemetry pour savoir comment décrire ces spans vous-même, et comment AppSignal fonctionne avec l’instrumentation que vous écrivez avec le SDK OpenTelemetry.

Migrer vers le mode collector

La plupart des options de configuration se comportent de la même manière en mode agent et en mode collector. En mode collector, certaines données qui étaient envoyées en mode agent comme un seul type de données sont réparties entre plusieurs types de données. Certaines options de configuration qui contrôlaient si ces données étaient envoyées et comment elles étaient filtrées ont changé : Lorsque les options du mode collector ne sont pas définies, l’option du mode agent est utilisée pour en dériver une valeur. Une application qui a configuré ces options pour le mode agent continue donc de signaler les mêmes données en mode collector. Vous pouvez définir les options du mode collector pour signaler chaque type de données différemment, par exemple pour filtrer les arguments d’un job en arrière-plan sans filtrer la charge utile d’une requête. AppSignal enregistre les valeurs à définir pour continuer à signaler les mêmes données, et appsignal diagnose les affiche comme chargées depuis derived :
Diagnose output

En-têtes de requête

request_headers liste des clés de l’environnement Rack, et seules certaines de ces clés contiennent un en-tête de requête. Le mode collector signale les deux séparément, chacune sous les noms propres à son propre type de valeur :
  • keep_request_headers liste les en-têtes de requête, en minuscules et séparés par des tirets, comme OpenTelemetry les nomme. HTTP_ACCEPT devient accept.
  • keep_request_environment liste le reste, comme Rack les nomme. QUERY_STRING reste QUERY_STRING.
La vue des traces affiche le premier dans son panneau Request headers et le second dans son panneau Environment.

Paramètres

Le mode collector signale trois types de paramètres, chacun avec sa propre option de filtrage et d’envoi :
  • La charge utile de la requête : les paramètres d’une requête HTTP entrante, comme le corps d’un formulaire.
  • Les paramètres de fonction : les arguments avec lesquels un job en arrière-plan a été appelé.
  • Les paramètres de query de la requête : la chaîne de requête analysée d’une requête HTTP entrante.
Consultez les paramètres de requête pour plus d’informations sur la manière de signaler des paramètres.