Passer au contenu principal
Le paquet AppSignal pour Elixir instrumente les requêtes HTTP effectuées par Tesla. Tesla est une bibliothèque cliente HTTP flexible pour Elixir. Elle peut utiliser plusieurs middlewares et adaptateurs pour modifier et effectuer des requêtes HTTP, et elle prend en charge nativement la télémétrie des requêtes. Après avoir configuré le middleware Telemetry de Tesla, AppSignal reconnaîtra les requêtes exécutées via Tesla et les affichera comme des événements request.tesla sur l’Event Timeline de vos échantillons de performance. Dans l’Event Timeline, vous verrez combien de temps Tesla passe à effectuer des requêtes API externes. Ces données peuvent vous aider à décider de déplacer les requêtes API vers un job en arrière-plan ou à introduire de la mise en cache pour aider à accélérer les performances et limiter les requêtes API inutiles. Dans la vue de performance Slow API Requests, vous pourrez voir le débit agrégé et les temps moyens pour différents types de requêtes HTTP. Suivez les instructions de la section Path Params Grouping afin d’améliorer les informations affichées dans cette vue.

Configuration

Ajoutez le middleware Tesla.Middleware.Telemetry à la chaîne de middlewares de votre module ou client, avant tout autre middleware :
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
])
Si vous utilisez l’adaptateur Finch pour Tesla, vous devriez désactiver l’instrumentation Finch d’AppSignal en définissant l’option de configuration instrument_finch sur false.

Regroupement amélioré

Par défaut, l’instrumentation AppSignal pour Tesla regroupera les requêtes par le nom de domaine sur lequel elles sont effectuées. Le chemin de la requête ne sera pas affiché dans AppSignal. Cependant, en utilisant certains middlewares Tesla, il est possible d’ajouter plus d’informations sur la requête. Les sections suivantes décrivent le comportement de chaque middleware séparément, mais il est également possible de les utiliser ensemble.

Regroupement par URL de base

Lorsque vous utilisez le middleware BaseUrl, l’URL de base fournie, y compris son chemin, sera utilisée pour le regroupement, vous fournissant un aperçu supplémentaire de la cible des requêtes HTTP effectuées par Tesla :
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
Dans l’exemple ci-dessus, les requêtes effectuées par ce client seront affichées dans l’Event Timeline de l’échantillon et dans la vue de performance Slow API Requests sous la forme GET https://api.example.com/v2/users, au lieu de simplement GET https://api.example.com, fournissant des informations supplémentaires sur les requêtes effectuées.

Regroupement par paramètres de chemin

Lorsque vous utilisez le middleware PathParams, l’URL donnée à Tesla pour la requête sera un template, avec des paramètres de chemin passés séparément :
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
Lorsque PathParams est utilisé, le template d’URL sera affiché dans AppSignal. Les requêtes apparaîtront comme GET https://api.example.com/v2/users/:user/comments dans l’Event Timeline de l’échantillon et dans la vue de performance Slow API Requests, vous fournissant une vue détaillée de chaque type de requête effectuée par votre client.

Désactiver l’instrumentation Tesla

Pour désactiver l’instrumentation Tesla, définissez l’option de configuration instrument_tesla sur false.