Zum Hauptinhalt springen
Sie können Tagging verwenden, um zusätzlichen Kontext zu Fehlern und Performance-Vorfällen bereitzustellen. Tagging kann helfen, Informationen hinzuzufügen, die nicht bereits Teil einer Anfrage sind, wie z. B. Session-Daten, Header, Umgebungsdaten oder Parameter. Tags können auch verwendet werden, um Samples innerhalb eines Vorfalls zu filtern, um alle Fehler für einen bestimmten Benutzer oder langsame Seiten für ein bestimmtes Locale zu finden. Sie können Tags überall dort setzen, wo die aktuelle Transaktion oder der Span zugänglich ist. Wir empfehlen, es vor dem Ausführen Ihres Anwendungscodes in einer Anfrage aufzurufen, z. B. in einem Callback. Sie können sehen, welche Tags auf ein Sample angewendet werden, auf der Error and Performance-Vorfallsseite. Mit Link-Templates ist es möglich, Links zu Ihrer Anwendung mit Tag-Daten hinzuzufügen, z. B. das Admin-Panel für den angemeldeten Benutzer. Sie können dies in der Praxis im untenstehenden Screenshot mit den Tags Link 1 und Link 2 sehen. Tag a request
🔐 Senden Sie keine personenbezogenen Daten (Personal Identifiable Information, PII) an AppSignal. Filtern Sie PII (z. B. Namen, E-Mail-Adressen) und verwenden Sie stattdessen eine ID, einen Hash oder einen pseudonymisierten Bezeichner.

Verwenden Sie Link Templates, um sie in Ihrer Anwendung zurückzuverknüpfen.

Ruby

Mit dem AppSignal-for-Ruby-Gem verwenden Sie die Hilfsmethoden Appsignal.add_tags, um Tags zu Fehler- und Performance-Samples hinzuzufügen. In Ruby-Gem-Version 3 und älter verwenden Sie den Appsignal.set_tags-Helfer. Sie können Appsignal.add_tags überall dort verwenden, wo eine aktive Transaktion zugänglich ist. Wir empfehlen, es vor dem Ausführen Ihres Anwendungscodes in der Anfrage aufzurufen, z. B. in einem before_action mit Rails.
before_action do
  Appsignal.add_tags(
    :user_id => current_user.id,
    :stripe_customer_id => stripe_customer_id,
    :locale => I18n.locale,
    :default_locale => I18n.default_locale
  )
end

Standard-Tags

Sie können Tags konfigurieren, die zu allen Transaktionen hinzugefügt werden, indem Sie die default_tags-Konfigurationsoption verwenden. Diese Tags werden automatisch auf jede Transaktion angewendet. Transaktionsspezifische Tags, die mit Appsignal.add_tags gesetzt werden, überschreiben Standard-Tags mit demselben Schlüssel.
Appsignal.configure do |config|
  config.default_tags = {
    "region" => "europe",
    "shard" => "shard-1"
  }
end

Einschränkungen

Tags, die diese Einschränkungen nicht erfüllen, werden ohne Warnung verworfen.
  • Der Tag-Schlüssel muss ein String oder ein Symbol sein.
  • Der getaggte Wert muss ein String, ein Symbol, ein Integer oder ein Boolean (true/false) sein.
    • Boolean-Werte werden in Ruby-Gem 3.11 und neuer unterstützt.
  • Die Länge des Tag-Werts muss weniger als 256 Zeichen betragen.
  • Verschachtelte Hash-Werte werden für Tags nicht unterstützt, bitte verwenden Sie stattdessen benutzerdefinierte Daten.
# Nicht unterstützt: Hash-Werttyp wird nicht unterstützt
Appsignal.add_tags(
  :i18n => {
    :locale => I18n.locale,
    :default_locale => I18n.default_locale
  }
)

Elixir

Verwenden Sie die Funktion Appsignal.Span.set_sample_data, um zusätzlichen Kontext zu Fehler- und Performance-Samples bereitzustellen. Verwenden Sie den Sample-Schlüssel "tags" für die Funktion, um dem Span Tags hinzuzufügen.
Appsignal.Span.set_sample_data(
  Appsignal.Tracer.root_span,
  "tags",
  %{
    locale: "en",
    user_id: user_id,
    stripe_customer_id: stripe_customer_id,
    locale: locale,
    default_locale: default_locale
  }
)

Letzter Aufruf ist maßgebend

Der set_sample_data-Helfer kann mehrmals aufgerufen werden, aber nur der letzte Wert wird beibehalten. Wenn der untenstehende Code ausgeführt wird:
Appsignal.Span.set_sample_data(Appsignal.Tracer.root_span, "tags", %{locale: "en"})
Appsignal.Span.set_sample_data(Appsignal.Tracer.root_span, "tags", %{user: "bob"})
Appsignal.Span.set_sample_data(Appsignal.Tracer.root_span, "tags", %{locale: "de"})
werden die folgenden Tags gespeichert:
%{
  locale: "de"
}

