Pular para o conteúdo principal
O pacote AppSignal for Elixir instrumenta requisições HTTP realizadas pelo Tesla. Tesla é uma biblioteca cliente HTTP flexível para Elixir. Ela pode usar múltiplos middlewares e adapters para modificar e executar requisições HTTP, e tem suporte embutido para telemetria de requisições. Após configurar o middleware Telemetry do Tesla, o AppSignal reconhecerá as requisições executadas via Tesla e as mostrará como eventos request.tesla na Event Timeline das suas amostras de desempenho. Na Event Timeline, você verá quanto tempo o Tesla gasta fazendo requisições a APIs externas. Esses dados podem ajudá-lo a decidir mover as requisições de API para um background job ou introduzir caching para ajudar a acelerar o desempenho e limitar requisições desnecessárias a APIs. Na view Slow API Requests de desempenho, você poderá ver throughput agregado e tempos médios para diferentes tipos de requisições HTTP. Siga as instruções na seção Path Params Grouping para melhorar as informações exibidas nessa view.

Configuração

Adicione o middleware Tesla.Middleware.Telemetry à cadeia de middlewares do seu módulo ou cliente, antes de quaisquer outros middlewares:
defmodule MyAPIClient do
  use Tesla

  plug Tesla.Middleware.Telemetry
  # ... plugue outros middlewares aqui, **depois** do middleware Telemetry
end
client = Tesla.client([
  Tesla.Middleware.Telemetry,
  # ... adicione outros middlewares aqui, **depois** do middleware Telemetry
])
Se estiver usando o adapter Finch para o Tesla, você deve desabilitar a instrumentação Finch do AppSignal definindo a opção de configuração instrument_finch como false.

Agrupamento aprimorado

Por padrão, a instrumentação do AppSignal para o Tesla agrupará as requisições pelo nome de domínio contra o qual são feitas. O path da requisição não será mostrado no AppSignal. No entanto, usando certos middlewares do Tesla, é possível adicionar mais informações sobre a requisição. As seções a seguir descrevem o comportamento de cada middleware separadamente, mas também é possível usá-los juntos.

Agrupamento por Base URL

Ao usar o middleware BaseUrl, a base URL fornecida, incluindo seu path, será usada para o agrupamento, fornecendo a você algum insight adicional sobre o alvo das requisições HTTP realizadas pelo Tesla:
defmodule MyAPIClient do
  use Tesla

  plug Tesla.Middleware.Telemetry
  # certifique-se de que o Telemetry aparece **antes** de qualquer outro middleware!
  plug Tesla.Middleware.BaseUrl, "https://api.example.com/v2/users"

  def user_comments(id) do
    get("/#{id}/comments")
  end
end
No exemplo acima, requisições feitas por este cliente serão exibidas na Event Timeline da amostra e na view Slow API Requests como GET https://api.example.com/v2/users, em vez de apenas GET https://api.example.com, fornecendo informações adicionais sobre as requisições que estão sendo realizadas.

Agrupamento por Path Params

Ao usar o middleware PathParams, a URL fornecida ao Tesla para a requisição será um template, com os path parameters sendo passados separadamente:
defmodule MyAPIClient do
  use Tesla

  plug Tesla.Middleware.Telemetry
  # certifique-se de que o Telemetry aparece **antes** de qualquer outro middleware!
  plug Tesla.Middleware.PathParams

  def user_comments(id) do
    params = [user: id]
    get("https://api.example.com/v2/users/:user/comments", opts: [path_params: params])
  end
end
Quando PathParams é usado, o template da URL será mostrado no AppSignal. As requisições aparecerão como GET https://api.example.com/v2/users/:user/comments na Event Timeline da amostra e na view Slow API Requests, fornecendo a você uma visão detalhada de cada tipo de requisição que seu cliente executa.

Desabilitar a instrumentação do Tesla

Para desabilitar a instrumentação do Tesla, defina a opção de configuração instrument_tesla como false.