Zum Hauptinhalt springen
AppSignal für Go kann über OpenTelemetry-Resource-Attribute konfiguriert werden. Resource-Attribute sind Attribute, die für jeden Trace gelten, der von der Anwendung über OpenTelemetry gemeldet wird. Diese Resource-Attribute sollten in Ihrer Anwendung konfiguriert werden, dort, wo Sie auch den OpenTelemetry-Exporter so konfigurieren, dass er an den AppSignal-Collector exportiert. Um die Resource-Attribute zu konfigurieren, fügen Sie Ihrem Tracer-Provider eine Resource hinzu, wie unten gezeigt.
Go
import (
	// Other imports here...

	// Import these OpenTelemetry packages
	"go.opentelemetry.io/otel"
	"go.opentelemetry.io/otel/attribute"
	"go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp"
	"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp"
	"go.opentelemetry.io/otel/exporters/otlp/otlptrace"
	"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
	"go.opentelemetry.io/otel/log/global"
	"go.opentelemetry.io/otel/propagation"
	sdklog "go.opentelemetry.io/otel/sdk/log"
	sdkmetric "go.opentelemetry.io/otel/sdk/metric"
	sdkresource "go.opentelemetry.io/otel/sdk/resource"
	sdktrace "go.opentelemetry.io/otel/sdk/trace"
)

func initTracer() func(context.Context) error {
	// OpenTelemetry config setup here

	resource, err := sdkresource.Merge(
		sdkresource.Default(),
		sdkresource.NewSchemaless(
			resource.WithAttributes(attribute.String("appsignal.config.name", "My app name")),

			// And other resource attributes
		),
	)

	tracerProvider := sdktrace.NewTracerProvider(
		// Including other `.With...` function calls
		sdktrace.WithResource(resource),
	)

	// Followed by the rest of the OpenTelemetry config
}

Verfügbare Optionen

environment

FeldWert
Resource-Attribut-Schlüsselappsignal.config.environment
Erforderlichja
TypString
Standardwertnil (Standardmäßig nicht gesetzt)

Beschreibung

Die Umgebung der App, die an AppSignal gemeldet werden soll.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.String("appsignal.config.environment", "production")),

		// And other resource attributes
	),
)
Hinweis: Das Ändern des Namens oder der Umgebung einer bestehenden App erstellt eine neue App auf AppSignal.com.

host.name

FeldWert
Resource-Attribut-Schlüsselhost.name
Erforderlichja
TypString
Standardwertvom System erkannt

Beschreibung

Das Resource-Attribut host.name hilft AppSignal, verschiedene Hosts für Traces zu erkennen und die Traces automatisch mit dem Hostnamen zu kennzeichnen.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.String("host.name", "my-hostname")),

		// And other resource attributes
	),
)

language_integration

FeldWert
Resource-Attribut-Schlüsselappsignal.config.language_integration
Erforderlichja
TypString
Standardwertnil (Standardmäßig nicht gesetzt)

Beschreibung

AppSignal verwendet das Resource-Attribut language_integration, um die Sprache eines Trace zu erkennen und Exception-Backtraces korrekt zu parsen. Um diese Option zu setzen, geben Sie den Sprachnamen in Kleinschreibung an: go.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.String("appsignal.config.language_integration", "go")),

		// And other resource attributes
	),
)

name

FeldWert
Resource-Attribut-Schlüsselappsignal.config.name
Erforderlichja
TypString
Standardwertnil (Standardmäßig nicht gesetzt)

Beschreibung

Name Ihrer Anwendung, wie er auf AppSignal.com angezeigt werden soll.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.String("appsignal.config.name", "My awesome app")),

		// And other resource attributes
	),
)
Hinweis: Das Ändern des Namens oder der Umgebung einer bestehenden App erstellt eine neue App auf AppSignal.com.

push_api_key

FeldWert
Resource-Attribut-Schlüsselappsignal.config.push_api_key
Erforderlichja
TypString
Standardwertnil (Standardmäßig nicht gesetzt)

Beschreibung

Der Authentifizierungsschlüssel auf Organisationsebene zur Authentifizierung bei unserer Push-API. Lesen Sie mehr über den AppSignal Push-API-Schlüssel.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.String("appsignal.config.push_api_key", "00000000-0000-0000-0000-000000000000")),

		// And other resource attributes
	),
)

revision

FeldWert
Resource-Attribut-Schlüsselappsignal.config.revision
Erforderlichja
TypString
Standardwertnil (Standardmäßig nicht gesetzt)

