New Relic Elixir Agent v1.6.2 NewRelic View Source

New Relic Agent - Public API

Link to this section Summary

Functions

Report a custom attribute on the current transaction

You must manually instrument outgoing HTTP calls to connect them to a Distributed Trace

Will gracefully complete and shut down the agent harvest cycle

Report a Custom event to NRDB

To get detailed information about a particular process, you can install a Process sampler. You must tell the Agent about your process from within the process

Store information about the type of work the current span is doing

Set the name of the current transaction

Link to this section Functions

Link to this function add_attributes(custom_attributes) View Source

Report a custom attribute on the current transaction

NewRelic.add_attributes(foo: "bar")
Link to this function create_distributed_trace_payload(type) View Source

You must manually instrument outgoing HTTP calls to connect them to a Distributed Trace.

The agent will automatically read request headers and detect if the request is a part of a Distributed Trace, but outgoing requests need an extra header:

dt_header_payload = NewRelic.create_distributed_trace_payload(:http)
HTTPoison.get(url, ["x-api-key": "secret"] ++ dt_header_payload)

Notes:

  • Call NewRelic.create_distributed_trace_payload immediately before making the request since calling the function marks the “start” time of the request.

Will gracefully complete and shut down the agent harvest cycle.

To ensure a harvest at shutdown, you can add a hook to your application:

System.at_exit(fn(_) ->
  NewRelic.manual_shutdown()
end)
Link to this function report_custom_event(type, attributes) View Source

Report a Custom event to NRDB.

NewRelic.report_custom_event("EventType", %{"foo" => "bar"})

To get detailed information about a particular process, you can install a Process sampler. You must tell the Agent about your process from within the process.

For a GenServer, this function call should be made in the init function:

defmodule ImportantProcess do
  use GenServer
  def init(:ok) do
    NewRelic.sample_process
    {:ok, %{}}
  end
end

Once installed, the agent will report ElixirSample events with:

  • category = "Process"
  • message_queue_length
  • reductions
  • memory_kb
Link to this function set_span(type, attributes) View Source

Store information about the type of work the current span is doing.

Options:

  • :generic, custom: attributes
  • :http, url: url, method: method, component: component
  • :datastore, statement: statement, instance: instance, address: address, hostname: hostname, component: component
Link to this function set_transaction_name(name) View Source

Set the name of the current transaction.

The first segment will be treated as the Transaction namespace, and commonly contains the name of the framework.

In the following example, you will see /custom/transaction/name in the Transaction list.

NewRelic.set_transaction_name("Plug/custom/transaction/name")