Pular para o conteúdo principal
O AppSignal pode ser configurado por meio de atributos de recurso do OpenTelemetry. Nesta página vamos descrever como configurar atributos de recurso e quais atributos podem ser definidos.

Configurando atributos de recurso do OpenTelemetry

Você pode configurar o OpenTelemetry para enviar dados ao AppSignal usando atributos de recurso. Atributos de recurso são atributos que se aplicam a cada trace reportado pela aplicação usando OpenTelemetry. Você pode configurar atributos de recurso no seu arquivo de configuração do OpenTelemetry; é também onde você precisa configurar o exporter do OpenTelemetry para enviar dados ao AppSignal collector.
import (
	// Outros imports ....
	"go.opentelemetry.io/otel/sdk/resource"
	semconv "go.opentelemetry.io/otel/semconv/v1.27.0"
	sdktrace "go.opentelemetry.io/otel/sdk/trace"
)

res := resource.NewSchemaless(
	// Adicione atributos de recurso aqui
	semconv.ServiceNameKey.String("My service name"),
	resource.WithAttributes(attribute.String("appsignal.config.name", "My app name")),
)

tp := sdktrace.NewTracerProvider(
	// Outras chamadas .With...
	sdktrace.WithResource(res),
)

Nome do app

  • Nome do atributo: appsignal.config.name
  • Ou como cabeçalho da requisição: Appsignal-Config-Name
  • Tipo: String
  • Obrigatório: Sim
Nome da sua aplicação como deve ser exibido no AppSignal.com.
attributes = {
    # Adicione esta linha aos atributos de recurso
    "appsignal.config.name": "My awesome app",
}

resource = Resource(attributes=attributes)

Ambiente do app

  • Nome do atributo: appsignal.config.environment
  • Ou como cabeçalho da requisição: Appsignal-Config-Environment
  • Tipo: String
  • Obrigatório: Sim
O ambiente da aplicação como deve ser exibido no AppSignal.com.
attributes = {
# Adicione esta linha aos atributos de recurso
"appsignal.config.environment": "staging",
}

resource = Resource(attributes=attributes)

Push API key

  • Nome do atributo: appsignal.config.push_api_key
  • Ou como cabeçalho da requisição: Appsignal-Config-PushApiKey
  • Tipo: String
  • Obrigatório: Sim
A chave de autenticação no nível da organização para autenticar com nossa Push API. Para informações detalhadas sobre a Push API key do AppSignal, consulte nossa documentação de terminologia.
attributes = {
    # Adicione esta linha aos atributos de recurso
    "appsignal.config.push_api_key": "00000000-0000-0000-0000-000000000000",
}

resource = Resource(attributes=attributes)

Revisão do app

  • Nome do atributo: appsignal.config.revision
  • Ou como cabeçalho da requisição: Appsignal-Config-Revision
  • Tipo: String
  • Obrigatório: Sim
Para reportar novas implantações de aplicações OpenTelemetry, você pode usar Deploy Markers. Deploy markers podem ser configurados com o atributo de recurso de revisão. O valor desse atributo será usado para identificar novas implantações. Ele precisa ser único por implantação para detectar novas implantações. Recomendamos usar SHAs de commits Git ou uma tag no seu SCM. Isso pode ser usado em combinação com nossos backtrace links para vincular diretamente do AppSignal de volta ao código-fonte em plataformas como GitHub e GitLab.
import subprocess

attributes = {
    # ...
}

try:
  revision = subprocess.check_output("git rev-parse --short HEAD", shell=True, text=True).strip()
  attributes["appsignal.config.revision"] = revision
except subprocess.CalledProcessError:
  pass

resource = Resource(attributes=attributes)

Integração de linguagem

  • Nome do atributo: appsignal.config.language_integration
  • Ou como cabeçalho da requisição: Appsignal-Config-LanguageIntegration
  • Tipo: String
  • Obrigatório: Sim
O AppSignal usa o atributo de recurso language_integration para detectar a linguagem de um trace e analisar corretamente os backtraces de exceções. Para definir essa opção, especifique o nome da linguagem em minúsculas, por exemplo, “python”, “rust”, “ruby”, “elixir”, “go” e “nodejs”.
attributes = {
    # Adicione esta linha aos atributos de recurso
    "appsignal.config.language_integration": "python",
}

resource = Resource(attributes=attributes)

