Pular para o conteúdo principal
Você pode usar tags para fornecer contexto extra sobre erros e incidentes de desempenho. As tags podem ajudar a adicionar informações que já não fazem parte de uma requisição, como dados de sessão, cabeçalhos, dados de ambiente ou parâmetros. As tags também podem ser usadas para filtrar amostras dentro de um incidente, para encontrar todos os erros de um usuário específico ou páginas lentas de um locale específico. Você pode definir tags onde a transação ou span atual estiver acessível. Recomendamos chamá-la antes que o código do seu aplicativo seja executado em uma requisição, como em um callback. Você pode ver quais tags se aplicam a uma amostra na página de incidente Error and Performance. Usando Link Templates, é possível adicionar links ao seu aplicativo com dados de tag, como o painel de administração para o usuário logado. Você pode ver isso na prática no screenshot abaixo, com as tags Link 1 e Link 2. Tag a request
🔐 Não envie Informações Pessoais Identificáveis (PII) para a AppSignal. Filtre PII (por exemplo, nomes, e-mails) e use um ID, hash ou identificador pseudonimizado no lugar.

Use Link Templates para vinculá-los de volta em sua aplicação.

Ruby

Com a gem AppSignal for Ruby, use o método helper Appsignal.add_tags para adicionar tags a amostras de erro e desempenho. Na versão 3 e anteriores da gem Ruby, use o helper Appsignal.set_tags. Você pode usar Appsignal.add_tags onde uma transação ativa estiver acessível. Recomendamos chamá-lo antes que o código do seu aplicativo seja executado na requisição, como em um before_action usando 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

Tags padrão

Você pode configurar tags que serão adicionadas a todas as transações usando a opção de configuração default_tags. Essas tags são aplicadas automaticamente a cada transação. Tags específicas de transação definidas com Appsignal.add_tags substituirão as tags padrão com a mesma chave.
Appsignal.configure do |config|
  config.default_tags = {
    "region" => "europe",
    "shard" => "shard-1"
  }
end

Limitações

Tags que não atendem a essas limitações são descartadas sem aviso.
  • A chave da tag deve ser uma String ou um Symbol.
  • O valor da tag deve ser uma String, Symbol, Integer ou Boolean (true/false).
    • Valores boolean são suportados na gem Ruby 3.11 e mais recentes.
  • O comprimento do valor da tag deve ser menor que 256 caracteres.
  • Valores de hash aninhados não são suportados para tags. Use dados personalizados em vez disso.
# Não suportado: o tipo de valor hash não é suportado
Appsignal.add_tags(
  :i18n => {
    :locale => I18n.locale,
    :default_locale => I18n.default_locale
  }
)

Elixir

Use a função Appsignal.Span.set_sample_data para fornecer contexto extra sobre erros e amostras de desempenho. Use a chave de amostra "tags" para a função adicionar tags ao span.
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
  }
)

A última chamada prevalece

O helper set_sample_data pode ser chamado várias vezes, mas apenas o último valor será retido. Quando o código abaixo é executado:
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"})
resultará nas seguintes tags sendo armazenadas:
%{
  locale: "de"
}

Definindo dados de amostra em um span

Para adicionar dados de amostra a um span assim que ele for criado, adicione um custom_on_create_fun:
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
Em seguida, adicione-o à configuração do seu app:
# config/config.exs
config :appsignal, custom_on_create_fun: &MyApp.Appsignal.custom_on_create_fun/1
O custom_on_create_fun requer AppSignal for Elixir versão 2.8.3 ou superior.

Limitações

Tags que não atendem a essas limitações são descartadas sem aviso.
  • A chave da tag deve ser uma String ou Atom.
  • O valor da tag deve ser uma String, Atom ou Integer.
  • O comprimento do valor da tag deve ser menor que 256 caracteres.
  • Valores de map aninhados não são suportados para tags. Use dados personalizados em vez disso.
