Zum Hauptinhalt springen
Das AppSignal-für-Elixir-Paket instrumentiert HTTP-Anfragen, die von Tesla ausgeführt werden. Tesla ist eine flexible HTTP-Client-Bibliothek für Elixir. Sie kann mehrere Middlewares und Adapter verwenden, um HTTP-Anfragen zu ändern und auszuführen, und verfügt über integrierte Unterstützung für Request-Telemetry. Nach der Konfiguration der Telemetry-Middleware von Tesla erkennt AppSignal die über Tesla ausgeführten Anfragen und zeigt sie als request.tesla-Events in der Event-Timeline Ihrer Performance-Samples. In der Event-Timeline sehen Sie, wie viel Zeit Tesla mit externen API-Anfragen verbringt. Diese Daten können Sie dazu veranlassen, die API-Anfragen in einen Hintergrund-Job zu verschieben oder Caching einzuführen, um die Performance zu verbessern und unnötige API-Anfragen zu begrenzen. In der Performance-Ansicht „Slow API Requests“ können Sie den aggregierten Durchsatz und die durchschnittlichen Zeiten für verschiedene Arten von HTTP-Anfragen sehen. Folgen Sie den Anweisungen im Abschnitt Path Params Grouping, um die in dieser Ansicht angezeigten Informationen zu verbessern.

Konfiguration

Fügen Sie die Middleware Tesla.Middleware.Telemetry zur Middleware-Kette Ihres Moduls oder Clients hinzu, vor allen anderen 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
])
Wenn Sie den Finch-Adapter für Tesla verwenden, sollten Sie AppSignals Finch- Instrumentierung deaktivieren, indem Sie die Konfigurationsoption instrument_finch auf false setzen.

Verbesserte Gruppierung

Standardmäßig gruppiert die AppSignal-Instrumentierung für Tesla Anfragen nach dem Domainnamen, an den sie ausgeführt werden. Der Pfad der Anfrage wird in AppSignal nicht angezeigt. Mithilfe bestimmter Tesla-Middlewares können jedoch weitere Informationen über die Anfrage hinzugefügt werden. Die folgenden Abschnitte beschreiben das Verhalten jeder Middleware separat, aber es ist auch möglich, sie zusammen zu verwenden.

Gruppierung nach Basis-URL

Wenn die BaseUrl-Middleware verwendet wird, wird die bereitgestellte Basis-URL einschließlich ihres Pfads zur Gruppierung verwendet, was Ihnen zusätzliche Einblicke in das Ziel der von Tesla ausgeführten HTTP-Anfragen ermöglicht:
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
Im obigen Beispiel werden die von diesem Client ausgeführten Anfragen in der Event-Timeline des Samples und in der Performance-Ansicht „Slow API Requests“ als GET https://api.example.com/v2/users angezeigt, anstatt nur als GET https://api.example.com, was zusätzliche Informationen über die ausgeführten Anfragen liefert.

Gruppierung nach Path Params

Wenn die PathParams-Middleware verwendet wird, ist die an Tesla für die Anfrage übergebene URL ein Template, wobei Pfadparameter separat übergeben werden:
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
Wenn PathParams verwendet wird, wird das URL-Template in AppSignal angezeigt. Anfragen erscheinen als GET https://api.example.com/v2/users/:user/comments in der Event-Timeline des Samples und in der Performance-Ansicht „Slow API Requests“, was Ihnen eine detaillierte Ansicht jedes Anfragetyps bietet, den Ihr Client ausführt.

Tesla-Instrumentierung deaktivieren

Um die Tesla-Instrumentierung zu deaktivieren, setzen Sie die Konfigurationsoption instrument_tesla auf false.