Controller#action_name, BackgroundWorker#perform, etc.).
Quando o nome de ação determinado automaticamente não é bom o suficiente, você pode personalizar o nome da ação.
Este guia explica como personalizar nomes de ação em diferentes integrações de linguagem.
Por que personalizar nomes de ação?
- Clareza aprimorada: forneça nomes mais descritivos para operações complexas.
- Agrupamento personalizado: controle como os dados do aplicativo são organizados no AppSignal.
Quando os nomes de ação automáticos não são suficientes
Aqui estão alguns exemplos em que os nomes de ação gerados automaticamente podem não ser bons o suficiente:- Rotas catch-all: em aplicativos que usam rotas catch-all ou roteamento dinâmico (como
/api/:entity/:action), o nome de ação padrão pode ser algo genérico comoApiController#dispatch. - Tarefas multipropósito: workers em segundo plano e scripts que lidam com diferentes tipos de trabalho com base em parâmetros que seriam todos agrupados sob o mesmo nome de ação (por exemplo,
GenericWorker#perform). - Resolvers GraphQL: estes podem ser todos agrupados sob um único nome de ação (por exemplo,
POST /graphql), apesar de lidar com muitos tipos diferentes de operações.
Personalizando ações por linguagem
Ruby
Em aplicativos Ruby, você pode usar o helperAppsignal.set_action para personalizar o nome da ação:
Appsignal.set_action.
Também é possível configurar o nome da ação ao criar uma transação usando o helper Appsignal.monitor. Ele aceita o nome da ação como um argumento de palavra-chave.
Elixir
Em aplicativos Elixir, você pode usar a funçãoAppsignal.Span.set_name/2 para personalizar o nome da ação no root span:
Appsignal.Span.set_name/2.
Node.js
Em aplicativos Node.js, você pode usar o helpersetRootName do pacote AppSignal para personalizar nomes de ação:
setRootName.
Python
Em aplicativos Python, você pode usar o helperset_root_name do pacote AppSignal para personalizar nomes de ação:
set_root_name.
JavaScript de front-end
Em aplicativos JavaScript de front-end, você pode usar o helpersetAction do pacote AppSignal para personalizar nomes de ação:
Go
Em aplicativos Go, o AppSignal funciona com o OpenTelemetry, que usa spans para rastrear metadados, como o nome da ação. Em qualquer span no trace, defina um atributoappsignal.action_name com um valor String para personalizar o nome da ação:
appsignal.action_name no span ativo.
Java
Em aplicativos Java, o AppSignal funciona com o OpenTelemetry, que usa spans para rastrear metadados, como o nome da ação. Em qualquer span no trace, defina um atributoappsignal.action_name com um valor String para personalizar o nome da ação:
appsignal.action_name no span ativo.
PHP
Em aplicativos PHP, você pode usar o método helperAppsignal::setAction() do pacote AppSignal para personalizar nomes de ação:
appsignal.action_name no span ativo.
Melhores práticas
Ao personalizar nomes de ação, siga estas diretrizes:- Seja consistente: use um padrão de nomenclatura consistente em todo o seu aplicativo.
- Seja específico: inclua informações relevantes que ajudem a identificar a operação.
- Evite alta cardinalidade: não inclua IDs ou valores únicos que criariam nomes de ação únicos por execução.
- Use strings estáticas: nunca interpole variáveis ou dados dinâmicos em nomes de ação.
- Siga a nomenclatura do código: use padrões de nomenclatura como
Controller#actionque correspondem à estrutura do seu aplicativo, para que a localização no código possa ser encontrada. - Use tags ou metadados: para rastrear informações variáveis, como provedores de pagamento ou tipos de usuário, use tags e metadados em vez de incorporá-los aos nomes de ação.
Como lidar com diferentes operações com o mesmo nome de ação
Em vez de criar nomes de ação dinâmicos, use uma combinação de:- Nomes de ação estáticos: use nomes de ação descritivos, mas estáticos.
- Tags: adicione tags com as informações variáveis (por exemplo,
provider: stripe,operation_type: refund). - Atributos personalizados: adicione metadados adicionais ao trace/transação.
- Agrupe operações relacionadas sob um único nome de ação.
- Filtre e pesquise com base em tags.
- Mantenha uma visão geral de incidentes limpa.