Nome do app OTP

  • Nome do atributo: appsignal.config.otp_app
  • Tipo: String
  • Obrigatório: Sim, para apps Elixir
O AppSignal usa o atributo de recurso appsignal.config.otp_app para detectar quais linhas de backtrace de erros pertencem à aplicação. Você pode encontrar o nome do app OTP da sua aplicação chamando IO.inspect(:application.get_application()) na sua aplicação e verificando a saída.
config :opentelemetry,
  resource: [
    {"appsignal.config.otp_app", "OTP app name"},
    # E outros atributos de recurso
  ]

Nome do serviço

  • Nome do atributo: service.name
  • Ou como cabeçalho da requisição: OpenTelemetry-ServiceName
  • Tipo: String
  • Obrigatório: Sim
O atributo de recurso service.name ajuda o AppSignal a reconhecer diferentes serviços para traces e agrupa os traces automaticamente em um namespace baseado no nome do serviço. Escolha um nome que se encaixe na sua aplicação, como “Web server”, “Background worker”, “Email service”, “Authentication service”, etc.
import socket

attributes = {
    # Adicione esta linha aos atributos de recurso
    "service.name": "My service name",
}

resource = Resource(attributes=attributes)

Hostname

  • Nome do atributo: host.name
  • Ou como cabeçalho da requisição: OpenTelemetry-HostName
  • Tipo: String
  • Obrigatório: Sim
O atributo de recurso host.name ajuda o AppSignal a reconhecer diferentes hosts para traces e tagueia os traces automaticamente com o hostname.
import socket

attributes = {
    # Adicione esta linha aos atributos de recurso
    "host.name": socket.gethostname(),
}

resource = Resource(attributes=attributes)

Caminho do app

  • Nome do atributo: appsignal.config.app_path
  • Tipo: String
  • Obrigatório: Não
A localização do app no sistema de arquivos do host. O atributo de recurso app_path ajuda o AppSignal a limpar backtraces removendo o caminho absoluto do app das linhas de backtrace. Dessa forma, somente os caminhos dentro do contexto do diretório do projeto são exibidos. Isso torna possível nosso recurso de Backtrace links.
import os

attributes = {
    # Adicione esta linha aos atributos de recurso
    "appsignal.config.app_path": os.getcwd()
}

resource = Resource(attributes=attributes)

Filter attributes

  • Nome do atributo: appsignal.config.filter_attributes
  • Tipo: Array
  • Obrigatório: Não
O atributo de recurso filter_attributes permite filtrar atributos específicos para que não sejam reportados ao AppSignal. Isso pode ser útil para filtrar informações sensíveis ou irrelevantes para que não sejam reportadas. Se um atributo for filtrado dessa forma, ele não aparecerá na interface.
attributes = {
    # Adicione esta linha aos atributos de recurso
    "appsignal.config.filter_attributes": ["my.secret.attribute", "some.opentelemetry.attribute"],
}

resource = Resource(attributes=attributes)

Filter function parameters

  • Nome do atributo: appsignal.config.filter_function_parameters
  • Tipo: Array
  • Valor padrão: Vazio
  • Obrigatório: Não
O atributo de recurso filter_function_parameters permite filtrar quaisquer parâmetros de função definidos no atributo de span appsignal.function.parameters. No exemplo abaixo, os valores para as chaves listadas na opção de configuração filter_function_parameters são substituídos por [FILTERED].
# Configure o recurso do exporter assim:
attributes = {
    # Adicione esta linha aos atributos de recurso
    "appsignal.config.filter_function_parameters": ["password", "cvv"],
}

resource = Resource(attributes=attributes)

# Resto da configuração do exporter...

# Em seguida, no trace, defina o atributo de span dos parâmetros da função
import json
from opentelemetry import trace

tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("something.custom") as span:
    span.set_attribute("appsignal.function.parameters", json.dumps({
        "password": "super secret",
        "test_param": "test value",
        "nested": {
            "password": "super secret nested",
            "test_param": "test value",
        }
    }))

Filter request query parameters

  • Nome do atributo: appsignal.config.filter_request_query_parameters
  • Tipo: Array
  • Valor padrão: Vazio
  • Obrigatório: Não
