Appsignal.instrument/2-3
De functie instrument/2 wordt gebruikt om instrumentatie toe te voegen door een stuk
code in een span te wikkelen. Een span wordt uiteindelijk een sample, of een event in een andere
span’s sample in AppSignal.
Spans toevoegen aan traces
In het volgende voorbeeld hebben we een Phoenix-controller met eenindex/2-
functie die een trage functie aanroept. De functie slow wordt geïnstrumenteerd met
de functie Appsignal.instrument/2 die deze als een afzonderlijk event in deze
Phoenix-request registreert. Het verschijnt op AppSignal.com in de event timeline van
deze sample om meer inzicht te geven in waar de meeste tijd aan is besteed tijdens de
request.
Appsignal.instrument3,
en we geven "slow" door als de naam voor het event.
Nieuwe traces starten
In het Phoenix-voorbeeld is er al een AppSignal-trace gestart, dankzij de first-party-ondersteuning voor Phoenix in het AppSignal-pakket. Niet alle frameworks en pakketten worden momenteel direct ondersteund en starten automatisch traces. Hetzelfde geldt voor uw eigen pure Elixir-applicaties. Net als bij het toevoegen van spans aan reeds geïnstrumenteerde traces, wordt er een nieuwe rootspan gemaakt met de functieAppsignal.instrument/2:
instrument/3 om een andere categorienaam te gebruiken:
instrument/2-3 deze aan met de geopende span om verdere aanpassingen mogelijk te maken. Zie de docs op hex.pm voor alle beschikbare Span-functies.
Exception handling
Om fouten te rapporteren met aangepaste instrumentatie, lees meer in onze exception handling-handleiding.Function decorators
Met behulp van de decoratormoduleAppsignal.Instrumentation.Decorators is het
mogelijk om aangepaste instrumentatie aan uw Elixir-applicaties toe te voegen zonder
de inhoud van de functies te wijzigen.
Transaction events
In het volgende voorbeeld hebben we een Phoenix-controller met eenindex/2-functie
die een trage functie aanroept. De functie slow wordt geïnstrumenteerd met de AppSignal-
transaction_event-decorator die deze als een afzonderlijk event in deze Phoenix-
request registreert. Het verschijnt op AppSignal.com in de event timeline van deze transactie-
sample om meer inzicht te geven in waar de meeste tijd aan is besteed tijdens de request.
phoenix_controller, phoenix_render, ecto, enz.), kunt u ook
een groepsnaam aan de transaction_event-decorator meegeven.
get_data_from_github.github_api aan in de event
timeline. Voor meer informatie over hoe eventnamen worden gebruikt, lees
onze richtlijnen voor eventnamen.
Transactions
In het Phoenix-voorbeeld is er al een AppSignal-transactie gestart, dankzij de first-party-ondersteuning voor Phoenix in het AppSignal-pakket. Niet alle frameworks en pakketten worden momenteel direct ondersteund en starten automatisch transacties. Hetzelfde geldt voor uw eigen pure Elixir-applicaties. Omtransaction_event-decorators te kunnen traceren, moeten we vooraf een
AppSignal-transactie starten. We kunnen een transactie starten met de
transaction-function decorator.
Namespaces
Om onderscheid te kunnen maken tussen HTTP-requests en background jobs, kunnen we een namespace doorgeven aan de transactie zodra we deze starten. De volgende twee namespaces zijn officiële door AppSignal ondersteunde namespaces.http_request- de standaard - wordt de “web”-namespace genoemdbackground_job- maakt de “background”-namespace
Aangepaste namespaces
U kunt ook uw eigen namespaces maken om transacties te traceren in een aparte sectie van uw applicatie, zoals een administratiepaneel. Dit groepeert alle transacties met deze namespace in een aparte sectie op AppSignal.com, zodat trage admin-controllers de gemiddelden van de snelheid van uw applicatie niet beïnvloeden.Phoenix-channels
Er is een aangepaste function decorator voor Phoenix-channels. Deze decorator is bedoeld om voor de functiehandle_in/3 van een Phoenix.Channel-module geplaatst te worden.