New Relic’s Open Source Elixir Agent

Hex.pm VersionBuild Status

The Open-Source Elixir Agent allows you to monitor your Elixir applications with New Relic. It helps you track transactions, distributed traces and other parts of your application’s behavior and provides an overview of underlying BEAM activity.

View the Documentation

Support Statement

New Relic has open-sourced this project to enable monitoring of Elixir applications. This project is provided AS-IS WITHOUT WARRANTY OR SUPPORT, although you can report issues and contribute to the project here on GitHub.

Contributing

We’d love to get your contributions to improve the elixir agent! Keep in mind when you submit your pull request, you’ll need to sign the CLA via the click-through using CLA-Assistant. If you’d like to execute our corporate CLA, or if you have any questions, please drop us an email at open-source@newrelic.com.

Installation

Install the Hex package

defp deps do
  [
    {:new_relic_agent, "~> 1.0"}
  ]
end

Configuration

You need to set a few required configuration keys so we can authenticate properly.

Via Application config

config :new_relic_agent,
  app_name: "My App",
  license_key: "license_key"

Via Environment variables

You can also configure these attributes via ENV vars, which helps keep secrets out of source code.

Instrumentation

Out of the box, we will report Error Traces & some general BEAM VM stats. For further visibility, you’ll need to add some basic instrumentation.

Adapters

There are a few adapters which leverage this agent to provide library / framework specific instrumentation:

Plug

Plug instrumentation is built into the agent.

defmodule MyPlug do
  use Plug.Router
  use NewRelic.Transaction
  # ...
end

Function Tracing

defmodule MyModule do
  use NewRelic.Tracer

  @trace :func
  def func do
    # Will report as `MyModule.func/0`
  end
end

Pre-Instrumented Modules

alias NewRelic.Instrumented.HTTPoison
HTTPoison.get("http://www.example.com")