New Relic Absinthe
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:
Installation
Install the Hex package
defp deps do
[
{:new_relic_absinthe, "~> 0.1"},
{:absinthe, "~> 1.4"},
{:plug_cowboy, "~> 2.0"}
]
endConfiguration
-
You must configure
new_relic_agentto authenticate to New Relic. Please see: https://github.com/newrelic/elixir_agent/#configuration
Instrumentation
- 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
# ...
endTips
-
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/3Instead 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-