PryIn
PryIn is a performance metrics platform for your Phoenix application.
Installation
Sign up for a PryIn account and create a new project there.
Add
pryinto your dependencies and applications list inmix.exs:def applications do [..., :pryin] end ... def deps do [{:pryin, "~> 0.1.0"}] endAdd global configuration for the pryin app in
config/config.exs:config :pryin, otp_app: :my_app, api_key: "your_secret_api_key", enabled: false, env: "dev"Enable PryIn in the environments you want to collect metrics for. If you want to collect data for the production environment, for example, add the following to
config/prod.exs:config :pryin, enabled: true, env: "prod"Possible values for
envaredev,stagingorprod.Add the PryIn plug to your application’s endpoint (
lib/my_app/endpoint.ex) just before the router plug:... plug PryIn.Plug plug MyApp.RouterAdd the Ecto logger in
config/config.exs:... config :my_app, MyApp.Repo, loggers: [PryIn.EctoLogger, Ecto.LogEntry]Add the PryIn instrumenter in
config/config.exs:... config :my_app, MyApp.Endpoint, ..., instrumenters: [PryIn.Instrumenter]If you want to measure the runtime of custom code, wrap it in an instrumented function. To track how long calls to the Foobar Api take, for example, do the following:
defmodule MyApp.SomeController do require MyApp.Endpoint ... def my_action(conn, params) do ... api_call_result = MyApp.Endpoint.instrument(:pryin, %{key: "foobar_api_call"}, fn -> FoobarApi.call(some_arguments) end) ... end ... endAfter this, Foobar Api call will be tracked under the key
foobar_api_call. Note that you need torequireyour endpoint before invoking theinstrumentmacro.