This package adds Absinthe
specific instrumentation on top of the new_relic_agent
package. You may use all the built-in capabilities of the New Relic Agent!
Check out the agent for more:
Install the Hex package
defp deps do
[
{:new_relic_absinthe, "~> 0.1"},
{:absinthe, "~> 1.4"},
{:plug_cowboy, "~> 2.0"}
]
end
- You must configure
new_relic_agent
to authenticate to New Relic. Please see: https://github.com/newrelic/elixir_agent/#configuration
- Setup the agent's Plug instrumentation
- Add the Absinthe middleware
- Define a custom middleware stack to install the instrumentation
defmodule MyApp.Schema do
use Absinthe.Schema
def middleware(middleware, _field, _object) do
[NewRelic.Absinthe.Middleware | middleware]
end
# ...
end
- Use GraphQL's
OperationName
- Transaction grouping is difficult with GraphQL since all queries go to one endpoint. Setting an Operation Name in your query enables improved Transaction grouping
query MyOperationName {
user {
id
}
}
- Prefer named to anonymous resolvers for better span reporting:
- When you name your resolver, it makes your span names much more readable.
resolve {MyMod, :function}
resolve &MyMod.function/3
Instead of:
resolve fn args, res ->
MyMod.function(args, res)
end
Anonymous functions in Elixir do have a name, but they look like this: -__absinthe_type__/1-fun-1-