PryIn

Build StatusHex pm

PryIn is a performance metrics platform for your Phoenix application.

Installation

  1. Sign up for a PryIn account and create a new project there.
  2. Add pryin to your dependencies and applications list in mix.exs:
def applications do
  [..., :pryin]
end
...
def deps do
  [{:pryin, "~> 1.0"}]
end
  1. Add general 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

config :my_app, MyApp.Repo,
  loggers: [PryIn.EctoLogger, Ecto.LogEntry]

config :my_app, MyApp.Endpoint,
  instrumenters: [PryIn.Instrumenter]
  1. 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 env are :dev, :staging or :prod.

  1. Add the PryIn plug to your application's endpoint (lib/my_app/endpoint.ex) just before the router plug:
...
plug PryIn.Plug
plug MyApp.Router
  1. 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.MyModule do
  require MyApp.Endpoint
  ...

  def my_function() do
    MyApp.Endpoint.instrument(:pryin, %{key: "foobar_api_call"}, fn ->
      FoobarApi.call(some_arguments)
    end)
  end

  ...
end

After this, Foobar Api call will be tracked under the key foobar_api_call. Note that you need to require your endpoint before invoking the instrument macro.