Naar hoofdinhoud gaan
Het AppSignal voor Elixir-pakket instrumenteert HTTP-requests die worden uitgevoerd door Tesla. Tesla is een flexibele HTTP-clientbibliotheek voor Elixir. Het kan meerdere middlewares en adapters gebruiken om HTTP-requests te wijzigen en uit te voeren, en heeft ingebouwde ondersteuning voor request-telemetry. Nadat u Tesla’s Telemetry-middleware heeft geconfigureerd, herkent AppSignal requests die via Tesla worden uitgevoerd en toont deze als request.tesla-events op de Event Timeline van uw performance samples. In de Event Timeline ziet u hoeveel tijd Tesla besteedt aan het maken van externe API-requests. Deze data kan u helpen bij de beslissing om de API-requests naar een background job te verplaatsen of caching te introduceren om de performance te verbeteren en onnodige API-requests te beperken. In de Slow API Requests performance view kunt u geaggregeerde throughput en gemiddelde tijden zien voor verschillende soorten HTTP-requests. Volg de instructies in de sectie Path Params-groepering om de informatie in deze view te verbeteren.

Configuratie

Voeg de middleware Tesla.Middleware.Telemetry toe aan de middleware-chain van uw module of client, vóór alle andere middlewares:
defmodule MyAPIClient do
  use Tesla

  plug Tesla.Middleware.Telemetry
  # ... plug other middlewares here, **after** the Telemetry middleware
end
client = Tesla.client([
  Tesla.Middleware.Telemetry,
  # ... add other middlewares here, **after** the Telemetry middleware
])
Als u de Finch-adapter voor Tesla gebruikt, moet u AppSignal’s Finch- instrumentatie uitschakelen door de configuratieoptie instrument_finch in te stellen op false.

Verbeterde groepering

Standaard groepeert de AppSignal-instrumentatie voor Tesla requests op de domeinnaam waartegen ze worden uitgevoerd. Het pad van de request wordt niet weergegeven in AppSignal. Echter, door bepaalde Tesla-middlewares te gebruiken, is het mogelijk om meer informatie over de request toe te voegen. In de volgende secties wordt het gedrag van elke middleware afzonderlijk beschreven, maar het is ook mogelijk ze samen te gebruiken.

Base URL-groepering

Wanneer u de BaseUrl-middleware gebruikt, wordt de opgegeven base-URL, inclusief het pad, gebruikt voor groepering, wat u extra inzicht geeft in het doel van de HTTP-requests die door Tesla worden uitgevoerd:
defmodule MyAPIClient do
  use Tesla

  plug Tesla.Middleware.Telemetry
  # make sure Telemetry appears **before** any other middleware!
  plug Tesla.Middleware.BaseUrl, "https://api.example.com/v2/users"

  def user_comments(id) do
    get("/#{id}/comments")
  end
end
In het bovenstaande voorbeeld worden requests die door deze client worden uitgevoerd weergegeven in de Event Timeline van de sample en in de Slow API Requests performance view als GET https://api.example.com/v2/users, in plaats van alleen GET https://api.example.com, wat aanvullende informatie biedt over de requests die worden uitgevoerd.

Path Params-groepering

Wanneer u de PathParams-middleware gebruikt, is de URL die aan Tesla wordt gegeven voor de request een template, waarbij path-parameters apart worden meegegeven:
defmodule MyAPIClient do
  use Tesla

  plug Tesla.Middleware.Telemetry
  # make sure Telemetry appears **before** any other 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
Wanneer PathParams wordt gebruikt, wordt de URL-template weergegeven in AppSignal. Requests verschijnen als GET https://api.example.com/v2/users/:user/comments in de Event Timeline van de sample en in de Slow API Requests performance view, wat u een gedetailleerd overzicht biedt van elk request-type dat uw client uitvoert.

Tesla-instrumentatie uitschakelen

Om de Tesla-instrumentatie uit te schakelen, stelt u de configuratieoptie instrument_tesla in op false.