Sample-Daten an einem Span setzen

Um Sample-Daten an einem Span hinzuzufügen, sobald er erstellt wird, fügen Sie ein custom_on_create_fun hinzu:
defmodule MyApp.Appsignal do
  def custom_on_create_fun(_span) do
    Appsignal.Span.set_sample_data(Appsignal.Tracer.root_span, "tags", %{"locale": "en"})
  end
end
Fügen Sie es dann zur Konfiguration Ihrer App hinzu:
# config/config.exs
config :appsignal, custom_on_create_fun: &MyApp.Appsignal.custom_on_create_fun/1
Das custom_on_create_fun erfordert AppSignal for Elixir Version 2.8.3 oder höher.

Einschränkungen

Tags, die diese Einschränkungen nicht erfüllen, werden ohne Warnung verworfen.
  • Der Tag-Schlüssel muss ein String oder Atom sein.
  • Der getaggte Wert muss ein String, Atom oder Integer sein.
  • Die Länge des Tag-Werts muss weniger als 256 Zeichen betragen.
  • Verschachtelte Map-Werte werden für Tags nicht unterstützt, bitte verwenden Sie stattdessen benutzerdefinierte Daten.
# Nicht unterstützt: Map-Werttyp wird nicht unterstützt
Appsignal.Span.set_sample_data(
  Appsignal.Tracer.root_span,
  "tags",
  %{
    i18n: %{
      locale: "en_GB",
      default_locale: "en_US"
    }
  }
)

Node.js

Importieren Sie die Hilfsfunktion setTag, um Tags zu Spans für Fehler- und Performance-Samples hinzuzufügen.
import { setTag } from "@appsignal/nodejs";

setTag("user_id", user_id);
setTag("stripe_customer_id", stripe_customer_id);
setTag("locale", locale);
setTag("default_locale", default_locale);

Einschränkungen

Tags, die diese Einschränkungen nicht erfüllen, werden ohne Warnung verworfen.
  • Der Tag-Schlüssel muss ein String sein.
  • Der getaggte Wert muss ein String, Number oder Boolean sein.
  • Die Länge des Tag-Werts muss weniger als 256 Zeichen betragen.
  • Verschachtelte Objektwerte werden für Tags nicht unterstützt, bitte verwenden Sie stattdessen die Hilfsfunktion setCustomData.
const tracer = appsignal.tracer();
const span = tracer.currentSpan();

# Nicht unterstützt: Objekt-Werttyp wird nicht unterstützt
span.set("i18n", { locale: "en_GB", default_locale: "en_US" });

Python

Importieren Sie die Hilfsmethode set_tag, um Tags zu Spans für Fehler- und Performance-Samples hinzuzufügen.
from appsignal import set_tag

set_tag("user_id", user_id)
set_tag("stripe_customer_id", stripe_customer_id)
set_tag("locale", locale)
set_tag("default_locale", default_locale)

Einschränkungen

Tags, die diese Einschränkungen nicht erfüllen, werden ohne Warnung verworfen.
  • Der Tag-Schlüssel muss ein String sein.
  • Der getaggte Wert muss ein String, Integer, Float oder Boolean sein.
  • Die Länge des Tag-Werts muss weniger als 256 Zeichen betragen.
  • Verschachtelte Objektwerte werden für Tags nicht unterstützt, bitte verwenden Sie stattdessen die Hilfsfunktion set_custom_data.

Go

Um in einer Go-App ein AppSignal-Tag zu einem Span in einem Trace hinzuzufügen, rufen Sie zuerst den aktiven Span ab oder erstellen einen neuen Span, wie auf unserer Seite zur benutzerdefinierten Go-Instrumentierung beschrieben. Setzen Sie dann ein Attribut am Span mit dem Attribut-Helper, der dem Typ des Tag-Werts entspricht, siehe auch die Tag-Einschränkungen unten. Der Span-Attribut-Name hat das folgende Format: appsignal.tag.<tag name>. Ersetzen Sie <tag name> durch den Namen des Tags.
// Beispielformat
span.SetAttributes(attribute.String("appsignal.tag.<tag_name>", "string"))

// Unterstützte Typen
span.SetAttributes(attribute.String("appsignal.tag.my_tag_string", "tag value"))
span.SetAttributes(attribute.StringSlice("appsignal.tag.my_tag_int64", []string{"abc", "def"}))
span.SetAttributes(attribute.Bool("appsignal.tag.my_tag_bool_true", true))
span.SetAttributes(attribute.Bool("appsignal.tag.my_tag_bool_false", false))
span.SetAttributes(attribute.BoolSlice("appsignal.tag.my_tag_bool_slice", []bool{true, false}))
span.SetAttributes(attribute.Float64("appsignal.tag.my_tag_float64", 12.34))
span.SetAttributes(attribute.Float64Slice("appsignal.tag.my_tag_float64_slice", []float64{12.34, 56.78}))
span.SetAttributes(attribute.Int("appsignal.tag.my_tag_int", 1234))
span.SetAttributes(attribute.IntSlice("appsignal.tag.my_tag_int", []int{1234, 5678}))
span.SetAttributes(attribute.Int64("appsignal.tag.my_tag_int64", 1234))
span.SetAttributes(attribute.Int64Slice("appsignal.tag.my_tag_int64_slice", []int64{1234, 5678}))

