Appsignal.instrument. Os formatadores de eventos permitem que os dados passados para a chamada do método ActiveSupport::Notifications.instrument sejam formatados para eventos do AppSignal.
Os metadados dos eventos formatados pelos formatadores de eventos ficarão visíveis na página de detalhes do trace na timeline de eventos. Passe o mouse sobre um evento específico e o pop-up que aparece ao passar o mouse mostrará detalhes como o banco de dados exato sendo consultado ou a query que foi executada.
Criando um formatador de eventos
Um formatador de eventos do AppSignal é uma classe com um método de instância,format. Esse método format recebe o Hash de payload do evento e precisa retornar um Array com três valores.
É possível adicionar um formatador de eventos para bibliotecas que usam a instrumentação do ActiveSupport::Notifications, mas verifique se já não existe um formatador de eventos registrado para isso.
Também é possível criar um formatador de eventos para seus próprios eventos. Ao adicionar nomes de eventos próprios, atente-se às diretrizes de nomeação de eventos.
Cada formatador de eventos recebe um Hash de “payload” com metadados de evento, a partir do qual o formatador de eventos pode formatar os metadados para o evento no AppSignal. Esses metadados de evento do AppSignal precisam ser retornados pelo formatador de eventos nesta ordem em um Array:
- Um título de evento (
String)- Um título mais descritivo de um evento, como
"Fetch current user"ou"Fetch blog post comments". Ele aparecerá ao lado do nome do evento na árvore de eventos na página de trace de desempenho para fornecer um pouco mais de contexto sobre o que está acontecendo.
- Um título mais descritivo de um evento, como
- Um body de evento (
String)- Mais detalhes, como a query do banco de dados usada pelo evento.
- Um formato do body do evento (
Integer)- O formato do body suporta formatadores para sanitizar os dados fornecidos no argumento
bodye remover quaisquer dados sensíveis do valor. Atualmente, há dois valores suportados para o argumentobody_format.Appsignal::EventFormatter::DEFAULT- Este valor padrão indicará ao AppSignal para deixar o valor intacto e não sanitizar nenhum dado dele.
Appsignal::EventFormatter::SQL_BODY_FORMAT- O valor
SQL_BODY_FORMATindicará ao AppSignal para passar seus dados pelo sanitizador de SQL e sanitizar quaisquer valores em queries SQL.
- O valor
- O formato do body suporta formatadores para sanitizar os dados fornecidos no argumento
Exemplo de formatador de eventos
Formatando eventos do Dry::Monitor
Os formatadores de eventos também formatam eventos instrumentados através das notificações do Dry::Monitor. Registre o formatador com o ID do evento do Dry::Monitor seguido de.dry, de forma que um evento instrumentado como sql seja formatado pelo formatador registrado para sql.dry.
O primeiro valor retornado pelo formatador tem um significado diferente para esses eventos. Para um evento do ActiveSupport::Notifications, é o título do evento. Para um evento do Dry::Monitor, é o nome do evento, e o evento é registrado na timeline sem um título.
Desregistrando um formatador de eventos
Desregistre um formatador para impedir que o AppSignal o use para um nome de evento.Appsignal::EventFormatter.registered?("event.custom") para verificar se há um formatador registrado para um nome de evento.
Mudanças na gem 2.5
Na versão2.5.2 da gem AppSignal para Ruby, foram feitas algumas mudanças em como os formatadores de eventos são registrados. O método antigo de registrar formatadores de eventos foi descontinuado nesta release e será removido na versão 3.0 da gem Ruby.
O novo método de registrar EventFormatters permitirá que formatadores personalizados sejam registrados após o AppSignal ter sido carregado. Isso permite que EventFormatters sejam registrados em initializers do Rails.
Na versão 2.5.1 e anteriores da gem, é possível registrar um formatador de eventos como no exemplo abaixo, chamando o método register na própria classe.
Appsignal::EventFormatter.