O atributo de recurso filter_request_query_parameters permite filtrar quaisquer query parameters de requisição definidos no atributo de span appsignal.request.query_parameters. No exemplo abaixo, os valores para as chaves listadas na opção de configuração filter_request_query_parameters são substituídos por [FILTERED].
# Configure o recurso do exporter assim:
attributes = {
    # Adicione esta linha aos atributos de recurso
    "appsignal.config.filter_request_query_parameters": ["password", "cvv"],
}

resource = Resource(attributes=attributes)

# Resto da configuração do exporter...

# Em seguida, no trace, defina o atributo de span dos query parameters
import json
from opentelemetry import trace

tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("something.custom") as span:
    span.set_attribute("appsignal.request.query_parameters", json.dumps({
        "password": "super secret",
        "test_param": "test value"
    }))

Filter request payload

  • Nome do atributo: appsignal.config.filter_request_payload
  • Tipo: Array
  • Valor padrão: Vazio
  • Obrigatório: Não
O atributo de recurso filter_request_payload permite filtrar quaisquer dados de payload de requisição definidos no atributo de span appsignal.request.payload. No exemplo abaixo, os valores para as chaves listadas na opção de configuração filter_request_payload são substituídos por [FILTERED].
# Configure o recurso do exporter assim:
attributes = {
    # Adicione esta linha aos atributos de recurso
    "appsignal.config.filter_request_payload": ["password", "cvv"],
}

resource = Resource(attributes=attributes)

# Resto da configuração do exporter...

# Em seguida, no trace, defina o atributo de span do payload da requisição
import json
from opentelemetry import trace

tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("something.custom") as span:
    span.set_attribute("appsignal.request.payload", json.dumps({
        "password": "super secret",
        "test_param": "test value",
        "nested": {
            "password": "super secret nested",
            "test_param": "test value",
        }
    }))

Filter request session data

  • Nome do atributo: appsignal.config.filter_request_session_data
  • Tipo: Array
  • Valor padrão: Vazio
  • Obrigatório: Não
O atributo de recurso filter_request_session_data permite filtrar quaisquer dados de sessão de requisição definidos no atributo de span appsignal.request.session_data. No exemplo abaixo, os valores para as chaves listadas na opção de configuração filter_request_session_data são substituídos por [FILTERED].
# Configure o recurso do exporter assim:
attributes = {
    # Adicione esta linha aos atributos de recurso
    "appsignal.config.filter_request_session_data": ["password", "cvv"],
}

resource = Resource(attributes=attributes)

# Resto da configuração do exporter...

# Em seguida, no trace, defina o atributo de span dos dados de sessão
import json
from opentelemetry import trace

tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("something.custom") as span:
    span.set_attribute("appsignal.request.session_data", json.dumps({
        "password": "super secret",
        "test_param": "test value",
        "nested": {
            "password": "super secret nested",
            "test_param": "test value",
        }
    }))

Ignore actions

  • Nome do atributo: appsignal.config.ignore_actions
  • Tipo: Array de Strings
  • Obrigatório: Não
O atributo de recurso ignore_actions permite ignorar ações específicas para que não sejam reportadas ao AppSignal. Isso pode ser útil para ignorar endpoints de health check ou outras ações que você não quer monitorar.
attributes = {
    # Adicione esta linha aos atributos de recurso
    "appsignal.config.ignore_actions": ["GET /health_check", "POST /ping"],
}

resource = Resource(attributes=attributes)

Ignore errors

  • Nome do atributo: appsignal.config.ignore_errors
  • Tipo: Array de Strings
  • Obrigatório: Não
O atributo de recurso ignore_errors permite ignorar erros específicos para que não sejam reportados ao AppSignal. Isso pode ser útil para ignorar erros esperados ou erros que não podem ser resolvidos.
attributes = {
    # Adicione esta linha aos atributos de recurso
    "appsignal.config.ignore_errors": ["MyCustomError", "ExpectedError"],
}

resource = Resource(attributes=attributes)

Ignore namespaces

  • Nome do atributo: appsignal.config.ignore_namespaces
  • Tipo: Array de Strings
  • Obrigatório: Não
O atributo de recurso ignore_namespaces permite ignorar namespaces específicos para que não sejam reportados ao AppSignal. Isso pode ser útil para ignorar partes específicas da sua aplicação que você não quer que sejam monitoradas.
attributes = {
    # Adicione esta linha aos atributos de recurso
    "appsignal.config.ignore_namespaces": ["admin" ,"secret"],
}

resource = Resource(attributes=attributes)

