Instrumentation automatique
L’instrumentation Ecto s’accroche automatiquement à vos repos Ecto si la configuration:otp_app est définie sur le nom de l’app OTP de votre application. L’installeur configure cela automatiquement pour vous.
config/config.exs :
Désactiver l’instrumentation automatique
Pour désactiver l’instrumentation Ecto automatique, définissez l’option de configurationinstrument_ecto sur false.
Instrumenter les preloads Ecto
Comme les requêtes de preload Ecto utilisent en interne plusieurs processus Elixir pour effectuer les différentes requêtes de base de données impliquées, certaines modifications manuelles de votre base de code sont nécessaires pour qu’AppSignal puisse les instrumenter correctement. En haut du module de votre repo Ecto, remplacezuse Ecto.Repo par use Appsignal.Ecto.Repo, comme dans l’exemple suivant :
default_options/1, veillez à appeler super à l’intérieur pour fusionner ses options par défaut avec celles de l’instrumentation du repo Ecto d’AppSignal :
Attachement manuel du handler
Pour les repos qui ne sont pas listés dans la configuration:ecto_repos, vous pouvez attacher un handler manuellement lors du démarrage du superviseur de votre application. Dans la plupart des applications, cela se fait dans la fonction start/2 de votre application.
Appsignal.Ecto.attach/2. Le premier argument est le nom de l’app OTP à laquelle appartient le repo, et le second argument est le module du repo.
Métriques
En plus d’instrumenter vos requêtes Ecto, AppSignal pour Elixir collecte des métriques sur les performances de vos repos Ecto :-
ecto_query_time: Le temps que la base de données passe à exécuter chaque requête, tagué parrepoethostname, et pour chaque table parrepoetsource. -
ecto_queue_time: Le temps passé à attendre une connexion à la base de données depuis le pool, tagué parrepoethostname. -
ecto_decode_time: Le temps passé à décoder les résultats des requêtes en termes Elixir, tagué parrepoethostname, et pour chaque table parrepoetsource. -
ecto_idle_time: Le temps pendant lequel la connexion est restée inactive dans le pool avant d’être utilisée, tagué parrepoethostname. -
ecto_total_time: La somme du temps de queue, de query et de decode, taguée parrepoethostname, et pour chaque table parrepoetsource.
