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 middlewaresEventMiddleware e InstrumentationMiddleware do Rack à pilha de middleware.
Esta documentação explica como fazer isso no arquivo config.ru da sua aplicação.
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_statusno trace. - Rastreamento do status code da response como a métrica
response_status, com as tagsnamespaceestatus.
O instrumentation middleware Rack
Recomendamos que além doAppsignal::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 trace.
- Instrumentation do tratamento do response body e registro de um evento
process_response_body.rackpara esta operação. - Instrumentation do fechamento do response body e registro de um evento
close_response_body.rackpara esta operação.
Usando o middleware de instrumentation 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 nosso middlewareGenericInstrumentation do Rack à pilha de middleware.
Esta documentação explica como fazer isso no arquivo config.ru da sua aplicação.
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, comoGET /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.
Atributos de span
Somente no modo collector: isso se aplica quando o AppSignal para Ruby é executado no modo collector. Nos demais casos, não tem efeito.
http.request.method— o método da requisição.url.scheme,url.patheurl.query— o endereço requisitado.http.response.status_code— o status com o qual sua aplicação respondeu.
error.type, a classe do erro.
Distributed tracing
Somente no modo collector: isso se aplica quando o AppSignal para Ruby é executado no modo collector. Nos demais casos, não tem efeito.
traceparent continua o trace que ele nomeia.
A requisição aparece dentro do trace do serviço que a chamou, sob a requisição que a causou. Você pode seguir uma requisição lenta desse serviço até esta aplicação sem trocar de trace.
Os clientes HTTP suportados pelo AppSignal iniciam o trace. Uma requisição sem o header inicia um novo.