Automatische Instrumentierung
Die Ecto-Instrumentierung hakt sich automatisch in Ihre Ecto-Repos ein, wenn die Konfiguration:otp_app auf den OTP-App-Namen Ihrer App gesetzt ist. Der Installer konfiguriert dies automatisch für Sie.
config/config.exs haben wird:
Automatische Instrumentierung deaktivieren
Um die automatische Ecto-Instrumentierung zu deaktivieren, setzen Sie die Konfigurationsoptioninstrument_ecto auf false.
Ecto-Preloads instrumentieren
Da Ecto-Preload-Abfragen intern mehrere Elixir-Prozesse verwenden, um die verschiedenen beteiligten Datenbankabfragen durchzuführen, sind einige manuelle Änderungen an Ihrer Codebasis erforderlich, damit AppSignal sie korrekt instrumentieren kann. Ersetzen Sie am Anfang Ihres Ecto-Repo-Modulsuse Ecto.Repo durch use Appsignal.Ecto.Repo, wie im folgenden Beispiel:
default_options/1 hat, stellen Sie sicher, dass Sie super darin aufrufen, um ihre Standardoptionen mit denen der Ecto-Repo-Instrumentierung von AppSignal zu kombinieren:
Manuelles Anhängen des Handlers
Für Repos, die nicht in der Konfiguration:ecto_repos aufgeführt sind, können Sie einen Handler manuell anhängen, wenn Sie den Supervisor Ihrer App starten. In den meisten Anwendungen erfolgt dies in der start/2-Funktion Ihrer Anwendung.
Appsignal.Ecto.attach/2 aufgerufen haben. Das erste Argument ist der Name der OTP-App, zu der das Repo gehört, und das zweite Argument ist das Modul des Repos.
Metriken
Zusätzlich zur Instrumentierung Ihrer Ecto-Abfragen sammelt AppSignal für Elixir Metriken zur Performance Ihrer Ecto-Repos:-
ecto_query_time: Die Zeit, die die Datenbank für die Ausführung jeder Abfrage benötigt, getaggt nachrepoundhostname, und für jede Tabelle nachrepoundsource. -
ecto_queue_time: Die Zeit, die mit dem Warten auf eine Datenbankverbindung aus dem Pool verbracht wird, getaggt nachrepoundhostname. -
ecto_decode_time: Die Zeit, die mit dem Dekodieren von Abfrageergebnissen in Elixir-Terme verbracht wird, getaggt nachrepoundhostname, und für jede Tabelle nachrepoundsource. -
ecto_idle_time: Die Zeit, die die Verbindung im Pool im Leerlauf war, bevor sie ausgecheckt wurde, getaggt nachrepoundhostname. -
ecto_total_time: Die Summe aus Queue-, Query- und Decode-Zeit, getaggt nachrepoundhostname, und für jede Tabelle nachrepoundsource.
