Pular para o conteúdo principal
A instrumentação do AppSignal cria eventos para trechos de código que são instrumentados. Esses eventos são usados para calcular a duração da execução do código e o Garbage Collection de bibliotecas e blocos de código separados. A instrumentação permite que o AppSignal detecte áreas problemáticas no código. Isso possibilita ver se as consultas ao banco de dados de uma aplicação estão lentas ou se uma única chamada de API está causando a maior parte da lentidão em uma requisição. Para instrumentar o código com precisão, cada nome de evento segue um método de nomenclatura muito específico. Escolher um bom nome pode ajudar bastante na forma como o AppSignal processa e exibe os dados recebidos. Nomear eventos pode ser difícil, mas esperamos que essa breve explicação sobre como um nome de evento é usado ajude você a escolher um bom nome. Para saber mais sobre instrumentação, leia nossos guias de instrumentação personalizada:

Grupos de eventos

Todo evento criado pela instrumentação do AppSignal tem um nome. Neste nome também está presente o grupo pai do evento. Esse nome de grupo permite que o AppSignal agrupe eventos de consultas ao banco de dados e renderização de views. Usando esse agrupamento, podemos criar visões gerais que mostram tempos de execução por grupo, bem como eventos individuais. Por exemplo, nossa integração com Rails cria estes grupos: active_record, action_view, action_controller, etc.

Nomenclatura de eventos

Um nome de evento é uma string composta por caracteres alfanuméricos, sublinhados e pontos. Espaços e traços não são aceitos. Pense nesta regex, ([a-zA-Z0-9_.]+); se for aceita por esta regex, o nome do evento é aceito. Vamos começar com um nome de evento simples.
Shell
sql.active_record
^   ^
|   segunda parte (grupo)
primeira parte (ação)
A ação de um nome de evento é tudo até o último ponto . em uma chave. O grupo é tudo após esse ponto. O grupo de um evento é a biblioteca de código à qual ele pertence ou o tipo de ação que ele representa, como uma consulta ao banco de dados ou uma requisição HTTP. Também funciona com vários pontos em uma chave.
Shell
fetch.partition3.database
^                ^
|                segunda parte (grupo)
primeira parte (ação)
Nós mesmos usamos esse esquema de nomenclatura final para a instrumentação de métodos em Ruby. Quando um nome com apenas uma parte é encontrado, o evento será automaticamente agrupado sob o grupo other.

Exemplos

Alguns exemplos de chaves usadas pelas integrações do AppSignal:
  • ActiveRecord: sql.active_record
  • Redis: query.redis
  • Elasticsearch: search.elasticsearch
  • ActionView: render_template.action_view e render_partial.action_view
  • Net::HTTP do Ruby: request.net_http
  • Sidekiq: perform_job.sidekiq
  • Instrumentação de métodos em Ruby:
    • method_name.ClassName.other, e;
    • method_name.class_method.NestedClassName.ParentModule.other