Skip to content

websummit/new_relic_absinthe

 
 

Repository files navigation

New Relic Absinthe

Hex.pm Version Build Status

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"}
  ]
end

Configuration

Instrumentation

  1. Setup the agent's Plug instrumentation
  1. 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

Tips

  • 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-

About

Absinthe Instrumentation for the New Relic Elixir Agent

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Elixir 100.0%