Das AppSignal-für-Elixir-Paket instrumentiert HTTP-Anfragen, die von HTTPoison ausgeführt werden.
HTTPoison ist ein beliebter HTTP-Client für Elixir. Im Gegensatz zu Finch und Tesla sendet HTTPoison keine Telemetry-Events aus, sodass AppSignal ihn nicht automatisch instrumentieren kann. Stattdessen bietet AppSignal Wrapper-Module, für die Sie sich entscheiden: Appsignal.HTTPoison als Drop-in-Client und Appsignal.HTTPoison.Base für benutzerdefinierte Client-Module. Die Response- und Error-Structs (%HTTPoison.Response{}, %HTTPoison.Error{}, …) sind HTTPoisons eigene Typen und werden unverändert zurückgegeben.
AppSignal verpackt Anfragen, die über Appsignal.HTTPoison ausgeführt werden, als request.httpoison-Events in der Event-Timeline Ihrer Performance-Samples, sodass Sie sehen können, wie viel Zeit HTTPoison 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.
Konfiguration
Die HTTPoison-Instrumentierung ist Opt-in. Wählen Sie den Ansatz, der am besten zu Ihrer Anwendung passt.
Appsignal.HTTPoison direkt verwenden
Rufen Sie Appsignal.HTTPoison anstelle von HTTPoison auf, um instrumentierte Anfragen zu stellen. Verwenden Sie Pattern-Matching auf %HTTPoison.Response{...} und %HTTPoison.Error{...} wie gewohnt – dies sind HTTPoisons eigene Struct-Typen, die unverändert zurückgegeben werden:
Verwenden Sie nicht alias Appsignal.HTTPoison. Dies würde den Modulnamen
HTTPoison überdecken, wodurch Pattern-Matches auf %HTTPoison.Response{} und %HTTPoison.Error{}
fehlschlagen würden.
Benutzerdefinierte Client-Module
Wenn Sie ein benutzerdefiniertes HTTP-Client-Modul basierend auf HTTPoison.Base verwenden, ersetzen Sie use HTTPoison.Base durch use Appsignal.HTTPoison.Base. Weitere Änderungen sind nicht erforderlich – innerhalb des Moduls können Sie Methoden wie get/1 und post/3 aufrufen und wie gewohnt auf HTTPoisons Response- und Error-Structs matchen:
Alle Anfragen, die über Ihren benutzerdefinierten Client gestellt werden, werden dann automatisch instrumentiert. Wenn Ihr Modul request/5 überschreibt, stellen Sie sicher, dass Sie super aufrufen, um die Instrumentierung beizubehalten: