Skip to main content
Verwenden Sie den Collector-Modus, um Daten über den AppSignal Collector an AppSignal zu senden. Distributed tracing wird nur unterstützt, wenn Sie Daten an einen von AppSignal gehosteten Collector senden. Am Ende dieser Seite meldet sich Ihre Anwendung bei dem von Ihnen gewählten Collector, und jeder Service identifiziert sich mit seinem eigenen Service-Namen. Diese Seite setzt voraus, dass Sie bereits die Installationsanleitung befolgt haben.

Voraussetzungen

Der Collector-Modus erfordert Ruby 3.1 oder neuer. Bei älteren Ruby-Versionen wird die Option collector_endpoint ignoriert. Der Collector-Modus unterstützt JRuby nicht. Das liegt daran, wie Ruby mit Forking umgeht, was JRuby anders handhabt.

Installation der OpenTelemetry-Gems

Der Collector-Modus sendet Daten über OpenTelemetry. Das appsignal-Gem installiert die OpenTelemetry-Gems nicht selbst. Fügen Sie deshalb appsignal-opentelemetry neben der bereits vorhandenen Zeile gem "appsignal" in Ihrem Gemfile hinzu:
Führen Sie anschließend bundle install aus. Das appsignal-opentelemetry-Gem macht für sich genommen nichts. Es installiert lediglich die OpenTelemetry-Gem-Versionen, die der Collector-Modus unterstützt, sodass Sie diese nicht selbst verfolgen müssen. Seine Version stimmt mit der des appsignal-Gems überein, sodass appsignal-opentelemetry 5.0.0 zu appsignal 5.0.0 passt. Fehlen diese Gems oder werden nicht unterstützte Versionen verwendet, protokolliert AppSignal beim Start eine Warnung und wechselt nicht in den Collector-Modus.

Einen Collector bereitstellen

Sie können AppSignal einen Collector für Sie hosten lassen, indem Sie die Seite “Hosted Collector” in den Einstellungen Ihrer Organisation verwenden.

Den Collector konfigurieren

Setzen Sie die Konfigurationsoption collector_endpoint auf die Basis-URL Ihres Collectors. Bei Verwendung eines gehosteten Collectors kopieren Sie die “Collector URL” von der Einstellungsseite “Hosted Collector”. Setzen Sie die Option service_name, um diese Anwendung in Traces zu identifizieren. Verwenden Sie für jeden Service einen anderen Wert, etwa web-server oder background-worker.
AppSignal für Ruby sendet seine Traces, Metriken und Logs nun an den konfigurierten Collector. Um zu überprüfen, ob AppSignal diese Einstellungen geladen hat, führen Sie bundle exec appsignal diagnose --no-send-report aus und prüfen Sie, ob der Abschnitt Configuration die erwarteten Werte für collector_endpoint und service_name auflistet. Senden Sie anschließend eine Anfrage oder führen Sie einen Job aus und prüfen Sie, ob der zugehörige Trace in AppSignal erscheint. AppSignal baut seine Traces beim Melden an einen Collector aus OpenTelemetry-Spans auf. Lesen Sie AppSignal für Ruby und OpenTelemetry, um zu erfahren, wie Sie diese Spans selbst beschreiben können und wie AppSignal mit einer Instrumentierung zusammenarbeitet, die Sie mit dem OpenTelemetry SDK schreiben.

Migration zum Collector-Modus

Die meisten Konfigurationsoptionen verhalten sich im Agent-Modus und im Collector-Modus gleich. Im Collector-Modus werden manche Daten, die im Agent-Modus als eine einzige Art von Daten gesendet wurden, auf mehrere Datentypen aufgeteilt. Einige Konfigurationsoptionen, die steuerten, ob diese Daten gesendet und wie sie gefiltert wurden, haben sich geändert: Wenn die Optionen für den Collector-Modus nicht gesetzt sind, wird ihr Wert aus der Option für den Agent-Modus abgeleitet. Eine Anwendung, die diese Konfigurationsoptionen für den Agent-Modus konfiguriert hat, meldet im Collector-Modus also weiterhin dieselben Daten. Sie können die Optionen für den Collector-Modus setzen, um jede Art von Daten unterschiedlich zu melden, etwa um die Argumente eines Background-Jobs zu filtern, aber nicht die Payload einer Anfrage. AppSignal protokolliert, welche Werte Sie setzen müssen, um weiterhin dieselben Daten zu melden, und appsignal diagnose zeigt sie als aus derived geladen an:
Diagnose output

Request-Header

request_headers listet Rack-Umgebung-Schlüssel auf, von denen nur einige tatsächlich einen Request-Header enthalten. Der Collector-Modus meldet die beiden getrennt, jeweils unter den Namen, die für die jeweilige Art von Wert üblich sind:
  • keep_request_headers listet Request-Header auf, klein geschrieben und mit Bindestrichen getrennt, so wie OpenTelemetry sie benennt. HTTP_ACCEPT wird zu accept.
  • keep_request_environment listet den Rest auf, so wie Rack sie benennt. QUERY_STRING bleibt QUERY_STRING.
Die Trace-Ansicht zeigt den ersten in ihrem Panel Request headers und den zweiten in ihrem Panel Environment.

Parameter

Der Collector-Modus meldet drei Arten von Parametern, jede mit eigener Filter- und Sendeoption:
  • Die Request-Payload: die Parameter einer eingehenden HTTP-Anfrage, etwa ein Formularinhalt.
  • Die Funktionsparameter: die Argumente, mit denen ein Background-Job aufgerufen wurde.
  • Die Request-Query-Parameter: der ausgewertete Query-String einer eingehenden HTTP-Anfrage.
Lesen Sie Request-Parameter für weitere Informationen dazu, wie Sie Parameter melden.