Para instrumentar aplicações Rack, o AppSignal fornece um middleware de instrumentation Rack. Se você usa algum dos frameworks Rack suportados como Rails, Sinatra, Hanami, Grape ou Padrino, recomendamos usar essas instrumentations em vez deste.
Adicionar o middleware de instrumentation
Para integrar o AppSignal em uma aplicação Rack, primeiro precisamos carregar, configurar e iniciar o AppSignal.
Em seguida, instrumente o app Rack adicionando nossos middlewares EventMiddleware e InstrumentationMiddleware do Rack à pilha de middleware.
Esta documentação explica como fazer isso no arquivo config.ru da sua aplicação.
Certifique-se de que EventMiddleware e InstrumentationMiddleware estejam registrados na pilha de middleware da aplicação o mais cedo possível. Quanto mais cedo esses middlewares forem registrados, mais runtime da requisição o middleware irá instrumentar. Se outros middlewares forem registrados antes, nossos middlewares não irão instrumentá-los.
Após adicionar EventMiddleware e InstrumentationMiddleware à pilha de middleware do seu app, a action precisa ser definida para cada rota no seu app no AppSignal. Sem um nome de action para agrupar as requisições, o event middleware não reportará as informações da requisição.
Para mais insights sobre o funcionamento da sua aplicação Rack, recomendamos adicionar instrumentation adicional aos endpoints da aplicação.
O event middleware Rack
Recomendamos adicionar nosso event middleware Rack a todas as aplicações Rack. Este middleware garantirá que rastreemos
O event middleware Rack do AppSignal tem as seguintes funcionalidades:
- Instrumentation da requisição e registro de um evento
process_request.rack.
- Reporte de Exceptions que ocorrem no app e no middleware.
- Rastreamento do status code da response como a tag
response_status no sample.
- Rastreamento do status code da response como a métrica
response_status, com as tags namespace e status.
O instrumentation middleware Rack
Recomendamos que além do Appsignal::Rack::EventMiddleware, o AppSignal::Rack::InstrumentationMiddleware seja adicionado ao app. Este middleware complementa a instrumentation do event middleware adicionando tags para o caminho da requisição e o método da requisição, bem como rastreando o tratamento e o fechamento do response body.
O instrumentation middleware tem as seguintes funcionalidades:
- Instrumentation da requisição e registro de um evento
process_request.rack.
- Reporte de Exceptions que ocorrem no app.
- Rastreamento do caminho da requisição e do método da requisição como tags no sample.
- Instrumentation do tratamento do response body e registro de um evento
process_response_body.rack para esta operação.
- Instrumentation do fechamento do response body e registro de um evento
close_response_body.rack para esta operação.
Usando o middleware de instrumentation legado
O middleware GenericInstrumentation foi descontinuado na gem Ruby 3.10.0.
Por favor, use o novo guia em vez disso.
Para integrar o AppSignal em uma aplicação Rack, primeiro precisamos carregar, configurar e iniciar o AppSignal.
Em seguida, instrumente o app Rack adicionando nosso middleware GenericInstrumentation do Rack à pilha de middleware.
Esta documentação explica como fazer isso no arquivo config.ru da sua aplicação.
Certifique-se de que EventMiddleware e InstrumentationMiddleware estejam registrados na pilha de middleware da aplicação o mais cedo possível. Quanto mais cedo esses middlewares forem registrados, mais runtime da requisição o middleware irá instrumentar. Se outros middlewares forem registrados antes, nossos middlewares não irão instrumentá-los.
Após adicionar EventMiddleware e InstrumentationMiddleware à pilha de middleware do seu app, a action precisa ser definida para cada rota no seu app no AppSignal. Sem um nome de action para agrupar as requisições, o event middleware não reportará as informações da requisição.
Para mais insights sobre o funcionamento da sua aplicação Rack, recomendamos adicionar instrumentation adicional aos endpoints da aplicação.
Definindo o nome da action
Defina um nome de action na transaction do AppSignal para uma requisição para que possamos agrupar endpoints em nossos issues e métricas. Recomendamos usar um nome de action estático por endpoint, como GET /blog, POST /users, PUT /users/:id, etc.
Para definir um nome de action para uma requisição, chame o helper Appsignal.set_action a partir do app.
Não use o caminho da requisição da rota como o nome da action se o caminho tiver
segmentos dinâmicos. Usar caminhos de requisição reais para nomes de action quebra nosso
agrupamento de requisições, criando issues únicos para cada possível caminho de requisição.