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, "~> 1.0"}]
end-
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]-
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.
-
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- 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.