Voraussetzungen
Der Collector-Modus erfordert Ruby 3.1 oder neuer. Bei älteren Ruby-Versionen wird die Optioncollector_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. Dasappsignal-Gem installiert die OpenTelemetry-Gems nicht selbst. Fügen Sie deshalb appsignal-opentelemetry neben der bereits vorhandenen Zeile gem "appsignal" in Ihrem Gemfile hinzu:
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 Konfigurationsoptioncollector_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.
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_headerslistet Request-Header auf, klein geschrieben und mit Bindestrichen getrennt, so wie OpenTelemetry sie benennt.HTTP_ACCEPTwird zuaccept.keep_request_environmentlistet den Rest auf, so wie Rack sie benennt.QUERY_STRINGbleibtQUERY_STRING.
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.