Skip to content

numerai/new_relic_absinthe

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Elixir 100.0%