Pular para o conteúdo principal
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

Usando uma gem AppSignal Ruby mais antiga? Siga nosso guia legado.
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.