Beschreibung

Setzen Sie die App-Revision, um die aktuell laufende Version Ihrer App zu melden. AppSignal erstellt einen Deploy-Marker, wenn sich dieser Wert ändert, und versieht alle eingehenden Daten mit der aktuellen Revision. Lesen Sie mehr über Deploy-Marker im Thema Deploy-Marker.
Go
import (
	"os/exec"

	// And other imports
)

var revision string
cmd := exec.Command("git", "rev-parse", "--short", "HEAD")
output, err := cmd.Output()
if err != nil {
	revision = "unknown"
} else {
	revision = strings.TrimSpace(string(output))
}

resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.String("appsignal.config.revision", revision)),

		// And other resource attributes
	),
)

service.name

FeldWert
Resource-Attribut-Schlüsselservice.name
Erforderlichja
TypString
Standardwertnil (Standardmäßig nicht gesetzt)

Beschreibung

Das Resource-Attribut service.name hilft AppSignal, verschiedene Services für Traces zu erkennen und die Traces automatisch basierend auf dem Service-Namen in einem Namespace zu gruppieren. Wählen Sie einen Namen, der zu Ihrer Anwendung passt, wie „Web server”, „Background worker”, „Email service”, „Authentication service” usw.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.String("service.name", "My service name")),

		// And other resource attributes
	),
)

app_path

FeldWert
Resource-Attribut-Schlüsselappsignal.config.app_path
Erforderlichnein
TypString
Standardwertnil (Standardmäßig nicht gesetzt)

Beschreibung

Der Speicherort der App im Dateisystem des Hosts. Das Resource-Attribut app_path hilft AppSignal beim Aufräumen von Backtraces, indem es den absoluten App-Pfad aus den Backtrace-Zeilen entfernt. So werden nur Pfade innerhalb des Kontexts des Projektverzeichnisses angezeigt. Dies macht unsere Funktion Backtrace-Links möglich.
Go
import (
	"os"

	// And other imports
)

resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.String("appsignal.config.app_path", os.Getenv("PWD"))),

		// And other resource attributes
	),
)

filter_attributes

FeldWert
Resource-Attribut-Schlüsselappsignal.config.filter_attributes
Erforderlichnein
Typlist(String)
Standardwert[]

Beschreibung

Das Resource-Attribut filter_attributes ermöglicht es Ihnen, bestimmte Attribute davon auszuschließen, an AppSignal gemeldet zu werden. Dies kann nützlich sein, um sensible oder nicht relevante Informationen davon auszuschließen, gemeldet zu werden. Wenn ein Attribut auf diese Weise herausgefiltert wird, erscheint es überhaupt nicht in der Oberfläche.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.StringSlice("appsignal.config.filter_attributes", []string{"my.secret.attribute", "some.opentelemetry.attribute"})),

		// And other resource attributes
	),
)

filter_function_parameters

FeldWert
Resource-Attribut-Schlüsselappsignal.config.filter_function_parameters
Erforderlichnein
Typlist(String)
Standardwert[]

Beschreibung

Dieses Resource-Attribut ermöglicht es Ihnen, beliebige Funktionsparameter herauszufiltern, die im Span-Attribut appsignal.function.parameters gesetzt sind. Im folgenden Beispiel werden die Werte für die in der Konfigurationsoption filter_function_parameters aufgeführten Schlüssel durch [FILTERED] ersetzt.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.StringSlice("appsignal.config.filter_function_parameters", []string{"api_token", "secret"})),

		// And other resource attributes
	),
)

filter_request_payload

FeldWert
Resource-Attribut-Schlüsselappsignal.config.filter_request_payload
Erforderlichnein
Typlist(String)
Standardwert[]

Beschreibung

Dieses Resource-Attribut ermöglicht es Ihnen, beliebige Request-Payload-Daten herauszufiltern, die im Span-Attribut appsignal.request.payload gesetzt sind. Im folgenden Beispiel werden die Werte für die in der Konfigurationsoption filter_request_payload aufgeführten Schlüssel durch [FILTERED] ersetzt. Lesen Sie mehr über die Filterung von Request-Query-Parametern.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.StringSlice("appsignal.config.filter_request_payload", []string{"password", "cvv"})),

		// And other resource attributes
	),
)

filter_request_query_parameters

FeldWert
Resource-Attribut-Schlüsselappsignal.config.filter_request_query_parameters
Erforderlichnein
Typlist(String)
Standardwert[]

Beschreibung

