Remarque : La prise en charge des namespaces personnalisés a été ajoutée dans la version 1.3.0 du
paquet AppSignal pour Elixir.
Le paquet AppSignal pour Elixir s’intègre à Plug. Pour mettre en place
l’intégration, veuillez suivre notre guide d’installation.
Cette page décrit comment configurer AppSignal dans une application Plug, et comment
ajouter de l’instrumentation pour les événements à l’intérieur des requêtes. Pour plus d’informations sur
l’instrumentation personnalisée, lisez la documentation sur l’instrumentation
Elixir.
Vous trouverez plus d’informations dans la documentation du paquet Hex
AppSignal.
Installation
L’instrumentation AppSignal pour Plug fait partie d’un paquet séparé, qui dépend du paquet principal appsignal. Ajoutez le paquet appsignal_plug à votre fichier mix.exs.
# mix.exs
defmodule AppsignalPlugExample.MixProject do
# ...
defp deps do
[
{:plug, "~> 1.0"}, # Or plug_cowboy ~> 2.0
{:appsignal_plug, "~> 2.0"}
# ...
]
end
end
Si vous utilisez déjà notre paquet appsignal_phoenix, il n’est pas nécessaire d’ajouter le paquet appsignal_plug car il est déjà une dépendance du paquet appsignal_phoenix. Voir également notre guide d’intégration Phoenix.
Requêtes HTTP entrantes
Nous commencerons avec une petite application Plug qui accepte les requêtes GET sur / et
renvoie un message de bienvenue. Pour commencer à journaliser les requêtes HTTP dans cette application, nous
utiliserons le module Appsignal.Plug.
defmodule AppsignalPlugExample do
use Plug.Router
use Appsignal.Plug # <- Add this
plug :match
plug :dispatch
get "/" do
send_resp(conn, 200, "Welcome")
end
end
Cela créera une transaction pour chaque requête HTTP effectuée sur le
endpoint.
Instrumentation personnalisée
Bien que Appsignal.Plug démarrera des transactions pour vous, il n’instrumentera pas
encore les événements dans votre application. Pour ce faire, nous devons ajouter de l’instrumentation
personnalisée.
Cette application d’exemple ressemble à celle utilisée précédemment, mais elle a une fonction lente
(nommée slow/0) pour laquelle nous souhaitons ajouter de l’instrumentation. Pour ce faire, nous devons
utiliser le helper Appsignal.instrument/2-3 dans notre fonction appelée :
defmodule AppsignalPlugExample do
use Plug.Router
plug :match
plug :dispatch
get "/" do
slow()
send_resp(conn, 200, "Welcome")
end
defp slow do
Appsignal.instrument("slow", fn ->
:timer.sleep(1000)
end)
end
use Appsignal.Plug
end
Cela ajoutera un événement pour la fonction slow/0 à la transaction courante
chaque fois qu’elle est appelée. Pour plus d’informations sur l’instrumentation personnalisée, lisez
la documentation sur l’instrumentation Elixir.
Instrumentation pour les Plugs inclus
Les exceptions dans les Plugs inclus sont automatiquement attrapées par AppSignal, mais
les échantillons de performance doivent être configurés manuellement en utilisant les helpers
d’instrumentation personnalisés ou les décorateurs.
Instrumentation de Plug avec des décorateurs
Pour ajouter de l’instrumentation aux Plugs, utilisez la fonction Appsignal.instrument/2 :
defmodule SlowPlugWithDecorators do
import Plug.Conn
def init(opts), do: opts
def call(conn, _) do
Appsignal.instrument("SlowPlugWithDecorators", fn ->
:timer.sleep(1000)
conn
end)
end
end