# Não suportado: o tipo de valor map não é suportado
Appsignal.Span.set_sample_data(
  Appsignal.Tracer.root_span,
  "tags",
  %{
    i18n: %{
      locale: "en_GB",
      default_locale: "en_US"
    }
  }
)

Node.js

Importe a função helper setTag para adicionar tags aos spans para amostras de erro e desempenho.
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);

Limitações

Tags que não atendem a essas limitações são descartadas sem aviso.
  • A chave da tag deve ser uma String.
  • O valor da tag deve ser uma String, Number ou Boolean.
  • O comprimento do valor da tag deve ser menor que 256 caracteres.
  • Valores de objeto aninhados não são suportados para tags. Use a função helper setCustomData em vez disso.
const tracer = appsignal.tracer();
const span = tracer.currentSpan();

# Não suportado: o tipo de valor objeto não é suportado
span.set("i18n", { locale: "en_GB", default_locale: "en_US" });

Python

Importe o método helper set_tag para adicionar tags aos spans para amostras de erro e desempenho.
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)

Limitações

Tags que não atendem a essas limitações são descartadas sem aviso.
  • A chave da tag deve ser uma String.
  • O valor da tag deve ser uma String, Integer, Float ou Boolean.
  • O comprimento do valor da tag deve ser menor que 256 caracteres.
  • Valores de objeto aninhados não são suportados para tags. Use a função helper set_custom_data em vez disso.

Go

Em um app Go, para adicionar uma tag do AppSignal a um span em um trace, primeiro busque o span ativo ou crie um novo span conforme descrito em nossa página de instrumentação personalizada Go. Em seguida, defina um atributo no span usando o helper de atributo que corresponda ao tipo do valor da tag, veja também as limitações da tag abaixo. O nome do atributo do span tem o seguinte formato: appsignal.tag.<tag name>. Substitua <tag name> pelo nome da tag.
// Formato de exemplo
span.SetAttributes(attribute.String("appsignal.tag.<tag_name>", "string"))

// Tipos suportados
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}))

Limitações

Tags que não atendem a essas limitações são descartadas sem aviso.
  • A chave da tag deve ser uma String.
  • O valor da tag deve ser uma String, Integer, Float, Boolean, ou um slice desses tipos.
  • O comprimento do valor da tag deve ser menor que 256 caracteres.
  • Os valores de array são achatados em valores separados por vírgula.
  • Valores de objeto aninhados (maps) não são suportados para tags.

Java

Em um app Java, para adicionar uma tag do AppSignal a um span em um trace, primeiro busque o span ativo ou crie um novo span conforme descrito em nossa página de instrumentação personalizada Java. Em seguida, defina um atributo no span usando o método setAttribute. O nome do atributo do span tem o seguinte formato: appsignal.tag.<tag name>. Substitua <tag name> pelo nome da tag.
import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.common.AttributeKey;

// Obtém o span atual
Span span = Span.current();

// Formato de exemplo
span.setAttribute("appsignal.tag.<tag_name>", "string");

// Define tags como atributos de span
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));

Limitações

Tags que não atendem a essas limitações são descartadas sem aviso.
  • A chave da tag deve ser uma String.
  • O valor da tag deve ser uma String, Integer, Long, Double ou Boolean, ou uma lista desses valores.
  • O comprimento do valor da tag deve ser menor que 256 caracteres.
  • Os valores de array são achatados em valores separados por vírgula.
  • Valores de objeto aninhados (maps) não são suportados para tags.

PHP

Em aplicativos PHP, para adicionar uma tag do AppSignal a um span em um trace, use o método helper Appsignal::addTags().
<?php

// Adiciona tags ao span atual
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],
]);

Limitações

Tags que não atendem a essas limitações são descartadas sem aviso.
  • A chave da tag deve ser uma String.
  • O valor da tag deve ser uma String, Integer, Float ou Boolean, ou um slice desses valores.
  • O comprimento do valor da tag deve ser menor que 256 caracteres.
  • Os valores de array são achatados em valores separados por vírgula.
  • Valores de objeto aninhados (maps) não são suportados para tags.