Opmerking: Ondersteuning voor aangepaste namespaces is toegevoegd in versie 1.3.0 van
het AppSignal voor Elixir-pakket.
Het AppSignal voor Elixir-pakket integreert met Plug. Om de integratie op te
zetten, volg onze installatiehandleiding.
Deze pagina beschrijft hoe u AppSignal in een Plug-applicatie opzet en hoe u
instrumentatie voor events binnen requests toevoegt. Lees voor meer informatie over
aangepaste instrumentatie de Elixir-
instrumentatie-documentatie.
Meer informatie vindt u in de AppSignal Hex-pakketdocumentatie.
Installatie
De AppSignal-instrumentatie voor Plug is onderdeel van een apart pakket, dat afhankelijk is van het primaire appsignal-pakket. Voeg het pakket appsignal_plug toe aan uw mix.exs-bestand.
# mix.exs
defmodule AppsignalPlugExample.MixProject do
# ...
defp deps do
[
{:plug, "~> 1.0"}, # Or plug_cowboy ~> 2.0
{:appsignal_plug, "~> 2.0"}
# ...
]
end
end
Als u ons appsignal_phoenix-pakket al gebruikt, hoeft u het pakket appsignal_plug niet toe te voegen, aangezien dit al een afhankelijkheid is van het pakket appsignal_phoenix. Zie ook onze Phoenix-integratiehandleiding.
Inkomende HTTP-requests
We beginnen met een kleine Plug-app die GET-requests naar / accepteert en
een welkomstbericht retourneert. Om HTTP-requests in deze app te beginnen loggen, gebruiken we
de 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
Dit maakt een transactie aan voor elke HTTP-request die op het endpoint
wordt uitgevoerd.
Aangepaste instrumentatie
Hoewel Appsignal.Plug transacties voor u start, instrumenteert het voorlopig nog geen
events in uw app. Om dat te doen, moeten we wat aangepaste
instrumentatie toevoegen.
Deze voorbeeld-app lijkt op die we eerder hebben gebruikt, maar deze heeft een trage functie
(toepasselijk slow/0 genaamd) waarvoor we instrumentatie willen toevoegen. Om dat te doen, moeten we
de helper Appsignal.instrument/2-3 in onze aangeroepen functie gebruiken:
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
Dit voegt een event voor de slow/0-functie toe aan de huidige transactie,
telkens wanneer deze wordt aangeroepen. Lees voor meer informatie over aangepaste instrumentatie
de Elixir-instrumentatie-documentatie.
Instrumentatie voor opgenomen Plugs
Uitzonderingen in opgenomen Plugs worden automatisch opgevangen door AppSignal, maar
performance samples moeten handmatig worden opgezet met behulp van de aangepaste instrumentatie-
helpers of decorators.
Plug-instrumentatie met decorators
Om instrumentatie toe te voegen aan Plugs, gebruikt u de functie 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