Dieses Resource-Attribut ermöglicht es Ihnen, beliebige Request-Query-Parameter herauszufiltern, die im Span-Attribut appsignal.request.query_parameters gesetzt sind. Im folgenden Beispiel werden die Werte für die in der Konfigurationsoption filter_request_query_parameters aufgeführten Schlüssel durch [FILTERED] ersetzt. Lesen Sie mehr über die Filterung von Request-Query-Parametern.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.StringSlice("appsignal.config.filter_request_query_parameters", []string{"password", "cvv"})),

		// And other resource attributes
	),
)

filter_request_session_data

FeldWert
Resource-Attribut-Schlüsselappsignal.config.filter_request_session_data
Erforderlichnein
Typlist(String)
Standardwert[]

Beschreibung

Das Resource-Attribut filter_request_session_data ermöglicht es Ihnen, beliebige Request-Sitzungsdaten herauszufiltern, die im Span-Attribut appsignal.request.session_data gesetzt sind. Im folgenden Beispiel werden die Werte für die in der Konfigurationsoption filter_request_session_data aufgeführten Schlüssel durch [FILTERED] ersetzt. Lesen Sie mehr über die Filterung von Request-Sitzungsdaten.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.StringSlice("appsignal.config.filter_session_data", []string{"password", "cvv"})),

		// And other resource attributes
	),
)

ignore_actions

FeldWert
Resource-Attribut-Schlüsselappsignal.config.ignore_actions
Erforderlichnein
Typlist(String)
Standardwert[]

Beschreibung

Mit dieser Konfigurationsoption können Sie eine Liste von Aktionen angeben, die von AppSignal ignoriert werden. Alles, was passiert, einschließlich Exceptions, wird nicht an AppSignal übertragen. Dies kann nützlich sein, um Health-Check-Endpunkte oder andere Aktionen zu ignorieren, die Sie nicht überwachen möchten. Lesen Sie mehr über das Ignorieren von Aktionen.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.StringSlice("appsignal.config.ignore_actions", []string{"GET /heath_check", "POST /ping"})),

		// And other resource attributes
	),
)

ignore_errors

FeldWert
Resource-Attribut-Schlüsselappsignal.config.ignore_errors
Erforderlichnein
Typlist(String)
Standardwert[]

Beschreibung

Diese Konfigurationsoption ermöglicht es Ihnen, bestimmte Fehler davon auszuschließen, an AppSignal gemeldet zu werden. Dies kann nützlich sein, um erwartete Fehler oder Fehler zu ignorieren, die nicht behoben werden können. Lesen Sie mehr über das Ignorieren von Fehlern.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.StringSlice("appsignal.config.ignore_errors", []string{"MyCustomError", "ExpectedError"})),

		// And other resource attributes
	),
)

ignore_logs

FeldWert
Resource-Attribut-Schlüsselappsignal.config.ignore_logs
Erforderlichnein
Typlist(String)
Standardwert[]

Beschreibung

Liste von Lognachrichten, die ignoriert werden. Jede Lognachricht, die eines der Elemente der Liste enthält, wird nicht an AppSignal übertragen. Eine kleine Teilmenge der Regex-Syntax wird unterstützt; lesen Sie mehr darüber in unserem Leitfaden Logs ignorieren.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.StringSlice("appsignal.config.ignore_logs", []string{"^done$", "Task .* completed successfully"})),

		// And other resource attributes
	),
)

ignore_namespaces

FeldWert
Resource-Attribut-Schlüsselappsignal.config.ignore_namespaces
Erforderlichnein
Typlist(String)
Standardwert[]

Beschreibung

Diese Konfigurationsoption ermöglicht es Ihnen, bestimmte Namespaces davon auszuschließen, an AppSignal gemeldet zu werden. Dies kann nützlich sein, um bestimmte Teile Ihrer Anwendung von der Überwachung auszuschließen. Lesen Sie mehr über Namespaces.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.StringSlice("appsignal.config.ignore_namespaces", []string{"admin", "secret"})),

		// And other resource attributes
	),
)

request_headers

FeldWert
Resource-Attribut-Schlüsselappsignal.config.request_headers
Erforderlichnein
Typlist(String)
Standardwert["accept", "accept-charset", "accept-encoding", "accept-language", "cache-control", "connection", "content-length", "host", "range"]

Beschreibung