Cabeçalhos de resposta

  • Nome do atributo: appsignal.config.response_headers
  • Tipo: Array de Strings
  • Valor padrão: ["content-length", "accept", "accept-charset", "accept-encoding", "accept-language", "cache-control", "connection", "range", "host"]
  • Obrigatório: Não
Configure quais cabeçalhos de resposta incluir quando uma requisição é feita por um cliente HTTP. Esta opção é uma allowlist. Ela só inclui os cabeçalhos que foram configurados. Se a lista estiver vazia, nenhum cabeçalho é incluído. Os cabeçalhos de resposta são lidos dos atributos de span do OpenTelemetry http.response.header.<key>, onde <key> é o nome do cabeçalho normalizado (em minúsculas). Para não definir nenhum cabeçalho, defina explicitamente o valor do atributo de recurso como um array vazio.
attributes = {
    # Envia apenas estes cabeçalhos específicos
    "appsignal.config.response_headers": ["accept", "request_method", "content_length"]

    # Não envia nenhum cabeçalho
    "appsignal.config.response_headers": []
}

resource = Resource(attributes=attributes)

Cabeçalhos de requisição

  • Nome do atributo: appsignal.config.request_headers
  • Tipo: Array de Strings
  • Valor padrão: ["content-length", "accept", "accept-charset", "accept-encoding", "accept-language", "cache-control", "connection", "range", "host"]
  • Obrigatório: Não
Configure quais cabeçalhos de requisição incluir quando uma requisição é feita a um servidor HTTP. Esta opção é uma allowlist. Ela só inclui os cabeçalhos que foram configurados. Se a lista estiver vazia, nenhum cabeçalho é incluído. Os cabeçalhos de requisição são lidos dos atributos de span do OpenTelemetry http.request.header.<key>, onde <key> é o nome do cabeçalho normalizado (em minúsculas). Para não definir nenhum cabeçalho, defina explicitamente o valor do atributo de recurso como um array vazio.
attributes = {
    # Envia apenas estes cabeçalhos específicos
    "appsignal.config.request_headers": ["accept", "request_method", "content_length"]

    # Não envia nenhum cabeçalho
    "appsignal.config.response_headers": []
}

resource = Resource(attributes=attributes)

Send function parameters

  • Nome do atributo: appsignal.config.send_function_parameters
  • Tipo: Boolean
  • Valor padrão: true
  • Obrigatório: Não
Configure se deve incluir parâmetros de função nos traces. Se definido como false, nenhum desses dados é enviado aos nossos servidores. Esses valores são definidos com o atributo de span appsignal.function.parameters.
attributes = {
    # Adicione esta linha aos atributos de recurso
    "appsignal.config.send_function_parameters": false
}

resource = Resource(attributes=attributes)

Send request query parameter

  • Nome do atributo: appsignal.config.send_request_query_parameters
  • Tipo: Boolean
  • Valor padrão: true
  • Obrigatório: Não
Configure se deve incluir query parameters de requisição nos traces. Se definido como false, nenhum desses dados é enviado aos nossos servidores. Esses valores são definidos com o atributo de span appsignal.request.query_parameters. Para mais informações, leia sobre filtragem de parâmetros de requisição.
attributes = {
    # Adicione esta linha aos atributos de recurso
    "appsignal.config.send_request_query_parameters": false
}

resource = Resource(attributes=attributes)

Send request payload

  • Nome do atributo: appsignal.config.send_request_payload
  • Tipo: Boolean
  • Valor padrão: true
  • Obrigatório: Não
Configure se deve enviar dados do payload da requisição nos traces. Se definido como false, nenhum desses dados é enviado aos nossos servidores. Esses valores são definidos com o atributo de span appsignal.request.payload.
attributes = {
    # Adicione esta linha aos atributos de recurso
    "appsignal.config.send_request_payload": false
}

resource = Resource(attributes=attributes)

Send request session data

  • Nome do atributo: appsignal.config.send_request_session_data
  • Tipo: Boolean
  • Valor padrão: true
  • Obrigatório: Não
Configure se deve enviar dados de sessão da requisição nos traces. Se definido como false, nenhum desses dados é enviado aos nossos servidores. Esses valores são definidos com o atributo de span appsignal.request.session_data.
attributes = {
    # Adicione esta linha aos atributos de recurso
    "appsignal.config.send_request_session_data": false
}

resource = Resource(attributes=attributes)