Einschränkungen

Tags, die diese Einschränkungen nicht erfüllen, werden ohne Warnung verworfen.
  • Der Tag-Schlüssel muss ein String sein.
  • Der getaggte Wert muss ein String, Integer, Float, Boolean oder ein Slice dieser Typen sein.
  • Die Länge des Tag-Werts muss weniger als 256 Zeichen betragen.
  • Array-Werte werden zu durch Kommas getrennten Werten abgeflacht.
  • Verschachtelte Objektwerte (Maps) werden für Tags nicht unterstützt.

Java

Um in einer Java-App ein AppSignal-Tag zu einem Span in einem Trace hinzuzufügen, rufen Sie zuerst den aktiven Span ab oder erstellen einen neuen Span, wie auf unserer Seite zur benutzerdefinierten Java-Instrumentierung beschrieben. Setzen Sie dann ein Attribut am Span mit der setAttribute-Methode. Der Span-Attribut-Name hat das folgende Format: appsignal.tag.<tag name>. Ersetzen Sie <tag name> durch den Namen des Tags.
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.common.AttributeKey;

// Den aktuellen Span abrufen
Span span = Span.current();

// Beispielformat
span.setAttribute("appsignal.tag.<tag_name>", "string");

// Tags als Span-Attribute setzen
span.setAttribute("appsignal.tag.my_tag_string", "tag value");
span.setAttribute(AttributeKey.stringArrayKey("appsignal.tag.my_tag_string_array"), Arrays.asList("abc", "def"));
span.setAttribute("appsignal.tag.my_tag_bool_true", true);
span.setAttribute("appsignal.tag.my_tag_bool_false", false);
span.setAttribute(AttributeKey.booleanArrayKey("appsignal.tag.my_tag_bool_array"), Arrays.asList(true, false));
span.setAttribute("appsignal.tag.my_tag_float64", 12.34);
span.setAttribute(AttributeKey.doubleArrayKey("appsignal.tag.my_tag_float64_array"), Arrays.asList(12.34, 56.78));
span.setAttribute("appsignal.tag.my_tag_int", 1234);
span.setAttribute(AttributeKey.longArrayKey("appsignal.tag.my_tag_int_array"), Arrays.asList(1234L, 5678L));
span.setAttribute("appsignal.tag.my_tag_int64", 1234);
span.setAttribute(AttributeKey.longArrayKey("appsignal.tag.my_tag_int64_array"), Arrays.asList(1234L, 5678L));

Einschränkungen

Tags, die diese Einschränkungen nicht erfüllen, werden ohne Warnung verworfen.
  • Der Tag-Schlüssel muss ein String sein.
  • Der getaggte Wert muss ein String, Integer, Long, Double oder Boolean oder eine Liste dieser Werte sein.
  • Die Länge des Tag-Werts muss weniger als 256 Zeichen betragen.
  • Array-Werte werden zu durch Kommas getrennten Werten abgeflacht.
  • Verschachtelte Objektwerte (Maps) werden für Tags nicht unterstützt.

PHP

Um in PHP-Anwendungen ein AppSignal-Tag zu einem Span in einem Trace hinzuzufügen, verwenden Sie die Hilfsmethode Appsignal::addTags().
<?php

// Tags zum aktuellen Span hinzufügen
Appsignal::addTags([
    'my_tag_string' => 'tag value',
    'my_tag_string_slice' => ['abc', 'def'],
    'my_tag_bool_true' => true,
    'my_tag_bool_false' => false,
    'my_tag_bool_slice' => [true, false],
    'my_tag_float64' => 12.34,
    'my_tag_float64_slice' => [12.34, 56.78],
    'my_tag_int' => 1234,
    'my_tag_int_slice' => [1234, 5678],
    'my_tag_int64' => 1234,
    'my_tag_int64_slice' => [1234, 5678],
]);

Einschränkungen

Tags, die diese Einschränkungen nicht erfüllen, werden ohne Warnung verworfen.
  • Der Tag-Schlüssel muss ein String sein.
  • Der getaggte Wert muss ein String, Integer, Float oder Boolean oder ein Slice dieser Werte sein.
  • Die Länge des Tag-Werts muss weniger als 256 Zeichen betragen.
  • Array-Werte werden zu durch Kommas getrennten Werten abgeflacht.
  • Verschachtelte Objektwerte (Maps) werden für Tags nicht unterstützt.