Konfigurieren Sie, welche Request-Header einbezogen werden sollen, wenn eine Anfrage an einen HTTP-Server gestellt wird. Diese Option ist eine Allowlist. Es werden nur die konfigurierten Header einbezogen. Wenn die Liste leer ist, werden keine Header einbezogen. Die Request-Header werden aus den OpenTelemetry-Span-Attributen http.request.header.<key> gelesen, wobei <key> der normalisierte Header-Name (Kleinschreibung) ist. Um keine Header zu setzen, setzen Sie den Resource-Attributwert explizit auf ein leeres Array.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		// Only send these specific headers
		resource.WithAttributes(attribute.StringSlice("appsignal.config.request_headers", []string{"accept", "request_method", "content_length"})),

		// Do not send any headers
		// resource.WithAttributes(attribute.StringSlice("appsignal.config.request_headers", []string{})),

		// And other resource attributes
	),
)

response_headers

FeldWert
Resource-Attribut-Schlüsselappsignal.config.response_headers
Erforderlichnein
Typlist(String)
Standardwert["accept", "accept-charset", "accept-encoding", "accept-language", "cache-control", "connection", "content-length", "host", "range"]

Beschreibung

Konfigurieren Sie, welche Response-Header einbezogen werden sollen, wenn eine Anfrage von einem HTTP-Client gestellt wird. Diese Option ist eine Allowlist. Es werden nur die konfigurierten Header einbezogen. Wenn die Liste leer ist, werden keine Header einbezogen. Die Response-Header werden aus den OpenTelemetry-Span-Attributen http.response.header.<key> gelesen, wobei <key> der normalisierte Header-Name (Kleinschreibung) ist. Um keine Header zu setzen, setzen Sie den Resource-Attributwert explizit auf ein leeres Array.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		// Only send these specific headers
		resource.WithAttributes(attribute.StringSlice("appsignal.config.response_headers", []string{"accept", "request_method", "content_length"})),

		// Do not send any headers
		// resource.WithAttributes(attribute.StringSlice("appsignal.config.response_headers", []string{})),

		// And other resource attributes
	),
)

send_function_parameters

FeldWert
Resource-Attribut-Schlüsselappsignal.config.send_function_parameters
Erforderlichnein
TypBoolean (true / false)
Standardwerttrue

Beschreibung

Konfigurieren Sie, ob Funktionsparameter in Traces einbezogen werden sollen. Wenn auf false gesetzt, werden keine solchen Daten an unsere Server gesendet. Diese Werte werden mit dem Span-Attribut appsignal.function.parameters gesetzt.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.Bool("appsignal.config.send_function_parameters", false)),

		// And other resource attributes
	),
)

send_request_payload

FeldWert
Resource-Attribut-Schlüsselappsignal.config.send_request_payload
Erforderlichnein
TypBoolean (true / false)
Standardwerttrue

Beschreibung

Konfigurieren Sie, ob Request-Payload-Daten in Traces gesendet werden sollen. Wenn auf false gesetzt, werden keine solchen Daten an unsere Server gesendet. Diese Werte werden mit dem Span-Attribut appsignal.request.payload gesetzt. Weitere Informationen finden Sie unter Filterung von Request-Payloads.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.Bool("appsignal.config.send_request_payload", false)),

		// And other resource attributes
	),
)

send_request_query_parameters

FeldWert
Resource-Attribut-Schlüsselappsignal.config.send_request_query_parameters
Erforderlichnein
TypBoolean (true / false)
Standardwerttrue

Beschreibung

Konfigurieren Sie, ob Request-Query-Parameter in Traces einbezogen werden sollen. Wenn auf false gesetzt, werden keine solchen Daten an unsere Server gesendet. Diese Werte werden mit dem Span-Attribut appsignal.request.query_parameters gesetzt. Weitere Informationen finden Sie unter Filterung von Request-Parametern.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.Bool("appsignal.config.send_request_query_parameters", false)),

		// And other resource attributes
	),
)

send_request_session_data

FeldWert
Resource-Attribut-Schlüsselappsignal.config.send_request_session_data
Erforderlichnein
TypBoolean (true / false)
Standardwerttrue

Beschreibung

Konfigurieren Sie, ob Request-Sitzungsdaten in Traces gesendet werden sollen. Wenn auf false gesetzt, werden keine solchen Daten an unsere Server gesendet. Diese Werte werden mit dem Span-Attribut appsignal.request.session_data gesetzt. Weitere Informationen finden Sie unter Filterung von Request-Sitzungsdaten.
Go
resource, err := sdkresource.Merge(
	sdkresource.Default(),
	sdkresource.NewSchemaless(
		resource.WithAttributes(attribute.Bool("appsignal.config.send_session_data", false)),

		// And other resource attributes
	),
)